arrow-left

All pages
gitbookPowered by GitBook
1 of 1

Loading...

SSE-KMS Encryption

This section describes how to connect an AWS S3 Bucket with SSE-KMS Encryptionarrow-up-right enabled. General instructions for configuring your AWS account to allow ICA to connect to an S3 bucket are found on this pagearrow-up-right.

hashtag
Create an S3 bucket with SSE-KMS

Follow the AWS instructionsarrow-up-right for how to create S3 bucket with SSE-KMS key.

circle-exclamation

S3-SSE-KMS must be in the same region as your ICA v2.0 project. See the for more information.

In the "Default encryption" section, enable Server-side encryption and choose AWS Key Management Service key (SSE-KMS). Then select Choose your AWS KMS key.

circle-info

If you do not have an existing customer managed key, click Create a KMS key and follow from AWS.

circle-exclamation

Once the bucket is set, create a folder with encryption enabled in the bucket that will be linked in the ICA storage configuration. This folder will be connected to ICA as a . Although it is technically possible to use the root folder, this is not recommended as it will cause the S3 bucket to no longer be available for other projects.

hashtag
Connect the S3-SSE-KMS to ICA

Follow the for connecting an S3 bucket to ICA.

In the step :

  • Add permission to use KMS key by adding kms:Decrypt, kms:Encrypt, and kms:GenerateDataKey

  • Add the ARN KMS key arn:aws:kms:xxx on the first "Resource"

At the end of the policy setting, there should be 3 permissions listed in the "Summary".

hashtag
Create the S3-SSE-KMS configuration in ICA

Follow the for how to create a storage configuration in ICA.

On step 3 in process above, continue with the [Optional] Server Side Encryption to enter the algorithm and key name for server-side encryption processes.

  • On "Algorithm", input aws:kms

  • On "Key Name", input the ARN KMS key: arn:aws:kms:xxx

circle-exclamation

Although "Key prefix" is optional, it is highly recommended to use this and not use the root folder of your S3 bucket. "Key prefix" refers to the folder name in the bucket which you created.

hashtag
Cross-Account Copy Setup for S3 buckets with SSE-KMS encryption

hashtag
KMS Policy

In addition to following the instructions to , the KMS policy must include the following statement for AWS S3 Bucket with SSE-KMS Encryption (refer to the Role ARN table from the linked page for the ASSUME_ROLE_ARN value):

Depending on the bucket type (Unversioned, Versioned or Suspended) the permissions must match the following.
ICA S3 bucket documentationarrow-up-right
these stepsarrow-up-right
prefix
general instructions
Create AWS IAM policy
general instructions
Enable Cross Account Copy
sse-kms-0
sse-kms-1
sse-kms-2
sse-kms-3
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "kms:Decrypt",
                "kms:Encrypt",
                "kms:GenerateDataKey",
                "s3:PutBucketNotification",
                "s3:ListBucket",
                "s3:GetBucketNotification",
                "s3:GetBucketLocation"
            ],
            "Resource": [
                "arn:aws:kms:xxx",
                "arn:aws:s3:::BUCKET_NAME"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:GetObject",
                "s3:RestoreObject",
                "s3:DeleteObject"
            ],
            "Resource": "arn:aws:s3:::BUCKET_NAME/YOUR_FOLDER_NAME/*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "sts:GetFederationToken"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "kms:Decrypt",
                "kms:Encrypt",
                "kms:GenerateDataKey",
                "s3:PutBucketNotification",
                "s3:ListBucket",
                "s3:GetBucketNotification",
                "s3:GetBucketLocation",
                "s3:ListBucketVersions",
                "s3:GetBucketVersioning"
            ],
            "Resource": [
                "arn:aws:kms:xxx",
                "arn:aws:s3:::BUCKET_NAME"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:GetObject",
                "s3:RestoreObject",
                "s3:DeleteObject",
                "s3:DeleteObjectVersion",
                "s3:GetObjectVersion"
            ],
            "Resource": "arn:aws:s3:::BUCKET_NAME/YOUR_FOLDER_NAME/*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "sts:GetFederationToken"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}
    {
        "Sid": "AllowCrossAccountAccess",
        "Effect": "Allow",
        "Principal": {
            "AWS": "ASSUME_ROLE_ARN"
        },
        "Action": [
            "kms:Encrypt",
            "kms:Decrypt",
            "kms:ReEncrypt*",
            "kms:GenerateDataKey*",
            "kms:DescribeKey"
        ],
        "Resource": "*"
    }
Connect an AWS S3 Bucket with SSE-KMS Encryption Enabled