software.amazon.awssdk.services.kms.model.GrantConstraints Maven / Gradle / Ivy
/*
* Copyright 2015-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance with
* the License. A copy of the License is located at
*
* http://aws.amazon.com/apache2.0
*
* or in the "license" file accompanying this file. This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
* CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions
* and limitations under the License.
*/
package software.amazon.awssdk.services.kms.model;
import java.io.Serializable;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import java.util.function.BiConsumer;
import java.util.function.Function;
import software.amazon.awssdk.annotations.Generated;
import software.amazon.awssdk.core.SdkField;
import software.amazon.awssdk.core.SdkPojo;
import software.amazon.awssdk.core.protocol.MarshallLocation;
import software.amazon.awssdk.core.protocol.MarshallingType;
import software.amazon.awssdk.core.traits.LocationTrait;
import software.amazon.awssdk.core.traits.MapTrait;
import software.amazon.awssdk.core.util.DefaultSdkAutoConstructMap;
import software.amazon.awssdk.core.util.SdkAutoConstructMap;
import software.amazon.awssdk.utils.ToString;
import software.amazon.awssdk.utils.builder.CopyableBuilder;
import software.amazon.awssdk.utils.builder.ToCopyableBuilder;
/**
*
* Use this structure to allow cryptographic operations in the grant only when the operation request includes the
* specified encryption
* context.
*
*
* AWS KMS applies the grant constraints only when the grant allows a cryptographic operation that accepts an encryption
* context as input, such as the following.
*
*
* -
*
* Encrypt
*
*
* -
*
* Decrypt
*
*
* -
*
* GenerateDataKey
*
*
* -
*
*
* -
*
* ReEncrypt
*
*
*
*
* AWS KMS does not apply the grant constraints to other operations, such as DescribeKey or
* ScheduleKeyDeletion.
*
*
*
* In a cryptographic operation, the encryption context in the decryption operation must be an exact, case-sensitive
* match for the keys and values in the encryption context of the encryption operation. Only the order of the pairs can
* vary.
*
*
* However, in a grant constraint, the key in each key-value pair is not case sensitive, but the value is case
* sensitive.
*
*
* To avoid confusion, do not use multiple encryption context pairs that differ only by case. To require a fully
* case-sensitive encryption context, use the kms:EncryptionContext:
and
* kms:EncryptionContextKeys
conditions in an IAM or key policy. For details, see kms:EncryptionContext: in the AWS Key Management Service Developer Guide .
*
*
*/
@Generated("software.amazon.awssdk:codegen")
public final class GrantConstraints implements SdkPojo, Serializable,
ToCopyableBuilder {
private static final SdkField