객체 잠금을 사용하여 내 Amazon S3 버킷에서 크로스 계정 복제를 설정하려면 어떻게 해야 하나요?

4분 분량
0

객체 잠금 설정이 켜진 Amazon Simple Storage Service(Amazon S3) 버킷에 크로스 계정 복제를 설정하려고 합니다.

해결 방법

객체 잠금을 사용하여 Amazon S3 버킷에서 크로스 계정 복제를 설정하려면 다음 사전 조건을 완료하세요.

  • 대상 버킷에 객체 잠금 설정이 켜져 있는지 확인합니다. 대상 버킷에 객체 잠금 설정이 켜져 있지 않은 경우 요청과 함께 AWS Support에 문의하세요.
  • AWS Command Line Interface(AWS CLI) 또는 AWS CloudShell에 액세스할 수 있는지 확인하세요.
  • 복제를 시작하기 전에 객체 잠금 토큰이 있어야 합니다.

1단계: 필요한 권한이 있는 복제용 IAM 역할 생성

1.    Amazon S3에 대한 신뢰 관계가 있는 소스 계정에 대해 AWS Identity and Access Management(IAM) 콘솔에서 복제 역할을 생성합니다.

신뢰 관계는 다음과 같습니다.

{
  "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:GetObjectRetention",
        "s3:GetObjectVersionTagging",
        "s3:GetObjectVersionAcl",
        "s3:ListBucket",
        "s3:GetObjectVersionForReplication",
        "s3:GetObjectLegalHold",
        "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:::DestBucketName/*"
      ]
    }
  ]
}

3.    AWS Key Management Service(AWS KMS) 키를 사용하는 경우에는 다음 권한도 연결해야 합니다.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "SourceBucketPermissions",
      "Effect": "Allow",
      "Action": [
        "s3:GetObjectRetention",
        "s3:GetObjectVersionTagging",
        "s3:GetObjectVersionAcl",
        "s3:ListBucket",
        "s3:GetObjectVersionForReplication",
        "s3:GetObjectLegalHold",
        "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:::DestBucketName/*"
      ]
    },
    {
      "Sid": "SourceBucketKMSKey",
      "Action": [
        "kms:Decrypt",
        "kms:GenerateDataKey"
      ],
      "Effect": "Allow",
      "Resource": "SourceBucketKMSKeyARN"
    },
    {
      "Sid": "DestinationBucketKMSKey",
      "Action": [
        "kms:Encrypt",
        "kms:GenerateDataKey"
      ],
      "Effect": "Allow",
      "Resource": "DestinationBucketKMSKeyARN"
    }
  ]
}

2단계: AWS KMS 키 권한 업데이트

대상 계정의 AWS KMS 키가 소스 계정의 복제 IAM 역할에 대한 액세스를 허용하는지 확인합니다.

예시:

{
  "Sid": "AllowS3ReplicationSourceRoleToUseTheKey",
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::123456789101:role/s3-replication-role"
  },
  "Action": [
    "kms:GenerateDataKey",
    "kms:Encrypt"
  ],
  "Resource": "*"
}

참고: 관리형 AWS KMS 키 aws/S3은 크로스 계정 복제에 사용할 수 없습니다. 하지만 SSE-S3 암호화를 사용할 수 있습니다.

참고: 키 정책에서 리소스에 별표(*)를 사용하는 경우 정책은 복제 역할에만 키에 대한 권한을 부여합니다. 정책에 따라 복제 역할은 권한을 높일 수 없습니다.

3단계: 대상 계정에 다음 버킷 정책을 추가합니다.

주요 섹션에서는 1단계에서 생성한 복제 IAM 역할의 ARN을 추가해야 합니다.

{
  "Version": "2012-10-17",
  "Id": "PolicyForDestinationBucket",
  "Statement": [
    {
      "Sid": "ReplicationPermissions",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::SourceBucket-account-ID:role/service-role/source-account-IAM-role"
      },
      "Action": [
        "s3:ReplicateDelete",
        "s3:ReplicateObject",
        "s3:ObjectOwnerOverrideToBucketOwner",
        "s3:GetBucketVersioning",
        "s3:PutBucketVersioning"
      ],
      "Resource": [
        "arn:aws:s3:::DestBucketName/*",
        "arn:aws:s3:::DestBucketName"
      ]
    }
  ]
}

4단계: 복제 .json 파일 생성

소스 계정에서 다음과 비슷한 replication.json이라는 파일을 생성합니다.

{
  "Role": "arn:aws:iam::123456789012:role/s3-replication-role",
  "Rules": [
    {
      "Status": "Enabled",
      "Priority": 10,
      "DeleteMarkerReplication": {
        "Status": "Disabled"
      },
      "Filter": {
        "Prefix": ""
      },
      "Destination": {
        "Bucket": "arn:aws:s3:::destination_bucket"
      }
    }
  ]
}

이 파일에는 복제를 설정하는 JSON 구성의 파라미터가 포함되어 있습니다. 이 파라미터는 Amazon S3 콘솔을 사용하여 복제를 설정할 때 사용할 수 있는 것과 동일한 것입니다. 아직 Amazon S3 콘솔을 사용하여 복제를 설정할 수 없기 때문에 AWS CLI를 사용하여 복제를 설정해야 합니다.

s3-replication-role1단계의 IAM 역할로 교체해야 합니다. 또한 필요에 따라 대상 버킷, 접두사 사양 및 삭제 마커 기본 설정에 대한 ARN을 포함합니다.

5단계: 복제 설정

위 구성을 저장한 후 다음과 같은 AWS CLI 명령을 사용하여 파일을 전달합니다.

aws s3api put-bucket-replication --bucket <SOURCE BUCKET> --replication-configuration file://Replication.json --token <TOKEN>

이 명령에 사용할 객체 잠금 토큰 값을 가져오려면 AWS Support에 문의하세요. <TOKEN> 값은 소스 버킷의 객체 잠금 토큰입니다.

6단계: 확인

위 명령을 실행하면 소스 버킷에 복제 규칙이 추가됩니다. 이 규칙을 사용하면 새로 추가된 객체를 대상 버킷에 복제할 수 있습니다. 소스에 새 객체를 추가하고 대상을 확인하여 규칙을 테스트할 수 있습니다.

참고: 복제를 설정한 후 Amazon S3 콘솔을 사용하여 복제 구성을 업데이트할 수 있습니다. AWS KMS로 암호화된 객체를 복제하려면 암호화에서 AWS KMS로 암호화된 객체 복제를 선택하여 복제 구성을 수정합니다.

관련 정보

콘솔을 사용하여 S3 객체 잠금 구성

S3 객체 잠금 설정 켜기

서버 측 암호화(SSE-C, SSE-S3, SSE-KMS)로 생성된 객체 복제

AWS 공식
AWS 공식업데이트됨 일 년 전
댓글 없음