AWS announces preview of AWS Interconnect - multicloud
AWS announces AWS Interconnect – multicloud (preview), providing simple, resilient, high-speed private connections to other cloud service providers. AWS Interconnect - multicloud is easy to configure and provides high-speed, resilient connectivity with dedicated bandwidth, enabling customers to interconnect AWS networking services such as AWS Transit Gateway, AWS Cloud WAN, and Amazon VPC to other cloud service providers with ease.
사용자에게 Amazon S3 버킷의 특정 폴더에 대한 액세스 권한을 부여하려면 어떻게 해야 하나요?
AWS Identity and Access Management(IAM) 사용자가 Amazon Simple Storage Service(S3)의 특정 폴더에만 제한적으로 액세스할 수 있도록 하려고 합니다.
해결 방법
IAM 사용자와 버킷이 동일한 AWS 계정에 속하는 경우 IAM 정책을 사용하여 사용자에게 버킷 폴더에 대한 액세스 권한을 부여하십시오. IAM 정책에서 액세스 권한을 부여할 때 버킷 정책을 업데이트할 필요가 없습니다. 하지만 버킷 정책에서 폴더에 대한 IAM 사용자 액세스를 명시적으로 거부하는 경우 버킷 정책을 업데이트해야 합니다.
IAM 사용자와 S3 버킷이 서로 다른 계정에 속하는 경우 IAM 정책과 버킷 정책 모두에 액세스 권한을 부여하십시오. 자세한 내용은 다른 AWS 계정의 사용자에게 Amazon S3 버킷에 개체를 업로드할 수 있는 액세스 권한을 부여하려면 어떻게 해야 합니까?를 참조하십시오.
IAM 정책에서 단일 또는 여러 사용자에게 액세스 권한을 부여할 수 있습니다. 여러 사용자에게 부여하는 경우 정책에 그룹 또는 AWS IAM Identity Center ID가 포함될 수 있습니다.
단일 사용자에게 액세스 권한 부여
단일 사용자에게 폴더에 대한 액세스 권한만 부여하려면 IAM 정책을 생성하십시오.
정책 예시:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowStatement1", "Action": [ "s3:ListAllMyBuckets", "s3:GetBucketLocation" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::*" ] }, { "Sid": "AllowStatement2A", "Action": [ "s3:ListBucket" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET" ], "Condition": { "StringEquals": { "s3:prefix": [ "", "home/", "home/David" ], "s3:delimiter": [ "/" ] } } }, { "Sid": "AllowStatement3", "Action": [ "s3:ListBucket" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET" ], "Condition": { "StringLike": { "s3:prefix": [ "home/David/*" ] } } }, { "Sid": "AllowStatement4A", "Effect": "Allow", "Action": [ "s3:*" ], "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET/home/David/*" ] } ] }
정책에 다음과 같은 명령문을 포함할 수 있습니다.
- AllowStatement1을 사용하여 사용자가 자신의 계정에 속한 버킷을 나열하고 콘솔에서 해당 버킷으로 이동하는 것을 허용합니다.
- AllowStatement2A를 사용하여 사용자가 DOC-EXAMPLE-BUCKET에 폴더를 나열하고 콘솔에서 해당 폴더로 이동하는 것을 허용합니다.
- AllowStatement3을 사용하여 사용자가 DOC-EXAMPLE-BUCKET/home/Username 폴더에 콘텐츠를 나열하는 것을 허용합니다.
- AllowStatement4A를 사용하여 DOC-EXAMPLE-BUCKET/home/Username 폴더에서 읽기, 쓰기 및 삭제 권한과 같은 모든 작업을 허용합니다.
그룹 정책을 사용하여 여러 사용자에게 액세스 권한 부여
정책 변수를 사용하여 여러 사용자에 대한 그룹 정책을 생성합니다.
${aws:username} 정책 변수를 사용하는 버킷 정책 예시:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowGroupToSeeBucketListInTheConsole", "Action": [ "s3:ListAllMyBuckets", "s3:GetBucketLocation" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::*" ] }, { "Sid": "AllowRootAndHomeListingOfCompanyBucket", "Action": [ "s3:ListBucket" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET" ], "Condition": { "StringEquals": { "s3:prefix": [ "", "home/" ], "s3:delimiter": [ "/" ] } } }, { "Sid": "AllowListingOfUserFolder", "Action": [ "s3:ListBucket" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET" ], "Condition": { "StringLike": { "s3:prefix": [ "home/${aws:username}/*", "home/${aws:username}" ] } } }, { "Sid": "AllowAllS3ActionsInUserFolder", "Action": [ "s3:*" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET/home/${aws:username}/*" ] } ] }
위의 정책에서는 aws:username 키를 사용하고 사용자의 친숙한 이름(예: "Adele" 또는 "David")을 반환합니다. aws:username 값이 특정 IAM 역할에 유효하지 않을 수 있는 경우에도 고유 ID를 사용할 수 있습니다. 자세한 내용은 위탁자 키 값을 참조하십시오.
IAM 사용자는 **DOC-EXAMPLE-BUCKET/**과 같이 상위 수준에서 모든 접두사를 나열할 수 있습니다. 사용자는 모든 GUI(그래픽 사용자 인터페이스) 클라이언트에서 홈 디렉터리로 이동할 수도 있습니다. 상위 수준에서 목록 작업을 제공하지 않으면 명령줄 인터페이스를 사용하여 특정 폴더에 액세스해야 합니다.
AWS IAM Identity Center를 사용하여 여러 사용자에게 액세스 권한 부여
AWS IAM Identity Center 위탁자를 기반으로 S3 버킷 폴더에 대한 액세스를 제어할 수 있습니다. IAM Identity Center 디렉터리의 각 사용자에게는 고유한 사용자 ID가 있습니다. 폴더 액세스를 제한하려는 각 사용자에 대해 ${identitystore:UserId} 정책 변수를 사용하십시오.
S3 폴더를 생성할 때 IAM Identity Center 디렉터리에 있는 사용자의 ID와 일치하는지 폴더 이름을 사용합니다. 예를 들어, 사용자 John은 1111111111-2a2aaa222-bb33-4444-5555-5cc5555c555c라는 고유한 사용자 ID를 가지고 있습니다. John을 관리하기 위해 S3 버킷에 /home/1111111111-2a2aaa222-bb33-4444-5555-5cc5555c555c라는 이름의 John의 폴더를 생성합니다. 사용자의 사용자 ID를 찾으려면 IAM Identity Center 콘솔에서 각 사용자로 이동하거나 DescribeUser API를 사용합니다.
다음 IAM 정책 예시에서는 ${identitystore:UserId} 변수를 사용합니다.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowGroupToSeeBucketListInTheConsole", "Action": [ "s3:ListAllMyBuckets", "s3:GetBucketLocation" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::*" ] }, { "Sid": "AllowRootAndHomeListingOfCompanyBucket", "Action": [ "s3:ListBucket" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET" ], "Condition": { "StringEquals": { "s3:prefix": [ "", "home/" ], "s3:delimiter": [ "/" ] } } }, { "Sid": "AllowListingOfUserFolder", "Action": [ "s3:ListBucket" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET" ], "Condition": { "StringLike": { "s3:prefix": [ "home/${identitystore:UserId}/*", "home/${identitystore:UserId}" ] } } }, { "Sid": "AllowAllS3ActionsInUserFolder", "Effect": "Allow", "Action": [ "s3:*" ], "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET/home/${identitystore:UserId}/*" ] } ] }

