Amazon Cognito 자격 증명 소스 작업 - Amazon Verified Permissions

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

Amazon Cognito 자격 증명 소스 작업

Verified Permissions는 Amazon Cognito 사용자 풀과 밀접하게 작동합니다. Amazon Cognito JWTs 가지고 있습니다. Verified Permissions는이 구조를 인식하고 포함된 정보를 최대한 활용합니다. 예를 들어 ID 토큰 또는 액세스 토큰을 사용하여 역할 기반 액세스 제어(RBAC) 권한 부여 모델을 구현할 수 있습니다.

새 Amazon Cognito 사용자 풀 자격 증명 소스에는 다음 정보가 필요합니다.

  • AWS 리전.

  • 사용자 풀 ID입니다.

  • 자격 증명 소스와 연결할 보안 주체 엔터티 유형입니다. 예: MyCorp::User.

  • 와 같이 자격 증명 소스와 연결할 보안 주체 그룹 엔터티 유형입니다MyCorp::UserGroup.

  • 가 정책 스토어에 요청할 수 있도록 승인하려는 사용자 풀의 클라이언트 IDs입니다.

Verified Permissions는 동일한의 Amazon Cognito 사용자 풀에서만 작동하므로 다른 계정에서 자격 증명 소스를 지정할 AWS 계정수 없습니다. Verified Permissions는 사용자 풀 보안 주체를 기반으로 하는 정책에서 참조해야 하는 자격 증명 소스 식별자인 엔터티 접두사를와 같은 사용자 풀의 ID로 설정합니다us-west-2_EXAMPLE. 이 경우 ID가 인 해당 사용자 풀의 사용자를 참조a1b2c3d4-5678-90ab-cdef-EXAMPLE22222합니다. us-west-2_EXAMPLE|a1b2c3d4-5678-90ab-cdef-EXAMPLE22222

사용자 풀 토큰 클레임에는 속성, 범위, 그룹, 클라이언트 IDs 및 사용자 지정 데이터가 포함될 수 있습니다. Amazon Cognito JWTs Verified Permissions에서 권한 부여 결정에 기여할 수 있는 다양한 정보를 포함할 수 있습니다. 다음이 포함됩니다.

  1. cognito: 접두사가 있는 사용자 이름 및 그룹 클레임

  2. 를 사용한 사용자 지정 사용자 속성 custom: prefix

  3. 런타임에 추가된 사용자 지정 클레임

  4. sub 및와 같은 OIDC 표준 클레임 email

이러한 클레임과 이를 관리하는 방법은의 Verified Permissions 정책에서 자세히 다룹니다Amazon Cognito 토큰 스키마 매핑.

중요

만료되기 전에 Amazon Cognito 토큰을 취소할 수 있지만, JWT는 서명과 유효성을 갖춘 독립형 상태 비저장 리소스로 간주됩니다. JSON 웹 토큰 RFC 7519를 준수하는 서비스는 원격으로 토큰을 검증할 것으로 예상되며 발행자를 통해 토큰을 검증할 필요는 없습니다. 즉, Verified Permissions가 나중에 삭제된 사용자에 대해 취소되거나 발급된 토큰을 기반으로 액세스 권한을 부여할 수 있습니다. 이러한 위험을 줄이려면 유효 기간이 가장 짧은 토큰을 생성하고 사용자 세션을 계속할 수 있는 권한을 제거하려는 경우 새로 고침 토큰을 취소하는 것이 좋습니다. 자세한 내용은 토큰 해지로 사용자 세션 종료를 참조하세요.

다음 예제에서는 보안 주체와 연결된 일부 Amazon Cognito 사용자 풀 클레임을 참조하는 정책을 생성하는 방법을 보여줍니다.

permit( principal, action, resource == ExampleCo::Photo::"VacationPhoto94.jpg" ) when { principal["cognito:username"]) == "alice" && principal["custom:department"]) == "Finance" };

다음 예제에서는 Cognito 사용자 풀의 사용자인 보안 주체를 참조하는 정책을 생성하는 방법을 보여줍니다. 보안 주체 ID는 형식을 취합니다"<userpool-id>|<sub>".

permit( principal == ExampleCo::User::"us-east-1_example|a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", action, resource == ExampleCo::Photo::"VacationPhoto94.jpg" );

Verified Permissions의 사용자 풀 자격 증명 소스에 대한 Cedar 정책은 영숫자 및 밑줄() 이외의 문자가 포함된 클레임 이름에 특수 구문을 사용합니다_. 여기에는 cognito:username 및와 같은 : 문자가 포함된 사용자 풀 접두사 클레임이 포함됩니다custom:department. cognito:username 또는 custom:department 클레임을 참조하는 정책 조건을 작성하려면 principal["custom:department"]각각 principal["cognito:username"] 및 로 작성합니다.

참고

토큰에 custom: 접두사가 cognito: 또는 이고 클레임 이름이 리터럴 값 cognito 또는 인 클레임이 포함된 경우 IsAuthorizedWithToken을 사용한 custom권한 부여 요청은와 함께 실패합니다ValidationException.

클레임 매핑에 대한 자세한 내용은 섹션을 참조하세요Amazon Cognito 토큰 스키마 매핑. Amazon Cognito 사용자의 권한 부여에 대한 자세한 내용은 Amazon Amazon Cognito 개발자 안내서의 Amazon Verified Permissions 권한 부여를 참조하세요.