Kontrol CloudFormation akses dengan AWS Identity and Access Management - AWS CloudFormation

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

Kontrol CloudFormation akses dengan AWS Identity and Access Management

Dengan AWS Identity and Access Management (IAM), Anda dapat membuat pengguna IAM dan mengontrol akses mereka ke sumber daya tertentu di Anda. Akun AWS Saat Anda menggunakan IAM, Anda dapat mengontrol apa yang dapat dilakukan pengguna CloudFormation, seperti apakah mereka dapat melihat templat tumpukan, membuat tumpukan, atau menghapus tumpukan.

Di luar tindakan CloudFormation spesifik, Anda dapat mengelola AWS layanan dan sumber daya apa yang tersedia untuk setiap pengguna. Dengan begitu, Anda dapat mengontrol sumber daya mana yang dapat diakses pengguna saat mereka menggunakannya CloudFormation. Misalnya, Anda dapat menentukan pengguna mana yang dapat membuat EC2 instance Amazon, menghentikan instance database, atau memperbarui. VPCs Izin yang sama berlaku kapan saja mereka gunakan CloudFormation untuk melakukan tindakan tersebut.

Gunakan informasi di bagian berikut untuk mengontrol siapa yang dapat mengakses CloudFormation. Kami juga akan mengeksplorasi cara mengotorisasi pembuatan sumber daya IAM dalam template, memberikan aplikasi yang berjalan pada EC2 instance izin yang mereka butuhkan, dan memanfaatkan kredensil keamanan sementara untuk meningkatkan keamanan di lingkungan Anda. AWS

Mendefinisikan kebijakan berbasis identitas IAM untuk CloudFormation

Dengan kebijakan berbasis identitas IAM, Anda dapat menentukan tindakan dan sumber daya yang diizinkan atau ditolak, serta kondisi di mana tindakan tersebut diperbolehkan atau ditolak. CloudFormation mendukung tindakan tertentu, sumber daya, dan kunci syarat.

Jika Anda baru mengenal IAM, mulailah dengan membiasakan diri dengan elemen-elemen kebijakan IAM JSON. Untuk informasi selengkapnya, lihat referensi elemen kebijakan IAM JSON di Panduan Pengguna IAM. Untuk mempelajari cara membuat kebijakan IAM, selesaikan tutorial Buat dan lampirkan kebijakan terkelola pelanggan pertama Anda dalam dokumentasi IAM.

Tindakan kebijakan untuk CloudFormation

Dalam pernyataan kebijakan IAM, Anda dapat menentukan tindakan API apa pun dari layanan apa pun yang mendukung IAM. Untuk CloudFormation, gunakan awalan berikut dengan nama aksi API:cloudformation:. Misalnya:cloudformation:CreateStack,cloudformation:CreateChangeSet, dancloudformation:UpdateStack.

Untuk menentukan beberapa tindakan dalam satu pernyataan, pisahkan dengan koma, sebagai berikut:

"Action": [ "cloudformation:action1", "cloudformation:action2" ]

Anda juga dapat menentukan beberapa tindakan menggunakan wildcard. Misalnya, Anda dapat menentukan semua tindakan yang namanya dimulai dengan kataGet, sebagai berikut:

"Action": "cloudformation:Get*"

Untuk daftar lengkap tindakan CloudFormation API, lihat Tindakan yang ditentukan oleh AWS CloudFormation dalam Referensi Otorisasi Layanan.

Contoh

Berikut ini menunjukkan contoh kebijakan izin yang memberikan izin untuk melihat tumpukan. CloudFormation

contoh 1: Contoh kebijakan yang memberikan izin tumpukan tampilan
{ "Version":"2012-10-17", "Statement":[{ "Effect":"Allow", "Action":[ "cloudformation:DescribeStacks", "cloudformation:DescribeStackEvents", "cloudformation:DescribeStackResource", "cloudformation:DescribeStackResources" ], "Resource":"*" }] }

Pengguna yang membuat atau menghapus tumpukan memerlukan izin tambahan berdasarkan templat tumpukan mereka. Misalnya, jika template Anda menjelaskan antrean Amazon SQS, pengguna harus memiliki izin untuk tindakan Amazon SQS dan Amazon CloudFormation SQS, seperti yang ditunjukkan dalam kebijakan contoh berikut.

contoh 2: Contoh kebijakan yang memberikan tindakan pembuatan dan tampilan tumpukan dan semua tindakan Amazon SQS
{ "Version":"2012-10-17", "Statement":[{ "Effect":"Allow", "Action":[ "sqs:*", "cloudformation:CreateStack", "cloudformation:DescribeStacks", "cloudformation:DescribeStackEvents", "cloudformation:DescribeStackResources", "cloudformation:GetTemplate", "cloudformation:ValidateTemplate" ], "Resource":"*" }] }

Tindakan khusus konsol untuk CloudFormation

Pengguna CloudFormation konsol memerlukan izin tambahan di luar yang diperlukan untuk AWS Command Line Interface atau CloudFormation APIs. Izin tambahan ini mendukung fitur khusus konsol seperti unggahan templat ke bucket Amazon S3 dan daftar drop-down untuk tipe parameter khusus. AWS

Untuk semua tindakan yang tercantum di bawah ini, berikan izin ke semua sumber daya; jangan batasi pada tumpukan atau bucket tertentu.

Tindakan berikut hanya digunakan oleh CloudFormation konsol dan tidak didokumentasikan dalam referensi API. Tindakan ini memungkinkan pengguna untuk mengunggah template ke bucket Amazon S3.

  • cloudformation:CreateUploadBucket

Saat pengguna mengunggah templat, pengguna juga memerlukan izin Amazon S3 berikut:

  • s3:PutObject

  • s3:ListBucket

  • s3:GetObject

  • s3:CreateBucket

Untuk melihat nilai dalam daftar drop-down parameter untuk template dengan tipe parameter AWS-specific, pengguna memerlukan izin untuk membuat panggilan API describe yang sesuai. Misalnya, izin berikut diperlukan saat jenis parameter ini digunakan dalam templat:

  • ec2:DescribeKeyPairs— Diperlukan untuk tipe AWS::EC2::KeyPair::KeyName parameter.

  • ec2:DescribeSecurityGroups— Diperlukan untuk tipe AWS::EC2::SecurityGroup::Id parameter.

  • ec2:DescribeSubnets— Diperlukan untuk tipe AWS::EC2::Subnet::Id parameter.

  • ec2:DescribeVpcs— Diperlukan untuk tipe AWS::EC2::VPC::Id parameter.

Untuk informasi selengkapnya tentang tipe parameter AWS-spesifik, lihatTentukan sumber daya yang ada saat runtime dengan CloudFormation tipe parameter yang disediakan.

Sumber daya kebijakan untuk CloudFormation

Dalam pernyataan kebijakan IAM, Resource elemen menentukan objek atau objek yang dicakup oleh pernyataan tersebut. Untuk CloudFormation, setiap pernyataan kebijakan IAM berlaku untuk sumber daya yang Anda tentukan menggunakan Amazon Resource Names (ARNs). Format ARN spesifik tergantung pada sumber daya.

Untuk daftar lengkap jenis sumber daya dan jenis CloudFormation sumber daya ARNs, lihat Jenis sumber daya yang ditentukan oleh AWS CloudFormation dalam Referensi Otorisasi Layanan. Untuk mempelajari tindakan mana yang dapat Anda tentukan dengan ARN masing-masing sumber daya, lihat Tindakan yang ditentukan oleh. AWS CloudFormation

Anda dapat menentukan tindakan untuk tumpukan tertentu, seperti yang ditunjukkan dalam contoh kebijakan berikut. Saat Anda memberikan ARN, ganti placeholder text dengan informasi khusus sumber daya Anda.

contoh 1: Contoh kebijakan yang menolak tindakan menghapus dan memperbarui tumpukan untuk tumpukan yang ditentukan
{ "Version":"2012-10-17", "Statement":[{ "Effect":"Deny", "Action":[ "cloudformation:DeleteStack", "cloudformation:UpdateStack" ], "Resource":"arn:aws:cloudformation:region:account-id:stack/MyProductionStack/*" }] }

Kebijakan di atas menggunakan kartu liar di akhir nama tumpukan sehingga tumpukan hapus dan tumpukan pembaruan ditolak pada ID tumpukan lengkap (sepertiarn:aws:cloudformation:region:account-id:stack/MyProductionStack/abc9dbf0-43c2-11e3-a6e8-50fa526be49c) dan nama tumpukan (sepertiMyProductionStack).

Untuk mengizinkan AWS::Serverless transformasi membuat set perubahan, sertakan izin arn:aws:cloudformation:region:aws:transform/Serverless-2016-10-31 tingkat sumber daya, seperti yang ditunjukkan dalam kebijakan berikut.

contoh 2: Contoh kebijakan yang memungkinkan tindakan set perubahan buat untuk transformasi yang ditentukan
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "cloudformation:CreateChangeSet" ], "Resource": "arn:aws:cloudformation:region:aws:transform/Serverless-2016-10-31" }] }

Kunci kondisi kebijakan untuk CloudFormation

Dalam pernyataan kebijakan IAM, Anda dapat secara opsional menentukan kondisi yang mengontrol kapan kebijakan berlaku. Misalnya, Anda dapat menentukan kebijakan yang mengizinkan pengguna membuat tumpukan hanya saat mereka menentukan URL templat tertentu. Anda dapat menentukan kondisi CloudFormation -spesifik dan kondisi AWS-wide, sepertiDateLessThan, yang menentukan kapan kebijakan berhenti berlaku. Untuk informasi selengkapnya dan daftar kondisi AWS-wide, lihat Kondisi dalam referensi elemen kebijakan IAM di Panduan Pengguna IAM.

catatan

Jangan gunakan kondisi aws:SourceIp AWS-wide. CloudFormationmenyediakan sumber daya dengan menggunakan alamat IP sendiri, bukan alamat IP dari permintaan asal. Misalnya, saat Anda membuat tumpukan, CloudFormation membuat permintaan dari alamat IP-nya untuk meluncurkan EC2 instans Amazon atau membuat bucket Amazon S3, bukan dari alamat IP dari CreateStack panggilan atau perintah. create-stack

Daftar berikut menjelaskan kondisi CloudFormation -spesifik. Syarat ini diterapkan hanya ketika pengguna membuat atau memperbarui tumpukan:

cloudformation:ChangeSetName

Nama set CloudFormation perubahan yang ingin Anda kaitkan dengan kebijakan. Gunakan syarat ini untuk mengontrol set perubahan mana yang dapat dijalankan atau dihapus oleh pengguna .

cloudformation:ImportResourceTypes

Jenis sumber daya templat yang ingin Anda kaitkan dengan kebijakan, seperti AWS::EC2::Instance. Gunakan syarat ini untuk mengontrol jenis sumber daya mana yang dapat digunakan pengguna saat mereka mengimpor sumber daya ke dalam tumpukan. Kondisi ini diperiksa terhadap jenis sumber daya yang dideklarasikan pengguna dalam ResourcesToImport parameter, yang saat ini hanya didukung untuk AWS CLI dan permintaan API. Saat menggunakan parameter ini, Anda harus menentukan semua jenis sumber daya yang Anda inginkan agar dikontrol pengguna selama operasi impor. Untuk informasi selengkapnya tentang ResourcesToImport parameter, lihat CreateChangeSettindakan dalam Referensi AWS CloudFormation API.

Untuk daftar kemungkinanResourcesToImport, lihatDukungan jenis sumber daya.

Gunakan konvensi penamaan sumber daya tiga bagian untuk menentukan jenis sumber daya mana yang dapat digunakan pengguna, dari semua sumber daya di seluruh organisasi, hingga jenis sumber daya individual.

organization::*

Tentukan semua jenis sumber daya untuk organisasi tertentu.

organization::service_name::*

Tentukan semua jenis sumber daya untuk layanan tertentu dalam organisasi tertentu.

organization::service_name::resource_type

Tentukan jenis sumber daya tertentu.

Sebagai contoh:

AWS::*

Tentukan semua jenis AWS sumber daya yang didukung.

AWS::service_name::*

Tentukan semua sumber daya yang didukung untuk layanan AWS tertentu.

AWS::service_name::resource_type

Tentukan jenis AWS sumber daya tertentu, seperti AWS::EC2::Instance (semua EC2 contoh).

cloudformation:ResourceTypes

Jenis sumber daya templat, seperti AWS::EC2::Instance, yang ingin Anda kaitkan dengan kebijakan. Gunakan syarat ini untuk mengontrol jenis sumber daya mana yang dapat digunakan pengguna saat mereka membuat atau memperbarui tumpukan. Kondisi ini diperiksa terhadap jenis sumber daya yang dideklarasikan pengguna dalam ResourceTypes parameter, yang saat ini hanya didukung untuk AWS CLI dan permintaan API. Saat menggunakan parameter ini, pengguna harus menentukan semua jenis sumber daya yang ada di templat mereka. Untuk informasi selengkapnya tentang ResourceTypes parameter, lihat CreateStacktindakan dalam Referensi AWS CloudFormation API.

Untuk daftar jenis sumber daya, lihat AWS referensi jenis sumber daya dan properti.

Gunakan konvensi penamaan sumber daya tiga bagian untuk menentukan jenis sumber daya mana yang dapat digunakan pengguna, dari semua sumber daya di seluruh organisasi, hingga jenis sumber daya individual.

organization::*

Tentukan semua jenis sumber daya untuk organisasi tertentu.

organization::service_name::*

Tentukan semua jenis sumber daya untuk layanan tertentu dalam organisasi tertentu.

organization::service_name::resource_type

Tentukan jenis sumber daya tertentu.

Sebagai contoh:

AWS::*

Tentukan semua jenis AWS sumber daya yang didukung.

AWS::service_name::*

Tentukan semua sumber daya yang didukung untuk layanan AWS tertentu.

AWS::service_name::resource_type

Tentukan jenis AWS sumber daya tertentu, seperti AWS::EC2::Instance (semua EC2 contoh).

Alexa::ASK::*

Tentukan semua jenis sumber daya di Alexa Skill Kit.

Alexa::ASK::Skill

Tentukan tipe sumber daya Alexa: :ASK: :Skill individu.

Custom::*

Tentukan semua sumber daya kustom.

Untuk informasi selengkapnya, lihat Buat logika penyediaan khusus dengan sumber daya khusus.

Custom::resource_type

Tentukan jenis sumber daya kustom tertentu.

Untuk informasi selengkapnya, lihat Buat logika penyediaan khusus dengan sumber daya khusus.

cloudformation:RoleARN

Nama Sumber Daya Amazon (ARN) dari peran layanan IAM yang ingin Anda kaitkan dengan kebijakan. Gunakan syarat ini untuk mengontrol peran layanan mana yang dapat digunakan pengguna saat mereka bekerja dengan tumpukan atau set perubahan.

cloudformation:StackPolicyUrl

URL kebijakan tumpukan Amazon S3 yang ingin Anda kaitkan dengan kebijakan. Gunakan syarat ini untuk mengontrol kebijakan tumpukan mana yang dapat dikaitkan pengguna dengan tumpukan selama tindakan membuat atau memperbarui tumpukan. Untuk informasi selengkapnya tentang kebijakan tumpukan, lihat Mencegah pembaruan ke sumber daya tumpukan.

catatan

Untuk memastikan bahwa pengguna hanya dapat membuat atau memperbarui tumpukan dengan kebijakan tumpukan yang Anda unggah, setel bucket S3 agar hanya dibaca bagi pengguna tersebut.

cloudformation:TemplateUrl

URL template Amazon S3 yang ingin Anda kaitkan dengan kebijakan. Gunakan syarat ini untuk mengontrol templat mana yang dapat digunakan pengguna saat mereka membuat atau memperbarui tumpukan.

catatan

Untuk memastikan bahwa pengguna hanya dapat membuat atau memperbarui tumpukan dengan templat yang Anda unggah, setel bucket S3 agar hanya dibaca bagi pengguna tersebut.

catatan

Kondisi CloudFormation spesifik berikut berlaku untuk parameter API dengan nama yang sama:

  • cloudformation:ChangeSetName

  • cloudformation:RoleARN

  • cloudformation:StackPolicyUrl

  • cloudformation:TemplateUrl

Misalnya, cloudformation:TemplateUrl hanya berlaku untuk TemplateUrl parameter untukCreateStack,UpdateStack, dan CreateChangeSet APIs.

Untuk contoh kebijakan IAM yang menggunakan tombol kondisi untuk mengontrol akses, lihatContoh kebijakan berbasis identitas IAM untuk CloudFormation.

Mengakui sumber daya IAM dalam templat CloudFormation

Sebelum Anda dapat membuat tumpukan, CloudFormation memvalidasi template Anda. Selama validasi, CloudFormation periksa template Anda untuk sumber daya IAM yang mungkin dibuatnya. Sumber daya IAM, seperti pengguna dengan akses penuh, dapat mengakses dan memodifikasi sumber daya apa pun di sumber daya Anda Akun AWS. Oleh karena itu, kami menyarankan agar Anda meninjau izin yang terkait dengan setiap sumber daya IAM sebelum melanjutkan sehingga Anda tidak secara tidak sengaja membuat sumber daya dengan izin yang meningkat. Untuk memastikan bahwa Anda telah melakukannya, Anda harus mengakui bahwa template berisi sumber daya tersebut, memberikan kemampuan CloudFormation yang ditentukan sebelum membuat tumpukan.

Anda dapat mengetahui kemampuan CloudFormation template dengan menggunakan CloudFormation konsol, AWS Command Line Interface (AWS CLI), atau API:

  • Di CloudFormation konsol, pada halaman Configure stack options dari wizard Create Stack atau Update Stack, pilih Saya mengakui bahwa template ini dapat membuat sumber daya IAM.

  • Dalam AWS CLI, ketika Anda menggunakan create-stack dan update-stackperintah, tentukan CAPABILITY_IAM atau CAPABILITY_NAMED_IAM nilai untuk --capabilities opsi. Jika template Anda menyertakan sumber daya IAM, Anda dapat menentukan salah satu kemampuan. Jika template Anda menyertakan nama kustom untuk sumber daya IAM, Anda harus menentukanCAPABILITY_NAMED_IAM.

  • Di API, saat Anda menggunakan CreateStack dan UpdateStacktindakan, tentukan Capabilities.member.1=CAPABILITY_IAM atauCapabilities.member.1=CAPABILITY_NAMED_IAM. Jika template Anda menyertakan sumber daya IAM, Anda dapat menentukan salah satu kemampuan. Jika template Anda menyertakan nama kustom untuk sumber daya IAM, Anda harus menentukanCAPABILITY_NAMED_IAM.

penting

Jika template Anda berisi sumber daya IAM bernama kustom, jangan membuat beberapa tumpukan menggunakan kembali template yang sama. Sumber daya IAM harus unik secara global dalam akun Anda. Jika Anda menggunakan template yang sama untuk membuat beberapa tumpukan di Wilayah yang berbeda, tumpukan Anda mungkin berbagi sumber daya IAM yang sama, daripada masing-masing memiliki yang unik. Sumber daya bersama di antara tumpukan dapat memiliki konsekuensi yang tidak diinginkan yang tidak dapat Anda pulihkan. Misalnya, jika Anda menghapus atau memperbarui sumber daya IAM bersama dalam satu tumpukan, Anda akan secara tidak sengaja mengubah sumber daya tumpukan lain.

Mengelola kredensi untuk aplikasi yang berjalan di instans Amazon EC2

Jika Anda memiliki aplikasi yang berjalan pada EC2 instans Amazon dan perlu membuat permintaan ke AWS sumber daya seperti bucket Amazon S3 atau tabel DynamoDB, aplikasi memerlukan kredensil keamanan. AWS Namun, mendistribusikan dan menyematkan kredensial keamanan jangka panjang di setiap instans yang Anda luncurkan merupakan tantangan dan potensi risiko keamanan. Alih-alih menggunakan kredensil jangka panjang, seperti kredensil pengguna IAM, sebaiknya Anda membuat peran IAM yang terkait dengan EC2 instans Amazon saat instans diluncurkan. Aplikasi kemudian bisa mendapatkan kredensil keamanan sementara dari instans Amazon EC2 . Anda tidak perlu menyematkan kredensial jangka panjang pada instans. Selain itu, untuk mempermudah pengelolaan kredensil, Anda dapat menentukan hanya satu peran untuk beberapa EC2 instans Amazon; Anda tidak perlu membuat kredensil unik untuk setiap instance.

Untuk potongan templat yang menunjukkan cara meluncurkan instans dengan peran, lihat IAMcontoh template peran.

catatan

Aplikasi pada instans yang menggunakan kredensial keamanan sementara dapat memanggil tindakan CloudFormation apa pun. Namun, karena CloudFormation berinteraksi dengan banyak AWS layanan lain, Anda harus memverifikasi bahwa semua layanan yang ingin Anda gunakan mendukung kredensi keamanan sementara. Untuk daftar layanan yang menerima kredensil keamanan sementara, lihat AWS layanan yang bekerja dengan IAM di Panduan Pengguna IAM.

Memberikan akses sementara (akses federasi)

Dalam beberapa kasus, Anda mungkin ingin memberi pengguna tanpa AWS kredensi akses sementara ke Anda. Akun AWS Daripada membuat dan menghapus kredensi jangka panjang kapan pun Anda ingin memberikan akses sementara, gunakan AWS Security Token Service ().AWS STS Misalnya, Anda dapat menggunakan peran IAM. Dari satu peran IAM, Anda dapat secara terprogram membuat dan kemudian mendistribusikan banyak kredensil keamanan sementara (yang mencakup kunci akses, kunci akses rahasia, dan token keamanan). Kredensi ini memiliki masa pakai yang terbatas, sehingga tidak dapat digunakan untuk mengakses Anda Akun AWS setelah kedaluwarsa. Anda juga dapat membuat beberapa peran IAM untuk memberikan tingkat izin yang berbeda kepada pengguna individu. Peran IAM berguna untuk skenario seperti identitas federasi dan sistem masuk tunggal.

Identitas gabungan adalah identitas berbeda yang dapat Anda gunakan di berbagai sistem. Untuk pengguna perusahaan dengan sistem identitas on-premise yang sudah ditetapkan (seperti LDAP atau Direktori Aktif), Anda dapat menangani semua autentikasi dengan sistem identitas on-premise Anda. Setelah pengguna diautentikasi, Anda memberikan kredensi keamanan sementara dari pengguna atau peran IAM yang sesuai. Misalnya, Anda dapat membuat peran administrator dan peran pengembang, di mana administrator memiliki akses penuh ke AWS akun dan pengembang memiliki izin untuk bekerja hanya dengan tumpukan. CloudFormation Setelah administrator diautentikasi, administrator diberi wewenang untuk mendapatkan kredensil keamanan sementara dari peran administrator. Namun, bagi pengembang, mereka dapat memperoleh kredensil keamanan sementara hanya dari peran pengembang.

Anda juga dapat memberikan akses kepada pengguna federasi ke file. AWS Management Console Setelah pengguna mengautentikasi dengan sistem identitas on-premise, Anda dapat membuat URL sementara secara terprogram yang memberikan akses langsung ke AWS Management Console. Saat pengguna menggunakan URL sementara, mereka tidak perlu masuk AWS karena telah diautentikasi (single sign-on). Selain itu, karena URL dibuat dari kredensial keamanan sementara pengguna, izin yang tersedia dengan kredensial tersebut menentukan izin apa yang dimiliki pengguna di AWS Management Console.

Anda dapat menggunakan beberapa yang berbeda AWS STS APIs untuk menghasilkan kredensil keamanan sementara. Untuk informasi selengkapnya tentang API mana yang akan digunakan, lihat Membandingkan AWS STS kredensil di Panduan Pengguna IAM.

penting

Anda tidak dapat bekerja dengan IAM ketika Anda menggunakan kredensil keamanan sementara yang dihasilkan dari API. GetFederationToken Sebaliknya, jika Anda perlu bekerja dengan IAM, gunakan kredensil keamanan sementara dari suatu peran.

CloudFormation berinteraksi dengan banyak AWS layanan lainnya. Saat Anda menggunakan kredensil keamanan sementara CloudFormation, verifikasi bahwa semua layanan yang ingin Anda gunakan mendukung kredensil keamanan sementara. Untuk daftar layanan yang menerima kredensil keamanan sementara, lihat AWS layanan yang bekerja dengan IAM di Panduan Pengguna IAM.

Untuk informasi selengkapnya, lihat sumber daya terkait berikut di Panduan Pengguna IAM: