를 사용하여 프로덕션으로 이동 AWS CloudFormation - Amazon Verified Permissions

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

를 사용하여 프로덕션으로 이동 AWS CloudFormation

API-연결된 정책 스토어는 API Gateway 에 대한 권한 부여 모델을 빠르게 구축하는 방법입니다API. 애플리케이션의 권한 부여 구성 요소에 대한 테스트 환경 역할을 하도록 설계되었습니다. 테스트 정책 스토어를 생성한 후 정책, 스키마 및 Lambda 권한 부여자를 재정의하는 데 시간을 할애합니다.

의 아키텍처를 조정하려면 정책 스토어 스키마 및 정책을 동등하게 조정API해야 합니다. API-연결된 정책 스토어는 API 아키텍처에서 스키마를 자동으로 업데이트하지 않습니다.-확인된 권한은 정책 스토어API를 생성할 때만 폴링합니다. 충분히 API 변경되면 새 정책 스토어에서 프로세스를 반복해야 할 수 있습니다.

애플리케이션 및 권한 부여 모델을 프로덕션에 배포할 준비가 되면 개발한 API연결된 정책 스토어를 자동화 프로세스와 통합합니다. 정책 스토어 스키마와 정책을 다른 AWS 계정 및 에 배포할 수 있는 AWS CloudFormation 템플릿으로 내보내는 것이 좋습니다 AWS 리전.

API연결된 정책 스토어 프로세스의 결과는 초기 정책 스토어와 Lambda 권한 부여자입니다. Lambda 권한 부여자에는 여러 종속 리소스가 있습니다. Verified Permissions는 이러한 리소스를 자동으로 생성된 CloudFormation 스택에 배포합니다. 프로덕션에 배포하려면 정책 스토어와 Lambda 권한 부여자 리소스를 템플릿으로 수집해야 합니다. API연결된 정책 스토어는 다음 리소스로 구성됩니다.

  1. AWS::VerifiedPermissions::PolicyStore: 스키마를 SchemaDefinition 객체에 복사합니다. " 문자를 로 이스케이프합니다\".

  2. AWS::VerifiedPermissions::IdentitySource: 테스트 정책 스토어의 출력GetIdentitySource 에서 값을 복사하고 필요에 따라 수정합니다.

  3. AWS:::VerifiedPermissions:Policy : 정책문 중 하나 이상Definition: 객체에 정책문을 복사합니다. " 문자를 로 이스케이프합니다\".

  4. AWS::Lambda::Function , AWS::IAM::Role , AWS::IAM::Policy , AWS::ApiGateway::Authorizer , AWS::Lambda::Permission

다음 템플릿은 예제 정책 스토어입니다. 기존 스택의 Lambda 권한 부여자 리소스를 이 템플릿에 추가할 수 있습니다.

{ "AWSTemplateFormatVersion": "2010-09-09", "Resources": { "MyExamplePolicyStore": { "Type": "AWS::VerifiedPermissions::PolicyStore", "Properties": { "ValidationSettings": { "Mode": "STRICT" }, "Description": "ApiGateway: PetStore/test", "Schema": { "CedarJson": "{\"PetStore\":{\"actions\":{\"get /pets\":{\"appliesTo\":{\"principalTypes\":[\"User\"],\"resourceTypes\":[\"Application\"],\"context\":{\"type\":\"Record\",\"attributes\":{}}}},\"get /\":{\"appliesTo\":{\"principalTypes\":[\"User\"],\"resourceTypes\":[\"Application\"],\"context\":{\"type\":\"Record\",\"attributes\":{}}}},\"get /pets/{petId}\":{\"appliesTo\":{\"context\":{\"type\":\"Record\",\"attributes\":{}},\"resourceTypes\":[\"Application\"],\"principalTypes\":[\"User\"]}},\"post /pets\":{\"appliesTo\":{\"principalTypes\":[\"User\"],\"resourceTypes\":[\"Application\"],\"context\":{\"type\":\"Record\",\"attributes\":{}}}}},\"entityTypes\":{\"Application\":{\"shape\":{\"type\":\"Record\",\"attributes\":{}}},\"User\":{\"memberOfTypes\":[\"UserGroup\"],\"shape\":{\"attributes\":{},\"type\":\"Record\"}},\"UserGroup\":{\"shape\":{\"type\":\"Record\",\"attributes\":{}}}}}}" } } }, "MyExamplePolicy": { "Type": "AWS::VerifiedPermissions::Policy", "Properties": { "Definition": { "Static": { "Description": "Policy defining permissions for testgroup cognito group", "Statement": "permit(\nprincipal in PetStore::UserGroup::\"us-east-1_EXAMPLE|testgroup\",\naction in [\n PetStore::Action::\"get /\",\n PetStore::Action::\"post /pets\",\n PetStore::Action::\"get /pets\",\n PetStore::Action::\"get /pets/{petId}\"\n],\nresource);" } }, "PolicyStoreId": { "Ref": "MyExamplePolicyStore" } }, "DependsOn": [ "MyExamplePolicyStore" ] }, "MyExampleIdentitySource": { "Type": "AWS::VerifiedPermissions::IdentitySource", "Properties": { "Configuration": { "CognitoUserPoolConfiguration": { "ClientIds": [ "1example23456789" ], "GroupConfiguration": { "GroupEntityType": "PetStore::UserGroup" }, "UserPoolArn": "arn:aws:cognito-idp:us-east-1:123456789012:userpool/us-east-1_EXAMPLE" } }, "PolicyStoreId": { "Ref": "MyExamplePolicyStore" }, "PrincipalEntityType": "PetStore::User" }, "DependsOn": [ "MyExamplePolicyStore" ] } } }