기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
동적 권한 관리 접근 방식
Transfer Family 권한 아키텍처 이해
AWS Transfer Family 는 런타임 시 IAM 역할의 유효 권한을 제한할 수 있는 세션 정책을 통해 동적 권한 관리를 지원합니다. 이 접근 방식은 서비스 관리 사용자와 사용자 지정 자격 증명 공급자 사용자 모두에서 작동하지만 Amazon S3(Amazon EFS 아님)와 파일을 주고받을 때만 지원됩니다.
모든 AWS Transfer Family 사용자는 다음으로 구성된 권한 모델을 사용합니다.
-
기본 IAM 역할 - 사용자의 기본 권한을 정의합니다.
-
선택적 세션 정책 - 런타임 시 기본 권한을 제한(범위 축소)합니다.
유효 권한은 기본 역할 권한과 세션 정책 권한의 교집합입니다. 세션 정책은 권한을 제한할 수만 있으며 기본 역할이 허용하는 것 이상의 추가 권한을 부여할 수는 없습니다.
이 아키텍처는 두 사용자 유형에 모두 적용됩니다.
-
서비스 관리형 사용자 - 세션 정책은 사용자 설정에서 직접 구성할 수 있습니다.
-
사용자 지정 자격 증명 공급자 사용자 - 세션 정책을 인증 응답의 일부로 반환하거나에 저장할 수 있습니다. AWS Secrets Manager
권한 관리에 대한 두 가지 접근 방식
고유한 액세스 패턴이 필요한 Transfer Family 사용자를 위한 권한을 설계할 때 두 가지 주요 접근 방식 중에서 선택할 수 있습니다.
- 사용자당 역할 1개
-
각 Transfer Family 사용자에 대해 해당 사용자의 필요에 맞는 특정 권한을 가진 별도의 IAM 역할을 생성합니다. 다음과 같은 경우이 접근 방식을 사용합니다.
-
각 사용자에게는 매우 다른 권한이 필요합니다.
-
권한 관리는 조직의 다양한 사용자가 처리합니다.
-
개별 사용자 액세스를 세밀하게 제어해야 합니다.
-
- 세션 정책과 역할 공유
-
광범위한 권한(예: 여러 사용자 홈 디렉터리가 포함된 전체 Amazon S3 버킷에 대한 액세스)이 있는 단일 IAM 역할을 사용하고 세션 정책을 적용하여 각 사용자를 특정 영역으로 제한합니다. 이 접근 방식은 각 사용자에 대해 별도의 역할을 관리하는 것에 비해 관리 오버헤드를 크게 줄입니다. 다음과 같은 경우이 접근 방식을 사용합니다.
-
사용자에게는 비슷한 유형의 액세스가 필요하지만 다른 리소스에 대한 액세스가 필요합니다(예: 모든 사용자에게 읽기/쓰기 액세스가 필요하지만 각각 자신의 폴더에만 액세스).
-
역할 관리를 간소화하고 수십 또는 수백 개의 개별 역할을 생성하지 않으려는 경우
-
사용자는 공유 버킷 내의 지정된 홈 디렉터리에만 액세스해야 합니다.
-
권한 관리는 조직 내에서 중앙 집중화됩니다.
예를 들어 사용자 "alice", "bob" 및 "charlie"에 대해 별도의 역할을 생성하는 대신 전체
s3://company-transfers/
버킷에 액세스할 수 있는 하나의 역할을 생성한 다음 세션 정책을 사용하여 alice를s3://company-transfers/alice/
로, bob을s3://company-transfers/bob/
로 제한할 수 있습니다. -
세션 정책 구현
세션 정책은 사용자에게 할당된 기본 IAM 역할의 유효 권한을 제한하여 작동합니다. 최종 권한은 역할 권한과 세션 정책의 권한의 교집합입니다.
다음 두 가지 방법으로 동적 세션 정책을 구현할 수 있습니다.
- 변수 대체
-
세션 정책
${transfer:HomeBucket}
에서${transfer:Username}
,${transfer:HomeDirectory}
및와 같은 Transfer Family 정책 변수를 사용합니다. 이러한 변수는 런타임 시 실제 값으로 자동 대체됩니다. 이러한 변수에 대한 자세한 내용은 섹션을 참조하세요Amazon S3 버킷을 위한 세션 정책 생성. - 동적 생성
-
사용자 지정 자격 증명 공급자의 경우 Lambda 함수 또는 API Gateway 메on-the-fly 일부로 세션 정책을 즉시 생성합니다. 이 접근 방식을 사용하면 인증 시 사용자 속성, 그룹 멤버십 또는 외부 데이터 소스를 기반으로 고도로 사용자 지정된 정책을 생성할 수 있습니다.
세션 정책 JSON과
Policy
함께 라는 키를 값으로 AWS Secrets Manager 포함하여에 사전 생성된 세션 정책을 저장할 수도 있습니다. 이를 통해 사용자별 액세스 제어를 유지하면서 여러 사용자에 대해 동일한 광범위한 IAM 역할을 사용할 수 있습니다.
참고
세션 정책은 Amazon S3와의 파일 전송에만 지원됩니다. Amazon EFS 파일 시스템에는 적용되지 않습니다. Amazon EFS의 경우 권한은 UID/GID 및 파일 시스템 자체 내에 적용된 권한 비트에 의해 관리됩니다.
사용자 유형별 구현
- 서비스 관리형 사용자
-
서비스 관리형 사용자의 경우 AWS Transfer Family 콘솔, API 또는 CLI를 통해 사용자 구성에서 직접 세션 정책을 지정할 수 있습니다. 자세한 내용은 서비스 관리형과 작업 단원을 참조하십시오.
- 사용자 지정 자격 증명 공급자 사용자
-
사용자 지정 자격 증명 공급자 사용자의 경우 다음 두 가지 방법으로 세션 정책을 제공할 수 있습니다.
-
세션 정책과
Policy
함께 라는 키를 값으로 포함 AWS Secrets Manager 시켜를 통해 -
인증 결과의 일부로 Lambda 함수 응답 또는 API Gateway 응답에서 직접
자세한 내용은 사용자 지정 ID 제공업체 솔루션 단원을 참조하십시오.
-
예: 세션 정책을 사용하여 역할 관리 간소화
이 예제는 동적 권한 관리가 보안을 유지하면서 관리 오버헤드를 크게 줄이는 방법을 보여줍니다.
시나리오
조직에 파일을 전송하기 위해 SFTP 액세스 권한이 필요한 사용자가 50명 있습니다. 각 사용자는 라는 공유 Amazon S3 버킷 내의 자체 폴더에만 액세스해야 합니다company-transfers
. 세션 정책이 없으면 50개의 개별 IAM 역할을 생성해야 합니다.
- 기존 접근 방식(세션 정책 없음)
-
-
50개의 IAM 역할 생성:
TransferRole-Alice
,TransferRole-Bob
TransferRole-Charlie
, 등 -
각 역할에는 해당 사용자의 폴더에 대한 특정 권한만 있습니다.
-
권한을 관리하려면 개별 역할을 업데이트해야 합니다.
-
새 사용자를 추가하려면 새 역할을 생성해야 합니다.
-
- 동적 접근 방식(세션 정책 사용)
-
-
IAM 역할 1개 생성: 전체 버킷에 대한 광범위한 권한
TransferRole-Shared
있음 -
세션 정책을 사용하여 런타임 시 각 사용자를 특정 폴더로 제한
-
권한을 관리하려면 하나의 역할 또는 세션 정책 템플릿을 업데이트해야 합니다.
-
새 사용자를 추가하면 새 역할이 필요하지 않고 사용자 구성만 필요합니다.
-
구현
동적 접근 방식을 구현하는 방법은 다음과 같습니다( company-transfers
버킷을 실제 Amazon S3 버킷으로 대체하는 예제로 사용).
동적 권한 관리를 구현하려면
-
광범위한 Amazon S3 권한을 사용하여 공유 IAM 역할 하나를 생성합니다.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:DeleteObject" ], "Resource": "arn:aws:s3:::company-transfers/*" }, { "Effect": "Allow", "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::company-transfers" } ] }
-
사용자의 폴더에 대한 액세스를 제한하는 세션 정책 템플릿을 생성합니다.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:DeleteObject" ], "Resource": "arn:aws:s3:::company-transfers/${transfer:Username}/*" }, { "Effect": "Allow", "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::company-transfers", "Condition": { "StringLike": { "s3:prefix": "${transfer:Username}*" } } } ] }
-
다음을 사용하여 각 사용자를 구성합니다.
-
공유 IAM 역할
-
세션 정책은 다음과 같이 적용됩니다.
-
서비스 관리형 사용자: 사용자를 생성하거나 수정할 때 API 또는 CLI를 사용하여 정책 파라미터를 통해 JSON을 적용합니다(콘솔은 사전 정의된 정책 옵션만 제공).
-
사용자 지정 자격 증명 공급자 사용자: 인증 중에 Lambda 함수 응답의 일부로 반환하거나 사용자의 자격 증명과 함께 "정책"이라는 키 AWS Secrets Manager 로에 저장합니다.
-
-
홈 디렉터리:
/company-transfers/${transfer:Username}/
-