を使用した本番稼働への移行 AWS CloudFormation - Amazon Verified Permissions

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

を使用した本番稼働への移行 AWS CloudFormation

APIにリンクされたポリシーストアは、APIゲートウェイ の認証モデルをすばやく構築する方法です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 の 1 つ以上: ポリシーステートメントを 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" ] } } }