기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
역할 기반 액세스 제어 사용
Amazon Cognito 자격 증명 풀은 인증된 사용자에게 AWS 리소스에 액세스할 수 있는 임시, 제한 권한 자격 증명 세트를 할당합니다. 각 사용자의 권한은 생성한 IAM 역할을 통해 제어됩니다. 사용자의 ID 토큰에 있는 클레임에 따라 각 사용자의 역할을 선택하는 규칙을 정의할 수 있습니다. 인증된 사용자의 기본 역할을 정의할 수 있습니다. 인증되지 않은 게스트 사용자에 대해 제한된 권한으로 별도의 IAM 역할을 정의할 수도 있습니다.
역할 매핑에 사용할 역할 생성
각 역할에 적합한 신뢰 정책을 추가하여 자격 증명 풀의 인증된 사용자에게만 Amazon Cognito에서 역할을 위임할 수 있게 해야 합니다. 다음은 신뢰 정책의 예제입니다.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Federated": "cognito-identity.amazonaws.com" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "cognito-identity.amazonaws.com:aud": "us-east-1:12345678-corner-cafe-123456790ab" }, "ForAnyValue:StringLike": { "cognito-identity.amazonaws.com:amr": "authenticated" } } } ] }
이 정책에 의해 cognito-identity.amazonaws.com
의 연동 사용자(OpenID Connect 토큰의 발급자)가 이 역할을 수임할 수 있습니다. 또한 이 정책은 토큰의 aud
(이 경우 자격 증명 풀 ID)가 자격 증명 풀과 일치하도록 제한합니다. 마지막으로 정책은 Amazon Cognito GetOpenIdToken
API 작업에서 발급한 토큰의 다중 값 amr
클레임의 배열 멤버 중 하나가 값을 갖도록 지정합니다authenticated
.
역할 전달 권한 부여
사용자가 자격 증명 풀에 대한 사용자의 기존 권한을 초과하는 권한을 가진 역할을 설정할 수 있도록 하려면 해당 역할을 set-identity-pool-roles
에 전달할 수 있는 iam:PassRole
권한을 부여합니다API. 예를 들어, 사용자가 Amazon S3에 쓸 수 없지만 사용자가 자격 증명 풀에 설정한 IAM 역할이 Amazon S3에 쓰기 권한을 부여하는 경우 사용자는 역할에 대한 iam:PassRole
권한이 부여된 경우에만 이 역할을 설정할 수 있습니다. 다음 예제 정책은 iam:PassRole
권한을 허용하는 방법을 보여줍니다.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1", "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": [ "arn:aws:iam::123456789012:role/myS3WriteAccessRole" ] } ] }
이 정책 예제에서는 iam:PassRole
역할에 대해 myS3WriteAccessRole
권한이 부여됩니다. 역할은 역할의 Amazon 리소스 이름()을 사용하여 지정됩니다ARN. 또한 사용자에게 이 정책을 연결해야 합니다. 자세한 내용은 관리형 정책 작업을 참조하세요.
참고
Lambda 함수는 리소스 기반 정책을 사용합니다. 이때 정책은 Lambda 함수 자체에 직접 연결됩니다. Lambda 함수를 호출하는 규칙을 생성하는 경우 역할은 전달하지 않습니다. 따라서 규칙을 생성하는 사용자에게 iam:PassRole
권한이 필요하지 않습니다. Lambda 함수 권한 부여에 대한 자세한 내용은 권한 관리: Lambda 함수 정책 사용을 참조하세요.
토큰을 사용하여 사용자에게 역할 할당
Amazon Cognito 사용자 풀을 통해 로그인하는 사용자의 경우 사용자 풀에서 할당한 ID 토큰에서 역할을 전달할 수 있습니다. ID 토큰의 다음 클레임에 역할이 표시됩니다.
-
cognito:preferred_role
클레임은 역할 입니다ARN. -
cognito:roles
클레임은 허용된 역할 세트가 포함된 쉼표로 구분된 문자열입니다ARNs.
클레임은 다음과 같이 설정됩니다.
-
cognito:preferred_role
클레임은 최상위(최저)Precedence
값을 가진 그룹의 역할로 설정됩니다. 허용된 역할이 하나뿐인 경우cognito:preferred_role
이 해당 역할로 설정됩니다. 여러 역할이 있고 우선 순위가 가장 높은 역할 하나가 없는 경우 이 클레임이 설정되지 않습니다. -
역할이 하나라도 있는 경우
cognito:roles
클레임이 설정됩니다.
토큰을 사용하여 역할을 할당할 때 사용자에게 할당할 수 있는 역할이 여러 개인 경우 Amazon Cognito 자격 증명 풀(페더레이션 자격 증명)은 다음과 같이 역할을 선택합니다.
-
GetCredentialsForIdentity
CustomRoleArn
파라미터가 설정되고cognito:roles
클레임의 역할과 일치하는 경우 파라미터를 사용합니다. 이 파라미터가cognito:roles
의 역할과 일치하지 않으면 액세스를 거부합니다. -
cognito:preferred_role
클레임이 설정된 경우 이 클레임을 사용합니다. -
cognito:preferred_role
클레임이 설정되지 않은 경우cognito:roles
클레임이 설정CustomRoleArn
되고 에 대한 호출에 지정되지 않으면 콘솔 또는AmbiguousRoleResolution
필드(의RoleMappings
파라미터SetIdentityPoolRolesAPI)의GetCredentialsForIdentity
역할 확인 설정이 할당될 역할을 결정하는 데 사용됩니다.
규칙 기반 매핑을 사용하여 사용자에게 역할 할당
규칙을 사용하면 자격 증명 공급자 토큰의 클레임을 IAM 역할에 매핑할 수 있습니다.
각 규칙은 토큰 클레임(예: Amazon Cognito 사용자 풀의 ID 토큰에 있는 사용자 속성), 일치 유형, 값 및 IAM 역할을 지정합니다. 이때 일치 유형은 Equals
, NotEqual
, StartsWith
또는 Contains
가 될 수 있습니다. 사용자가 클레임에 대해 일치하는 값을 가진 경우 자격 증명을 얻으면 해당 역할을 수임할 수 있습니다. 예를 들어 사용자 custom:dept
지정 속성 값이 인 사용자에게 특정 IAM 역할을 할당하는 규칙을 생성할 수 있습니다Sales
.
참고
규칙 설정에서 표준 속성을 구별하기 위해 사용자 지정 속성에 custom:
접두사가 필요합니다.
규칙은 순서대로 평가되며 CustomRoleArn
가 순서를 재정의하도록 지정하지 않는 한 첫 번째 일치 규칙의 IAM 역할이 사용됩니다. Amazon Cognito 사용자 풀의 사용자 속성에 대한 자세한 내용은 사용자 속성 작업 섹션을 참조하세요.
자격 증명 풀(연동 자격 증명) 콘솔에서 인증 공급자에 대한 여러 규칙을 설정할 수 있습니다. 규칙은 순서대로 적용됩니다. 규칙을 드래그하여 순서를 변경할 수 있습니다. 첫 번째 일치 규칙이 우선합니다. 일치 유형이 NotEqual
이고 클레임이 없으면 규칙이 평가되지 않습니다. 일치하는 규칙이 없으면 역할 해결 설정이 기본 인증된 역할 사용 또는 거부에 적용됩니다.
API 및 에서 CLI의 RoleMappings
파라미터에 지정된 RoleMapping 유형의 AmbiguousRoleResolution
필드에 규칙이 일치하지 않을 때 할당할 역할을 지정할 수 있습니다SetIdentityPoolRolesAPI.
Amazon Cognito 콘솔에서 자격 증명 공급자에 규칙 기반 매핑을 추가하려면 IdP를 추가하거나 업데이트하고 역할 선택에서 규칙으로 역할 선택을 선택합니다. 여기에서 공급자 클레임을 IAM 역할에 매핑하는 규칙을 추가할 수 있습니다.
AWS CLI 또는 RoleMapping 유형의 RulesConfiguration
필드를 API 사용하여 자격 증명 공급자에 대한 규칙 기반 매핑을 설정할 수 있습니다. 의 RoleMappings
파라미터에서 이 필드를 지정할 수 있습니다SetIdentityPoolRolesAPI.
예를 들어 다음 AWS CLI 명령은 OIDCIdP 에 의해 인증된 새크라멘토 위치의 arn:aws:iam::123456789012:role/Sacramento_team_S3_admin
사용자에게 역할을 할당하는 규칙을 추가합니다arn:aws:iam::123456789012:oidc-provider/myOIDCIdP
.
aws cognito-identity set-identity-pool-roles --region us-east-1 --cli-input-json file://role-mapping.json
role-mapping.json
의 콘텐츠:
{ "IdentityPoolId": "us-east-1:12345678-corner-cafe-123456790ab", "Roles": { "authenticated": "arn:aws:iam::123456789012:role/myS3WriteAccessRole", "unauthenticated": "arn:aws:iam::123456789012:role/myS3ReadAccessRole" }, "RoleMappings": { "arn:aws:iam::123456789012:oidc-provider/myOIDCIdP": { "Type": "Rules", "AmbiguousRoleResolution": "AuthenticatedRole", "RulesConfiguration": { "Rules": [ { "Claim": "locale", "MatchType": "Equals", "Value": "Sacramento", "RoleARN": "arn:aws:iam::123456789012:role/Sacramento_team_S3_admin" } ] } } } }
자격 증명 풀에 구성된 각 사용자 풀 또는 기타 인증 공급자에 대해 규칙을 25개까지 생성할 수 있습니다. 이 제한은 조정할 수 없습니다. 자세한 내용은 Amazon Cognito의 할당량을 참조하세요.
규칙 기반 매핑에 사용할 토큰 클레임
Amazon Cognito
Amazon Cognito ID 토큰은 JSON 웹 토큰()으로 표시됩니다JWT. name
, family_name
및 phone_number
와 같은 인증된 사용자의 자격 증명에 대한 클레임이 이 토큰에 포함됩니다. 표준 클레임에 대한 자세한 내용은 OpenID Connect 사양
-
cognito:groups
-
cognito:roles
-
cognito:preferred_role
Amazon
다음 클레임은 클레임의 가능한 값과 함께 Login with Amazon에서 사용할 수 있습니다.
-
iss
: www.amazon.com -
aud
: 앱 ID -
sub
:sub
Login with Amazon 토큰
다음 클레임은 클레임의 가능한 값과 함께 Facebook에서 사용할 수 있습니다.
-
iss
: graph.facebook.com -
aud
: 앱 ID -
sub
:sub
Facebook 토큰
Google 토큰에는 OpenID Connect 사양
Apple
Apple 토큰에는 OpenID Connect 사양email
이 포함되어 있지는 않습니다.
OpenID
Open ID 토큰의 모든 클레임은 규칙 기반 매핑에 사용할 수 있습니다. 표준 클레임에 대한 자세한 내용은 OpenID Connect 사양
SAML
클레임은 수신된 SAML어설션에서 구문 분석됩니다. SAML 어설션에서 사용할 수 있는 모든 클레임은 규칙 기반 매핑에 사용할 수 있습니다.
역할 기반 액세스 제어의 모범 사례
중요
역할에 매핑하는 클레임을 최종 사용자가 수정할 수 있는 경우 최종 사용자가 역할을 맡고 그에 따라 정책을 설정할 수 있습니다. 최종 사용자가 직접 설정할 수 없는 클레임은 승격된 권한을 가진 역할에만 매핑하세요. Amazon Cognito 사용자 풀에서 각 사용자 속성에 대해 앱당 읽기 및 쓰기 권한을 설정할 수 있습니다.
중요
Amazon Cognito 사용자 풀에서 그룹의 역할을 설정하면 이 역할이 사용자의 ID 토큰을 통해 전달됩니다. 이 역할을 사용하려면 자격 증명 풀의 인증된 역할 선택에 대해 토큰으로부터 역할 선택을 설정해야 합니다.
콘솔의 역할 확인 설정과 의 RoleMappings
파라미터를 사용하여 토큰에서 올바른 역할을 확인할 수 없는 경우의 기본 동작을 SetIdentityPoolRoles API 지정할 수 있습니다.