Amazon S3 버킷을 위한 세션 정책 생성 - AWS Transfer Family

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Amazon S3 버킷을 위한 세션 정책 생성

세션 정책은 사용자를 Amazon S3 버킷의 특정 부분으로 제한하는 AWS Identity and Access Management (IAM) 정책입니다. 이 정책은 액세스를 실시간으로 평가해 이를 수행합니다.

참고

세션 정책은 Amazon S3에서만 사용됩니다. Amazon EFS의 경우 POSIX 파일 권한을 사용하여 액세스를 제한합니다.

세션 정책은 사용자 그룹 전원이 Amazon S3 버킷의 특정 부분에만 액세스하도록 제한해야 할 때 사용합니다. 예를 들어 사용자 그룹이 home 디렉터리에만 액세스해야 할 수도 있습니다. 해당 사용자 그룹은 같은 IAM 역할을 공유합니다.

참고

세션 정책의 최대 길이는 2,048자입니다. 자세한 내용은 API 참조CreateUser 작업에 대한 정책 요청 파라미터를 참조하세요.

세션 정책을 생성하려면, IAM 정책에서 다음 정책 변수를 사용하세요.

  • ${transfer:HomeBucket}

  • ${transfer:HomeDirectory}

  • ${transfer:HomeFolder}

  • ${transfer:UserName}

중요

관리형 정책에서는 위의 변수를 사용할 수 없습니다. 또한 위의 변수를 IAM 역할 정의에서 정책 변수로 사용할 수도 없습니다. IAM 정책에 있는 이러한 변수는 사용자를 설정할 때 생성하고 바로 공급합니다. 그리고 이 세션 정책에서는 ${aws:Username} 변수는 사용할 수 없습니다. 이 변수는 AWS Transfer Family이(가) 요구하는 사용자 이름이 아닌 IAM 사용자 이름을 의미합니다.

세션 정책 예제

다음 코드는 예 세션 정책을 보여줍니다.

JSON
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowListingOfUserFolder", "Action": [ "s3:ListBucket" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::${transfer:HomeBucket}" ], "Condition": { "StringLike": { "s3:prefix": [ "${transfer:HomeFolder}/*", "${transfer:HomeFolder}" ] } } }, { "Sid": "HomeDirObjectAccess", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:DeleteObjectVersion", "s3:DeleteObject", "s3:GetObjectVersion", "s3:GetObjectACL", "s3:PutObjectACL" ], "Resource": "arn:aws:s3:::${transfer:HomeDirectory}/*" } ] }
참고

위의 정책 예에서는 사용자의 홈 디렉터리가 디렉터리임을 나타내기 위해 후행 슬래시를 포함하도록 설정된 것으로 가정합니다. 그 반면에 후행 슬래시가 없이 사용자의 HomeDirectory를 설정하는 경우에는 이를 정책의 일부로 포함해야 합니다.

이전 예 정책에서, transfer:HomeFolder, transfer:HomeBucket, transfer:HomeDirectory 정책 파라미터의 사용을 기억해 두세요. 이러한 파라미터는 HomeDirectoryAPI Gateway 메서드 구현에 설명된 대로 사용자에 맞게 구성된 HomeDirectory을 위해 설정됩니다 이러한 파라미터의 정의는 다음과 같습니다.

  • transfer:HomeBucket 파라미터는 HomeDirectory의 첫 번째 구성 요소로 대체됩니다.

  • transfer:HomeFolder 파라미터가 HomeDirectory 파라미터의 나머지 부분으로 대체됩니다.

  • transfer:HomeDirectory 파라미터는 Resource 명령문에서 S3 Amazon 리소스 이름 (ARN)의 일부로 사용할 수 있도록 선행 슬래시(/)가 제거되었습니다.

참고

귀하가 논리적 디렉터리를 사용하는 경우—즉 사용자의 homeDirectoryTypeLOGICAL인 경우—이러한 정책 파라미터(HomeBucket, HomeDirectory, 및 HomeFolder)는 지원되지 않습니다.

예를 들어, Transfer Family 사용자에 대해 구성된 HomeDirectory 파라미터가 /home/bob/amazon/stuff/(이)라고 가정해 보겠습니다.

  • transfer:HomeBucket/home(으)로 설정합니다.

  • transfer:HomeFolder/bob/amazon/stuff/(으)로 설정합니다.

  • transfer:HomeDirectoryhome/bob/amazon/stuff/가 됩니다.

첫 번째 "Sid"은(는) 사용자가 /home/bob/amazon/stuff/부터 시작하여 모든 디렉터리를 나열할 수 있게 해 줍니다.

두 번째 "Sid"은(는) 동일한 경로인 /home/bob/amazon/stuff/에 대한 사용자 putget 액세스를 제한합니다.

앞의 정책을 활성화하면, 로그인 시 사용자는 자신의 홈 디렉터리에 있는 객체만 액세스할 수 있습니다. 연결 시는 이러한 변수를 사용자에게 적합한 값으로 바 AWS Transfer Family 꿉니다. 이렇게 하면 같은 정책 설명서를 다수의 사용자에게 쉽게 적용할 수 있습니다. 이 방법은 Amazon S3 버킷에 대한 사용자의 액세스 관리에 필요한 IAM 역할과 정책 관리 오버헤드를 줄입니다.

세션 정책을 사용하면 업무 요건에 따라 각 사용자의 액세스를 조절할 수도 있습니다. 자세한 내용은 IAM 사용자 가이드Permissions for AssumeRole, AssumeRoleWithSAML 및 AssumeRoleWithWebIdentity를 참조하세요.

참고

AWS Transfer Family 는 정책의 Amazon 리소스 이름(ARN) 대신 정책 JSON을 저장합니다. 따라서 IAM 콘솔에서 정책을 변경할 때 AWS Transfer Family 콘솔로 돌아가서 사용자를 최신 정책 내용으로 업데이트해야 합니다. 사용자 구성 섹션의 정책 정보 탭에서 사용자를 업데이트할 수 있습니다.

를 사용하는 경우 다음 명령을 사용하여 정책을 업데이트할 AWS CLI수 있습니다.

aws transfer update-user --server-id server --user-name user --policy \ "$(aws iam get-policy-version --policy-arn policy --version-id version --output json)"

세션 정책에 대한 중첩 대체

중첩 대체는 Transfer Family 세션 정책에서 수행되지 않습니다. 세션 정책은와 같은 중첩 변수를 사용할 수 있습니다${transfer:HomeDirectory}. 정책이 처리되면 외부 변수(예: ${transfer:HomeDirectory})가 다른 변수(예: {amzn-s3-demo-bucket:/$(transfer:UserName})가 포함된 값으로 대체될 수 있습니다. 그러나 중첩 변수는 실제 사용자 이름(예: johndoe)으로 더 이상 대체되지 않습니다.

즉, Transfer Family에 대한 세션 정책을 생성할 때이 동작을 고려하고 정책 구조와 변수 사용량이 그에 따라 설계되도록 해야 합니다. 중첩된 변수는 예상대로 확인되지 않을 수 있으며, 정책은 의도한 권한을 부여하지 않을 수 있습니다. 세션 정책이 예상대로 작동하는지 철저히 테스트하고 검증하는 것이 중요합니다. 이 동작은 Transfer Family 환경에 대한 액세스 제어 및 권한을 구현할 때 주요 고려 사항입니다.

이 문제의 한 가지 해결 방법은 세션 정책에서 실제 Amazon S3 버킷 이름을 사용하는 것입니다. 따라서 예를 들어 세션 정책${transfer:HomeDirectory}에서를 지정하는 대신 amzn-s3-demo-bucket이 실제 버킷인를 사용합니다${amzn-s3-demo-bucket/transfer:UserName}.