내용으로 건너뛰기

AWS KMS로 암호화된 Amazon S3 버킷에 대한 교차 계정, 교차 리전 복제를 설정하려면 어떻게 해야 합니까?

4분 분량
0

AWS Key Management Service(AWS KMS) 암호화가 적용된 Amazon Simple Storage Service(Amazon S3) 버킷이 있습니다. 버킷의 객체에 대해 여러 AWS 리전 및 AWS 계정에 복제를 설정하려고 합니다.

간략한 설명


AWS KMS로 암호화된 소스 버킷에서 객체를 복제하려면 대상 버킷에서 AWS KMS 암호화를 사용해야 합니다. 또한 대상 버킷의 AWS KMS 키는 대상 버킷과 동일한 리전에 있어야 합니다.

참고: 소스 버킷과 대상 버킷이 다른 리전에 있는 경우, 서로 다른 AWS KMS 키가 있어야 합니다.

대상에 대한 S3 버킷 생성

AWS KMS 키와 동일한 리전에 새 대상 S3 버킷을 생성합니다.

버킷을 생성할 때 Amazon S3 복제를 사용하려면 버전 관리를 활성화해야 합니다.

참고: 버킷이 AWS KMS 키를 하나만 사용하도록 새 AWS KMS 키를 기본 암호화로 사용하는 것이 가장 좋습니다..

암호화 비용을 줄이려면 버킷에서 S3 버킷 키를 활성화합니다.

(선택 사항) 복제 IAM 역할의 권한 편집

복제 규칙을 생성할 때 AWS Identity and Access Management(IAM) 역할도 생성할 수 있습니다. IAM 역할은 Amazon S3가 객체를 가져오고, 복제하고, 암호화하고, 암호를 해독할 수 있도록 허용해야 합니다. 객체를 다른 리전으로 이동하기 전에 객체를 해독할 수 있는 권한을 포함해야 합니다. 그런 다음, 대상의 객체를 암호화합니다.

기존 복제 규칙이 있는 버킷에 대한 권한을 구성하려면 다음 단계를 완료합니다.

  1. IAM 역할이 Amazon S3와 다음과 같은 신뢰 관계를 맺고 있는지 확인합니다.

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "Service": "s3.amazonaws.com"
          },
          "Action": "sts:AssumeRole"
        }
      ]
    }
  2. IAM 역할에 다음 권한이 있는지 확인합니다.

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Sid": "SourceBucketPermissions",
          "Effect": "Allow",
          "Action": [
            "s3:GetObjectVersionTagging",
            "s3:GetObjectVersionAcl",
            "s3:ListBucket",
            "s3:GetObjectVersionForReplication",
            "s3:GetReplicationConfiguration"
          ],
          "Resource": [
            "arn:aws:s3:::SourceBucketName/*",
            "arn:aws:s3:::SourceBucketName"
          ]
        },
        {
          "Sid": "DestinationBucketPermissions",
          "Effect": "Allow",
          "Action": [
            "s3:ReplicateObject",
            "s3:ObjectOwnerOverrideToBucketOwner",
            "s3:GetObjectVersionTagging",
            "s3:ReplicateTags",
            "s3:ReplicateDelete"
          ],
          "Resource": [
            "arn:aws:s3:::DestinationBucketName/*"
          ]
        },
        {
          "Sid": "SourceBucketKMSKey",
          "Action": [
            "kms:Decrypt",
            "kms:GenerateDataKey"
          ],
          "Effect": "Allow",
          "Resource": "SourceBucketKMSKeyARN"
        },
        {
          "Sid": "DestinationBucketKMSKey",
          "Action": [
            "kms:Encrypt",
            "kms:GenerateDataKey"
          ],
          "Effect": "Allow",
          "Resource": "DestinationBucketKMSKeyARN"
        }
      ]
    }

참고: SourceBucketName을 소스 버킷의 이름으로 바꾸고 DestinationBucketName을 대상 버킷의 이름으로 바꾸십시오. 또한 SourceBucketKMSKeyARN을 소스 버킷의 AWS KMS 키의 Amazon 리소스 이름(ARN)으로 바꾸고 DestinationBucketKMSKeyARN을 대상 버킷의 AWS KMS 키의 ARN으로 바꾸십시오. 위의 권한을 사용하면 역할이 소스 버킷의 객체에 액세스하고 대상 버킷에 객체를 복제할 수 있습니다. 또한 역할이 AWS KMS 키를 사용하여 객체를 암호화하고 해독할 수 있습니다.

IAM 역할이 소스 버킷과 대상 버킷의 키를 모두 사용할 수 있도록 키 정책 업데이트

AWS KMS 키 정책을 변경하여 IAM 역할이 소스 버킷과 대상 버킷의 AWS KMS 키를 모두 사용할 수 있도록 허용합니다.

대상 버킷의 정책을 변경하여 버킷에 대한 복제 허용

대상 버킷의 정책을 다음 정책으로 변경합니다.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "DestinationBucketPermissions",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::ACCOUNTNUMBER:role/IAMROLE"
      },
      "Action": [
        "s3:ReplicateObject",
        "s3:ObjectOwnerOverrideToBucketOwner",
        "s3:GetObjectVersionTagging",
        "s3:ReplicateTags",
        "s3:ReplicateDelete",
        "s3:GetBucketVersioning",  
        "s3:PutBucketVersioning"
      ],
      "Resource": [
        "arn:aws:s3:::DestinationBucketName/*",  
        "arn:aws:s3:::DestinationBucketName"
      ]
    }]
}

참고: AccountNumber를 소스 버킷 계정 번호로 바꾸고, IAMRole을 IAM 역할로 바꾸고, DestinationBucketName을 대상 버킷 이름으로 바꾸십시오.

복제 규칙 설정

다음 단계를 완료하십시오.

  1. Amazon S3 콘솔을 엽니다.
  2. Buckets(버킷)을 선택한 다음 사용자의 소스 버킷을 선택합니다.
  3. Management(관리) 탭을 선택합니다. Replication rules(복제 규칙)에서 Create replication rule(복제 규칙 생성)을 선택합니다.
  4. 규칙 이름을 입력합니다. Source bucket(소스 버킷)에서 복제가 특정 객체 접두사에 적용되는지 또는 버킷의 전체 내용에 적용되는지 여부를 결정하기 위한 규칙 범위를 선택합니다.
  5. Destination(대상)에서 Specify a bucket in another account(다른 계정의 버킷 지정)를 선택한 다음, 대상 버킷의 이름과 계정 ID를 입력합니다.
  6. IAM role(IAM 역할)에서 Choose from existing IAM roles(기존 IAM 역할에서 선택)를 선택합니다.
  7. 필요한 권한을 가진 기존 IAM 역할이 있는 경우 IAM role(IAM 역할)에서 Choose from existing IAM roles(기존 IAM 역할에서 선택) 또는 Enter IAM role ARN(IAM 역할 ARN 입력)을 선택합니다.
    - 또는 -
    Create new role(새 역할 생성)을 선택하여 필요한 권한으로 새 역할을 생성합니다.
  8. Encryption(암호화)에서 Replicate objects encrypted with AWS Key Management Service (AWS KMS)(AWS Key Management Service(AWS KMS)로 암호화된 객체 복제)를 선택합니다. 그런 다음 AWS KMS 키의 ARN을 입력합니다.
  9. (선택 사항) 대상 스토리지 클래스 및 추가 복제 옵션을 구성합니다.
  10. 구성을 검토한 다음 Save(저장)를 선택합니다.
  11. (선택 사항) 일회성 S3 Batch Operations 작업으로 기존 객체를 복제합니다.

복제 확인

복제 규칙을 생성하면 소스에서 대상 버킷으로 새로 추가된 객체를 원활하게 복제할 수 있습니다. 복제를 테스트하려면 다음 단계를 완료하십시오.

  1. 소스 버킷에 새 객체를 업로드합니다.
  2. 객체 개요를 확인한 다음 객체의 복제 상태를 검사합니다.
  3. 복제가 성공하면 COMPLETED 상태가 표시됩니다.

관련 정보

암호화된 객체 복제(SSE-S3, SSE-KMS, DSSE-KMS, SSE-C)

다른 계정의 버킷에 대한 복제 구성

AWS 공식업데이트됨 일 년 전