Pindah ke produksi dengan AWS CloudFormation - Izin Terverifikasi Amazon

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Pindah ke produksi dengan AWS CloudFormation

API-linked policy store adalah cara untuk membuat model otorisasi untuk Gateway dengan cepat. API API Mereka dirancang untuk berfungsi sebagai lingkungan pengujian untuk komponen otorisasi aplikasi Anda. Setelah membuat toko kebijakan pengujian, luangkan waktu untuk menyempurnakan kebijakan, skema, dan otorisasi Lambda.

Anda dapat menyesuaikan arsitektur AndaAPI, yang memerlukan penyesuaian yang setara dengan skema dan kebijakan toko kebijakan Anda. API-toko kebijakan terkait tidak secara otomatis memperbarui skema mereka dari API Arsitektur—Izin Terverifikasi hanya melakukan polling API pada saat Anda membuat toko kebijakan. Jika Anda cukup API berubah, Anda mungkin harus mengulangi prosesnya dengan toko kebijakan baru.

Saat model aplikasi dan otorisasi Anda siap untuk diterapkan ke produksi, integrasikan penyimpanan kebijakan API -linked yang Anda kembangkan dengan proses otomatisasi Anda. Sebagai praktik terbaik, kami menyarankan Anda mengekspor skema penyimpanan kebijakan dan kebijakan ke dalam AWS CloudFormation templat yang dapat Anda terapkan ke yang lain Akun AWS dan. Wilayah AWS

Hasil dari proses penyimpanan kebijakan API -linked adalah penyimpanan kebijakan awal dan otorisasi Lambda. Otorisasi Lambda memiliki beberapa sumber daya yang bergantung. Izin Terverifikasi menyebarkan sumber daya ini dalam tumpukan yang dibuat secara otomatis CloudFormation . Untuk menyebarkan ke produksi, Anda harus mengumpulkan penyimpanan kebijakan dan sumber daya otorisasi Lambda ke dalam templat. Penyimpanan kebijakan API -linked dibuat dari sumber daya berikut:

  1. AWS::VerifiedPermissions:PolicyStore: Salin skema Anda ke SchemaDefinition objek. "Karakter melarikan diri sebagai\".

  2. AWS::VerifiedPermissions:IdentitySource: Salin nilai dari output GetIdentitySource dari penyimpanan kebijakan pengujian Anda dan modifikasi sesuai kebutuhan.

  3. Satu atau lebih dari AWS::VerifiedPermissions: :Policy: Salin pernyataan kebijakan Anda ke Definition objek. "Karakter melarikan diri sebagai\".

  4. AWS: :Lambda: :Fungsi,::: :Peran,AWS:IAM:: :Kebijakan,AWS::: :Authorizer,IAM: :Lambda AWS ApiGateway : :Izin AWS

Template berikut adalah contoh toko kebijakan. Anda dapat menambahkan sumber daya otorisasi Lambda dari tumpukan yang ada ke template ini.

{ "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" ] } } }