API-연결된 정책 저장소 - Amazon Verified Permissions

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

API-연결된 정책 저장소

Amazon Verified Permissions 콘솔에서 새 정책 스토어를 생성할 때 API게이트웨이 및 ID 소스로 설정 옵션을 선택할 수 있습니다. 이 옵션을 사용하면 Amazon Cognito 사용자 풀 또는 ID 공급자 (IdP) 로 인증하고 Amazon Gateway에서 데이터를 가져오는 애플리케이션을 위한 권한 부여 OIDC 모델인 API-linked 정책 스토어를 구축할 수 있습니다. API APIs 시작하려면 ID 공급자와 함께 API Gateway를 사용하기 위한 정책 저장소 생성 섹션을 참조하십시오.

중요

검증된 권한 콘솔의 API게이트웨이 설정 및 자격 증명 소스 옵션을 사용하여 생성한 정책 스토어는 프로덕션에 즉시 배포하기 위한 것이 아닙니다. 초기 정책 저장소를 사용하여 권한 부여 모델을 마무리하고 정책 저장소 리소스를 로 CloudFormation 내보냅니다. AWSCloud Development Kit (CDK) 를 사용하여 프로그래밍 방식으로 검증된 권한을 프로덕션에 배포할 수 있습니다. 자세한 내용은 를 통해 프로덕션으로 이동 AWS CloudFormation 단원을 참조하십시오.

ID 소스에 연결된 정책 저장소에서 애플리케이션은 요청 시 권한 부여 헤더에 사용자 풀 토큰을 제공합니다. API API 정책 저장소의 ID 소스는 검증된 권한에 대한 토큰 검증을 제공합니다. 토큰은 와 함께 principal IN 권한 부여 요청을 구성합니다 IsAuthorizedWithTokenAPI. 검증된 권한은 ID (ID) 및 액세스 토큰에 대한 그룹 클레임 (예: 사용자 풀) 에 명시된 바와 같이 사용자의 그룹 멤버십에 cognito:groups 대한 정책을 구축합니다. Lambda 권한 부여자에서 애플리케이션의 토큰을 API 처리하고 인증 결정을 위해 검증된 권한에 제출합니다. Lambda 권한 부여자로부터 승인 결정을 API 받으면 해당 요청을 데이터 소스로 전달하거나 요청을 거부합니다.

검증 권한이 있는 ID 소스 및 API 게이트웨이 권한 부여의 구성 요소
  • 사용자를 인증하고 그룹화하는 Amazon Cognito 사용자 풀 또는 OIDC IdP. 사용자 토큰은 그룹 멤버십과 검증 권한이 정책 저장소에서 평가하는 보안 주체 또는 컨텍스트를 채웁니다.

  • 게이트웨이. API REST API 검증된 권한은 예를 들어 API 경로와 API 메서드의 작업을 정의합니다MyAPI::Action::get /photo.

  • 사용자를 위한 Lambda 함수 및 Lambda 권한 부여자 API Lambda 함수는 사용자 풀에서 베어러 토큰을 가져와 검증된 권한으로부터 승인을 요청하고 Gateway에 결정을 반환합니다. API Cognito 및 API Gateway로 설정 워크플로우는 이 Lambda 권한 부여자를 자동으로 생성합니다.

  • 검증된 권한 정책 스토어. 정책 저장소 ID 소스는 사용자 풀입니다. 정책 저장소 스키마는 사용자 구성을 API 반영하며 정책은 사용자 그룹을 허용된 API 작업에 연결합니다.

  • IdP로 사용자를 인증하고 요청에 토큰을 추가하는 애플리케이션입니다. API

검증된 권한이 요청을 승인하는 방법 API

새 정책 저장소를 생성하고 Cognito 및 API Gateway로 설정 옵션을 선택하면 검증된 권한이 정책 저장소 스키마와 정책을 생성합니다. 스키마와 정책은 API 작업을 수행할 수 있도록 권한을 부여하려는 작업과 사용자 풀 그룹을 반영합니다. 또한 검증된 권한은 Lambda 함수 및 권한 부여자를 생성합니다. 의 메서드에 새 권한 부여자를 구성해야 합니다. API

Amazon API Gateway, Amazon Cognito 및 Amazon 검증 권한을 사용한 권한 부여 요청의 흐름을 보여주는 다이어그램입니다.
  1. 사용자는 Amazon Cognito 또는 다른 OIDC IdP를 통해 애플리케이션에 로그인합니다. IdP는 사용자 정보와 함께 ID 및 액세스 토큰을 발급합니다.

  2. 애플리케이션은 를 저장합니다. JWTs 자세한 내용은 Amazon Cognito 개발자 안내서의 사용자 풀과 함께 토큰 사용을 참조하십시오.

  3. 사용자는 애플리케이션이 외부에서 API 검색해야 하는 데이터를 요청합니다.

  4. 애플리케이션은 핀 REST API API 게이트웨이에서 데이터를 요청합니다. ID 또는 액세스 토큰을 요청 헤더로 추가합니다.

  5. 승인 결정을 위한 API 캐시가 있는 경우 이전 응답을 반환합니다. 캐싱이 비활성화되거나 에 현재 캐시가 없는 경우 API API Gateway는 요청 파라미터를 토큰 기반 Lambda 권한 부여자에게 전달합니다.

  6. Lambda 함수는 와 함께 검증된 권한 정책 스토어에 권한 부여 요청을 보냅니다. IsAuthorizedWithTokenAPI Lambda 함수는 권한 부여 결정의 요소를 전달합니다.

    1. 사용자 토큰이 보안 주체입니다.

    2. API경로와 결합된 API 메서드 (GetPhoto예: 액션)

    3. Application리소스로서의 용어.

  7. 검증된 권한은 토큰을 검증합니다. Amazon Cognito 토큰을 검증하는 방법에 대한 자세한 내용은 Amazon Cognito 개발자 안내서의 Amazon 검증 권한을 통한 권한 부여를 참조하십시오.

  8. 검증된 권한은 정책 스토어의 정책을 기준으로 권한 부여 요청을 평가하여 승인 결정을 반환합니다.

  9. Lambda 권한 부여자는 또는 응답을 게이트웨이에 Allow 반환합니다Deny. API

  10. 는 API 애플리케이션에 대한 데이터 또는 ACCESS_DENIED 응답을 반환합니다. 애플리케이션은 API 요청을 처리하고 결과를 표시합니다.

API-연결된 정책 저장소에 대한 고려 사항

Verified Permissions 콘솔에서 API 연결된 정책 저장소를 구축하면 최종 프로덕션 배포를 위한 테스트가 생성됩니다. 프로덕션으로 전환하기 전에 사용자 API 풀과 사용자 풀에 대한 고정 구성을 설정하세요. 다음 요소를 고려하십시오.

API게이트웨이는 응답을 캐시합니다.

API연결된 정책 저장소에서 검증된 권한은 120초의 권한 부여 캐시를 사용하여 Lambda 권한 부여자를 생성합니다. TTL 권한 부여자에서 이 값을 조정하거나 캐싱을 해제할 수 있습니다. 캐싱이 활성화된 권한 부여자의 경우 승인자는 만료될 때까지 매번 동일한 응답을 반환합니다. TTL 이렇게 하면 요청된 단계의 TTL 캐싱과 동일한 기간만큼 사용자 풀 토큰의 유효 수명을 연장할 수 있습니다.

Amazon Cognito 그룹은 재사용할 수 있습니다.

Amazon Verified Permissions는 사용자 ID 또는 액세스 토큰에 대한 cognito:groups 클레임을 기반으로 사용자 풀 사용자의 그룹 구성원 자격을 결정합니다. 이 클레임의 가치는 사용자가 속한 사용자 풀 그룹의 친숙한 이름의 배열입니다. 사용자 풀 그룹을 고유 식별자와 연결할 수 없습니다.

동일한 이름으로 삭제하고 다시 생성한 사용자 풀 그룹은 정책 저장소에 동일한 그룹으로 표시됩니다. 사용자 풀에서 그룹을 삭제하는 경우 해당 그룹에 대한 모든 참조를 정책 저장소에서 삭제하십시오.

API-파생된 네임스페이스와 스키마는 다음과 같습니다. point-in-time

Verified API Permissions는 특정 시점의 사용자를 캡처합니다. 즉, 정책 저장소를 생성할 API 때만 사용자를 쿼리합니다. 스키마나 이름이 API 변경되면 정책 스토어와 Lambda 권한 부여자를 업데이트하거나 -linked 정책 저장소를 새로 생성해야 합니다. API 검증된 권한은 사용자의 이름에서 정책 스토어 네임스페이스를 가져옵니다. API

Lambda 함수에는 구성이 없습니다. VPC

인증된 권한이 권한 부여자를 위해 생성하는 Lambda 함수는 a에 API 연결되어 있지 않습니다. VPC 기본값입니다. APIs네트워크 액세스가 비공개로 제한된 경우 검증된 권한으로 액세스 요청을 승인하는 Lambda 함수와 VPCs 통신할 수 없습니다.

검증된 권한은 권한 부여자 리소스를 다음 위치에 배포합니다. CloudFormation

API-linked 정책 저장소를 생성하려면 권한이 높은 AWS 보안 주체를 Verified Permissions 콘솔에 로그인해야 합니다. 이 사용자는 여러 곳에 걸쳐 리소스를 생성하는 AWS CloudFormation 스택을 배포합니다. AWS 서비스이 보안 주체는 검증된 권한 IAM, Lambda 및 Gateway에서 리소스를 추가하고 수정할 권한이 있어야 합니다. API 가장 좋은 방법은 이러한 자격 증명을 조직의 다른 관리자와 공유하지 않는 것입니다.

검증된 권한이 생성하는 리소스의 개요는 를 를 통해 프로덕션으로 이동 AWS CloudFormation 참조하십시오.

속성 기반 액세스 제어 추가 () ABAC

IdP를 사용한 일반적인 인증 세션은 ID 및 액세스 토큰을 반환합니다. 애플리케이션 요청 시 이러한 토큰 유형 중 하나를 전달자 토큰으로 전달할 수 있습니다. API 정책 저장소를 생성할 때 선택한 사항에 따라 Verified Permissions에는 두 가지 유형의 토큰 중 하나가 필요합니다. 두 유형 모두 사용자의 그룹 구성원에 대한 정보를 담고 있습니다. Amazon Cognito의 토큰 유형에 대한 자세한 내용은 Amazon Cognito 개발자 안내서의 사용자 풀과 함께 토큰 사용을 참조하십시오.

정책 저장소를 생성한 후 정책을 추가하고 확장할 수 있습니다. 예를 들어 사용자 풀에 새 그룹을 추가할 때 정책에 새 그룹을 추가할 수 있습니다. 정책 저장소는 사용자 풀이 그룹을 토큰으로 표시하는 방식을 이미 알고 있으므로 새 정책을 사용하여 모든 새 그룹에 대해 일련의 작업을 허용할 수 있습니다.

그룹 기반 정책 평가 모델을 사용자 속성을 기반으로 하는 보다 정확한 모델로 확장할 수도 있습니다. 사용자 풀 토큰에는 권한 부여 결정에 기여할 수 있는 추가 사용자 정보가 포함되어 있습니다.

ID 토큰

ID 토큰은 사용자의 속성을 나타내며 최고 수준의 세분화된 액세스 제어를 제공합니다. 이메일 주소, 전화번호 또는 사용자 지정 특성 (예: 부서 및 관리자) 을 평가하려면 ID 토큰을 평가하세요.

액세스 토큰

액세스 토큰은 범위가 OAuth 2.0인 사용자의 권한을 나타냅니다. 권한 부여 계층을 추가하거나 추가 리소스에 대한 요청을 설정하려면 액세스 토큰을 평가하십시오. 예를 들어, 사용자가 적절한 그룹에 속해 있고 일반적으로 액세스를 PetStore.read 승인하는 것과 같은 범위를 가지고 있는지 확인할 수 있습니다. API 사용자 풀은 런타임 시 토큰 사용자 지정과 함께 리소스 서버가 있는 토큰에 사용자 지정 범위를 추가할 수 있습니다.

ID 및 액세스 토큰으로 클레임을 처리하는 정책의 ID 제공자 토큰을 스키마에 매핑 예를 참조하십시오.