기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
API 연결 정책 스토어는 API Gateway API에 대한 권한 부여 모델을 빠르게 구축하는 방법입니다. 애플리케이션의 권한 부여 구성 요소에 대한 테스트 환경 역할을 하도록 설계되었습니다. 테스트 정책 스토어를 생성한 후 정책, 스키마 및 Lambda 권한 부여자를 구체화하는 데 시간을 할애합니다.
API의 아키텍처를 조정하려면 정책 스토어 스키마 및 정책을 동등하게 조정해야 할 수 있습니다. API 연결 정책 스토어는 API 아키텍처에서 스키마를 자동으로 업데이트하지 않습니다. 확인 권한은 정책 스토어를 생성할 때만 API를 폴링합니다. API가 충분히 변경되면 새 정책 스토어로 프로세스를 반복해야 할 수 있습니다.
애플리케이션 및 권한 부여 모델을 프로덕션에 배포할 준비가 되면 개발한 API 연결 정책 스토어를 자동화 프로세스와 통합합니다. 모범 사례로 정책 스토어 스키마와 정책을 다른 AWS 계정 및에 배포할 수 있는 AWS CloudFormation 템플릿으로 내보내는 것이 좋습니다 AWS 리전.
API 연결 정책 스토어 프로세스의 결과는 초기 정책 스토어와 Lambda 권한 부여자입니다. Lambda 권한 부여자에는 여러 종속 리소스가 있습니다. Verified Permissions는 이러한 리소스를 자동으로 생성된 CloudFormation 스택에 배포합니다. 프로덕션에 배포하려면 정책 스토어와 Lambda 권한 부여자 리소스를 템플릿으로 수집해야 합니다. API 연결 정책 스토어는 다음 리소스로 구성됩니다.
-
AWS::VerifiedPermissions::PolicyStore: 스키마를
SchemaDefinition
객체에 복사합니다."
문자를 로 이스케이프합니다\"
. -
AWS::VerifiedPermissions::IdentitySource: 테스트 정책 스토어의 GetIdentitySource 출력에서 값을 복사하고 필요에 따라 수정합니다.
-
하나 이상의 AWS::VerifiedPermissions::Policy: 정책 설명을
Definition
객체에 복사합니다."
문자를 로 이스케이프합니다\"
. -
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"
]
}
}
}