Amazon S3 버킷에 사용자 지정 AWS KMS 키를 사용하는 기본 암호화가 설정되어 있습니다. 사용자가 버킷에서 다운로드 및 업로드를 수행할 수 있도록 하려면 어떻게 해야 하나요?
Amazon Simple Storage Service(S3) 버킷에서 사용자 지정 AWS Key Management Service(AWS KMS) 키를 통한 기본 암호화를 사용하도록 설정했습니다. AWS Identity and Access Management(IAM) 사용자가 이 버킷에 다운로드 및 업로드를 수행할 수 있게 하려고 합니다. 어떻게 해야 합니까?
해결 방법
IAM 사용자와 AWS KMS 키가 동일한 AWS 계정에 속하는 경우
1. AWS KMS 콘솔을 열고 정책 보기를 사용하여 키의 정책 문서를 봅니다. kms:GenerateDataKey 및 kms:Decrypt 작업에 대한 최소한의 권한을 IAM 사용자에게 부여하도록 키의 정책을 수정합니다. 다음과 같은 명령문을 추가할 수 있습니다.
{
"Sid": "ExampleStmt",
"Action": [
"kms:Decrypt",
"kms:GenerateDataKey"
],
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::111122223333:user/Jane"
},
"Resource": "*"
}
참고: 이 정책 예에는 개별 IAM 사용자가 암호화된 S3 버킷에 다운로드 및 업로드하는 데 필요한 최소한의 권한만 포함됩니다. 사용 사례에 따라 권한을 수정하거나 확장할 수 있습니다.
2. IAM 콘솔을 엽니다. 버킷에서 업로드 및 다운로드할 수 있는 권한을 부여하는 정책을 IAM 사용자에게 추가합니다. 다음과 유사한 정책을 사용할 수 있습니다.
참고: Resource 값에는 버킷의 객체를 나타내는 와일드카드 문자와 함께 버킷의 Amazon 리소스 이름(ARN)을 입력합니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "ExampleStmt",
"Action": [
"s3:GetObject",
"s3:PutObject"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
}
]
}
중요: IAM 사용자 정책에서 부여한 S3 권한은 버킷 정책의 명시적 거부 문에 의해 차단될 수 있습니다. 버킷 정책을 검토하여 IAM 사용자 정책과 충돌하는 명시적 거부 문이 없는지 확인하세요.
IAM 사용자가 AWS KMS 키 및 S3 버킷과 다른 계정에 있는 경우
중요: 고객 관리형 AWS KMS 키에 대해 교차 계정 액세스 권한을 부여할 수 있지만 AWS 관리형 AWS KMS 키에 대해서는 부여할 수 없습니다. AWS 관리형 AWS KMS 키의 키 정책은 수정할 수 없습니다.
1. AWS KMS 콘솔을 열고 정책 보기를 사용하여 키의 정책 문서를 봅니다. 최소한 kms:GenerateDataKey 및 kms:Decrypt 작업에 대한 권한을 IAM 사용자에게 부여하도록 키의 정책을 수정합니다. 다음과 유사한 문을 추가할 수 있습니다.
{
"Sid": "ExampleStmt",
"Action": [
"kms:Decrypt",
"kms:GenerateDataKey"
],
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::111122223333:user/Jane"
},
"Resource": "*"
}
참고: 이 정책 예에는 개별 IAM 사용자가 암호화된 S3 버킷에 다운로드 및 업로드하는 데 필요한 최소한의 권한만 포함됩니다. 사용 사례에 따라 권한을 수정하거나 확장할 수 있습니다.
2. IAM 사용자가 속한 계정에서 IAM 콘솔을 엽니다. 버킷에서 업로드 및 다운로드할 수 있는 권한을 부여하는 정책을 IAM 사용자에게 추가합니다. 정책은 버킷과 연결된 AWS KMS 키에서도 작동해야 합니다.
교차 계정 시나리오의 경우 IAM 사용자가 객체를 업로드할 수 있도록 s3:PutObjectAcl 권한을 부여하는 것이 좋습니다. 그런 다음 버킷의 계정에 객체에 대한 전체 제어 권한(bucket-owner-full-control)을 부여합니다. 또한 동기화 작업 또는 재귀 복사 작업을 실행하는 데 필요한 s3:ListBucket 권한을 부여하는 것도 고려합니다. 다음과 유사한 정책을 사용할 수 있습니다.
참고: 첫 번째 Resource 값에는 버킷의 객체를 나타내는 와일드카드 문자와 함께 버킷의 ARN을 입력합니다. 두 번째 [리소스(Resource)] 값에는 버킷의 ARN을 입력합니다. 세 번째 [리소스(Resource)] 값에는 AWS KMS 키의 ARN을 입력합니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "DownloadandUpload",
"Action": [
"s3:GetObject",
"s3:GetObjectVersion",
"s3:PutObject",
"s3:PutObjectAcl"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
},
{
"Sid": "ListBucket",
"Action": [
"s3:ListBucket"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET"
},
{
"Sid": "KMSAccess",
"Action": [
"kms:Decrypt",
"kms:GenerateDataKey"
],
"Effect": "Allow",
"Resource": "arn:aws:kms:example-region-1:123456789098:key/111aa2bb-333c-4d44-5555-a111bb2c33dd"
}
]
}
3. S3 버킷을 소유한 계정에서 Amazon S3 콘솔을 엽니다. IAM 사용자에게 버킷에 대한 액세스 권한을 부여하도록 버킷 정책을 업데이트합니다. 다음과 같은 정책을 사용할 수 있습니다.
참고: Principal 값에는 IAM 사용자의 ARN을 입력합니다. 첫 번째 Resource 값에는 버킷의 객체를 나타내는 와일드카드 문자와 함께 버킷의 ARN을 입력합니다. 두 번째 [리소스(Resource)] 값에는 버킷의 ARN을 입력합니다.
{
"Id": "Policy1584399307003",
"Version": "2012-10-17",
"Statement": [
{
"Sid": "DownloadandUpload",
"Action": [
"s3:GetObject",
"s3:GetObjectVersion",
"s3:PutObject",
"s3:PutObjectAcl"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*",
"Principal": {
"AWS": [
"arn:aws:iam::111122223333:user/Jane"
]
}
},
{
"Sid": "ListBucket",
"Action": [
"s3:ListBucket"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET",
"Principal": {
"AWS": [
"arn:aws:iam::111122223333:user/Jane"
]
}
}
]
}
관련 정보
관련 콘텐츠
- 질문됨 8달 전lg...
- 질문됨 10달 전lg...
- 질문됨 4년 전lg...
- 질문됨 7달 전lg...
- 질문됨 2년 전lg...
- AWS 공식업데이트됨 5달 전
- AWS 공식업데이트됨 2년 전
- AWS 공식업데이트됨 일 년 전