Anda dapat menggunakan kebijakan stack untuk mencegah sumber daya stack diperbarui atau dihapus secara tidak disengaja selama pembaruan stack. Topik ini menjelaskan apa itu kebijakan stack serta cara mengatur dan memperbaruinya.
Informasi latar belakang
Kebijakan stack adalah dokumen berformat JSON atau YAML yang mendefinisikan aksi pembaruan yang dapat dilakukan pada sumber daya tertentu. Saat Anda membuat stack, pengguna mana pun yang memiliki izin untuk memperbarui stack tersebut dapat memperbarui semua sumber dayanya. Beberapa pembaruan mungkin memerlukan interupsi sumber daya. Setelah kebijakan stack ditetapkan, ROS melindungi semua sumber daya dalam stack tersebut. Anda kemudian dapat menambahkan pernyataan Allow eksplisit ke dalam kebijakan untuk mengizinkan pembaruan pada sumber daya tertentu.
-
Anda hanya dapat menentukan satu kebijakan stack untuk setiap stack, tetapi satu kebijakan dapat melindungi beberapa sumber daya.
-
Selama pembaruan stack, ROS secara otomatis memperbarui sumber daya yang bergantung pada sumber daya lain yang diperbarui. Misalnya, ROS secara otomatis memperbarui sumber daya yang mereferensikan sumber daya lain yang diperbarui. Namun, jika sumber daya tersebut dikaitkan dengan kebijakan stack, Anda harus memiliki izin yang diperlukan untuk memperbaruinya.
Kebijakan stack hanya berlaku selama pembaruan stack. Berbeda dengan kebijakan RAM, kebijakan stack tidak menyediakan kontrol akses. Kebijakan stack berfungsi sebagai mekanisme pengaman untuk mencegah pembaruan tidak disengaja pada sumber daya stack tertentu.
Menentukan kebijakan stack
Jika Anda membuat stack tanpa kebijakan stack, semua aksi pembaruan diizinkan pada semua sumber dayanya. Untuk mencegah operasi pembaruan pada sumber daya stack, Anda dapat menentukan kebijakan stack dan menerapkannya ke stack tersebut. Anda dapat mengatur kebijakan stack saat pembuatan stack dengan menyediakan kebijakan dalam file teks atau memasukkannya secara langsung. Setelah kebijakan stack ditetapkan untuk suatu stack, pembaruan apa pun yang tidak secara eksplisit diizinkan akan ditolak secara default.
Anda dapat menentukan kebijakan stack dengan lima elemen: Effect, Action, Principal, Resource, dan Condition.
Statement:
- Effect: Deny_or_Allow
Action: update_actions
Principal: '*'
Resource: LogicalResourceId/resource_logical_ID
Condition:
StringEquals_or_StringLike:
ResourceType:
- resource_type
- ...
Berikut ini penjelasan masing-masing elemen:
-
EffectMenentukan apakah aksi yang ditentukan pada sumber daya tertentu diizinkan atau ditolak. Anda hanya dapat menentukan
DenyatauAllow. Contoh:Effect: DenyCatatanJika kebijakan stack berisi pernyataan yang tumpang tindih (yang mengizinkan dan menolak pembaruan pada sumber daya yang sama), pernyataan
Denyselalu mengesampingkan pernyataanAllow. Untuk memastikan bahwa sumber daya dilindungi, gunakan pernyataanDenyuntuk sumber daya tersebut. -
ActionAksi pembaruan yang diizinkan atau ditolak:
-
Update:ModifyOperasi pembaruan yang memodifikasi sumber daya, yang mungkin atau tidak menyebabkan interupsi.
-
Update:DeleteAksi ini diperlukan ketika pembaruan template stack menghapus sumber daya.
-
Update:*Semua operasi pembaruan. Tanda bintang (*) adalah wildcard yang mewakili semua operasi pembaruan.
CatatanAnda juga dapat menentukan
Update:Replaceuntuk elemenAction. Fitur ini dicadangkan dan tidak didukung.Contoh berikut menunjukkan cara menentukan hanya operasi modifikasi dan penghapusan:
Action: - Update:Modify - Update:DeleteUntuk mengizinkan semua operasi pembaruan kecuali operasi tertentu, gunakan
NotAction. Misalnya, untuk mengizinkan semua operasi pembaruan kecualiUpdate:Delete, gunakanNotAction.Statement: - Effect: Allow NotAction: Update:Delete Principal: '*' Resource: '*' -
-
PrincipalEntitas yang menjadi sasaran kebijakan. Hanya tanda bintang (*) yang didukung, yang menunjukkan bahwa kebijakan berlaku untuk semua principal.
-
ResourceID logis sumber daya yang menjadi sasaran kebijakan. Untuk menentukan jenis sumber daya, gunakan elemen
Condition.Untuk menentukan sumber daya, gunakan ID logisnya. Contoh:
Resource: - LogicalResourceId/myECSAnda dapat menggunakan tanda bintang (*) dalam ID logis. Misalnya, jika sumber daya terkait memiliki awalan ID logis yang sama, Anda dapat menggunakan awalan tersebut diikuti dengan wildcard (*) untuk menentukan semuanya.
Resource: - LogicalResourceId/Prefix*Anda juga dapat menggunakan elemen
Notuntuk sumber daya. Misalnya, untuk mengizinkan pembaruan pada semua sumber daya kecuali satu, gunakan elemenNotResourceuntuk menentukan sumber daya yang dilindungi.Statement: - Effect: Allow Action: Update:* Principal: '*' NotResource: LogicalResourceId/WebServersSaat Anda menetapkan kebijakan stack, pembaruan apa pun yang tidak secara eksplisit diizinkan akan ditolak. Dengan mengizinkan pembaruan pada semua sumber daya kecuali sumber daya
WebServers, pembaruan pada sumber dayaWebServersditolak. -
ConditionJenis sumber daya yang menjadi sasaran kebijakan. Untuk menentukan ID logis sumber daya tertentu, gunakan elemen
Resource.Anda dapat menentukan jenis sumber daya, seperti semua instans ECS dan ApsaraDB RDS.
Statement: - Effect: Deny Principal: '*' Action: Update:* Resource: '*' Condition: StringEquals: ResourceType: - ALIYUN::ECS::Instance - ALIYUN::RDS::DBInstance - Effect: Allow Principal: '*' Action: Update:* Resource: '*'Pernyataan
Allowmemberikan izin pembaruan pada semua sumber daya, sedangkan pernyataanDenymenolak pembaruan pada instans ECS dan ApsaraDB RDS. PernyataanDenyselalu mengesampingkan pernyataan Allow.Anda dapat menggunakan tanda bintang (*) untuk jenis sumber daya. Misalnya, Anda dapat menggunakan tanda bintang (*) untuk menolak izin pembaruan untuk semua sumber daya ECS, seperti instans, grup keamanan, dan subnet.
Condition: StringLike: ResourceType: - ALIYUN::ECS::*CatatanSaat Anda menggunakan wildcard (*), Anda harus menggunakan kondisi StringLike.
Menetapkan kebijakan stack
Anda dapat menerapkan kebijakan stack selama pembuatan stack menggunakan konsol ROS atau Alibaba Cloud CLI. Untuk menerapkan kebijakan ke stack yang sudah ada, Anda harus menggunakan Alibaba Cloud CLI. Setelah kebijakan diterapkan, kebijakan tersebut tidak dapat dihapus dari stack, tetapi dapat diperbarui menggunakan CLI.
-
Menetapkan kebijakan stack selama pembuatan stack (konsol)
-
Masuk ke Konsol ROS.
-
Di panel navigasi sebelah kiri, klik Stacks.
-
Di bilah navigasi atas, pilih wilayah dari daftar drop-down wilayah, misalnya China (Hangzhou).
-
Di halaman Stacks, klik Create Stack, lalu pilih Use ROS dari daftar drop-down.
-
Di wizard Create Stack, pada halaman Select Template, pilih template dan klik Next.
-
Di wizard Create Stack, pada halaman Configure Parameters, konfigurasikan Stack Name dan parameter template.
-
Di bagian Configure Stack Settings, atur Stack Policy ke Input Stack Policy.
-
Konfigurasikan kebijakan stack dan klik Next.
-
Input Stack Policy: Masukkan kebijakan stack secara langsung.
-
Upload File: Unggah file JSON atau YAML yang berisi kebijakan stack.
-
-
Di halaman Compliance Precheck, selesaikan pemeriksaan kepatuhan dan klik Next.
CatatanFitur Compliance Precheck hanya tersedia untuk beberapa sumber daya. Untuk informasi lebih lanjut, lihat Compliance Precheck.
-
Di bagian Detection Rule, tambahkan aturan deteksi.
Anda dapat memilih aturan deteksi berdasarkan sumber daya cloud dalam template ROS.
-
Klik Check.
Anda dapat memodifikasi template berdasarkan solusi remediasi yang disarankan untuk sumber daya yang tidak sesuai guna memastikan kepatuhan sumber daya.
-
-
Ikuti petunjuk untuk menyelesaikan pembuatan stack.
-
-
Menetapkan kebijakan stack selama pembuatan stack (CLI)
Anda dapat menggunakan salah satu dari dua metode berikut untuk menetapkan kebijakan stack:
-
Panggil operasi CreateStack
Gunakan perintah
aliyun ros CreateStackdengan parameter--StackPolicyBodyuntuk menyediakan kebijakan secara langsung, atau gunakan perintahaliyun ros CreateStackdengan parameter--StackPolicyURLuntuk menentukan file yang berisi kebijakan. -
Panggil operasi CreateChangeSet
Gunakan perintah
aliyun ros CreateChangeSetdengan parameter--StackPolicyBodyuntuk menyediakan kebijakan secara langsung, atau gunakan perintahaliyun ros CreateChangeSetdengan parameter--StackPolicyURLuntuk menentukan file yang berisi kebijakan.
-
-
Menetapkan kebijakan stack pada stack yang sudah ada (hanya CLI)
Gunakan perintah
aliyun ros SetStackPolicydengan parameter--StackPolicyBodyuntuk menyediakan kebijakan secara langsung, atau gunakan perintahaliyun ros SetStackPolicydengan parameter--StackPolicyURLuntuk menentukan file yang berisi kebijakan.CatatanUntuk menambahkan kebijakan ke stack yang sudah ada, Anda harus memiliki izin untuk operasi
SetStackPolicy.
Memperbarui sumber daya yang dilindungi
Untuk memperbarui sumber daya yang dilindungi, Anda dapat membuat kebijakan sementara yang mengesampingkan kebijakan stack dan mengizinkan pembaruan pada sumber daya tersebut. Kebijakan pengesampingan tidak mengubah kebijakan stack secara permanen.
Untuk memperbarui sumber daya yang dilindungi, Anda harus memiliki izin untuk operasi SetStackPolicy. Untuk informasi tentang cara mengatur izin ROS, lihat Use RAM to control resource access.
-
Memperbarui sumber daya yang dilindungi (konsol)
-
Masuk ke Konsol ROS.
-
Di panel navigasi sebelah kiri, klik Stacks.
-
Di bilah navigasi atas, pilih wilayah dari daftar drop-down wilayah, misalnya China (Hangzhou).
-
Di halaman Stacks, temukan stack yang dituju dan klik Update di kolom Actions.
-
Di bagian Configure Stack Settings, pilih Input Stack Policy sesuai permintaan.
-
Konfigurasikan kebijakan stack sementara.
Tentukan kebijakan stack sementara yang hanya berlaku untuk pembaruan saat ini. Kebijakan pengesampingan harus menentukan pernyataan
Allowuntuk sumber daya yang dilindungi yang ingin Anda perbarui. Misalnya, untuk memperbarui semua sumber daya yang dilindungi, Anda dapat menentukan kebijakan pengesampingan sementara yang mengizinkan semua pembaruan.Statement: - Effect: Allow Action: Update:* Principal: '*' Resource: '*' -
Ikuti petunjuk untuk menyelesaikan pembaruan stack.
-
-
Memperbarui sumber daya yang dilindungi (CLI)
Anda dapat menggunakan salah satu dari dua metode berikut untuk memperbarui sumber daya yang dilindungi:
-
Panggil operasi UpdateStack
Gunakan perintah
aliyun ros UpdateStackdengan parameter--StackPolicyDuringUpdateBodyuntuk menyediakan kebijakan secara langsung, atau gunakan perintahaliyun ros UpdateStackdengan parameter--StackPolicyDuringUpdateURLuntuk menentukan file yang berisi kebijakan. -
Panggil operasi CreateChangeSet
Gunakan perintah
aliyun ros CreateChangeSetdengan parameter--StackPolicyDuringUpdateBodyuntuk menyediakan kebijakan secara langsung, atau gunakan perintahaliyun ros CreateChangeSetdengan parameter--StackPolicyDuringUpdateURLuntuk menentukan file yang berisi kebijakan.
CatatanROS menerapkan kebijakan pengesampingan hanya untuk pembaruan saat ini; kebijakan tersebut tidak mengubah kebijakan stack secara permanen.
-
Memperbarui kebijakan stack
Anda dapat memperbarui kebijakan stack untuk melindungi sumber daya tambahan atau menghapus perlindungan dari sumber daya yang sudah ada. Misalnya, saat Anda menambahkan database yang ingin dilindungi ke dalam stack, tambahkan pernyataan Deny untuk database tersebut ke dalam kebijakan stack. Untuk memperbarui kebijakan, Anda harus memiliki izin untuk operasi SetStackPolicy.
-
Memperbarui kebijakan stack (konsol)
-
Masuk ke Konsol ROS.
-
Di panel navigasi sebelah kiri, klik Stacks.
-
Di bilah navigasi atas, pilih wilayah dari daftar drop-down wilayah, misalnya China (Hangzhou).
-
Di halaman Stacks, klik ID stack yang dituju di kolom Stack Name.
-
Di tab Stack Information, di bagian Stack Policy, klik Edit.
-
Di kotak dialog Modify resource stack policy, masukkan kebijakan stack.
-
Klik OK.
-
-
Memperbarui kebijakan stack (CLI)
Gunakan perintah
aliyun ros SetStackPolicydengan parameter--StackPolicyBodyuntuk menyediakan kebijakan secara langsung, atau gunakan perintahaliyun ros SetStackPolicydengan parameter--StackPolicyURLuntuk menentukan file yang berisi kebijakan.Kebijakan berikut mengizinkan semua pembaruan pada semua sumber daya:
Statement: - Effect: Allow Action: Update:* Principal: '*' Resource: '*' -
Memperbarui kebijakan stack selama pembaruan stack (CLI)
Gunakan perintah
aliyun ros UpdateStackdengan parameter--StackPolicyBodyuntuk menyediakan kebijakan secara langsung, atau gunakan perintahaliyun ros UpdateStackdengan parameter--StackPolicyURLuntuk menentukan file yang berisi kebijakan.Gunakan perintah
aliyun ros CreateChangeSetdengan parameter--StackPolicyBodyuntuk menyediakan kebijakan secara langsung, atau gunakan perintahaliyun ros CreateChangeSetdengan parameter--StackPolicyURLuntuk menentukan file yang berisi kebijakan.
Contoh kebijakan stack
Contoh kebijakan berikut menunjukkan cara mencegah pembaruan pada semua sumber daya stack, sumber daya tertentu, dan jenis pembaruan tertentu.
-
Mencegah pembaruan pada semua sumber daya stack
Untuk mencegah pembaruan pada semua sumber daya stack, kebijakan berikut menentukan pernyataan
Denyuntuk semua aksi pembaruan pada semua sumber daya.Statement: - Effect: Deny Action: Update:* Principal: '*' Resource: '*' -
Mencegah pembaruan pada satu sumber daya (
WebServers)-
Contoh 1: Gunakan pernyataan
Denyuntuk mencegah pembaruan pada sumber dayaWebServers.Statement: - Effect: Allow Action: Update:* Principal: '*' Resource: '*' - Effect: Deny Action: Update:* Principal: '*' Resource: LogicalResourceId/WebServersKebijakan ini terdiri dari pernyataan berikut:
-
Allow: Mengizinkan semua aksi pembaruan pada semua sumber daya. -
Deny: Menolak semua aksi pembaruan untuk sumber daya dengan ID logisWebServers. -
Principal: Entitas yang menjadi sasaran kebijakan. Hanya tanda bintang (*) yang didukung, yang menunjukkan bahwa kebijakan berlaku untuk semua entitas.
-
-
Contoh 2: Gunakan pernyataan
Allowuntuk mengizinkan pembaruan pada semua sumber daya kecualiWebServers.Statement: - Effect: Allow Action: Update:* Principal: '*' NotResource: LogicalResourceId/WebServersCatatan-
Saat Anda menetapkan kebijakan stack, kecuali secara eksplisit diizinkan, pembaruan pada sumber daya ditolak secara default.
-
Mengandalkan penolakan default bisa berisiko. Jika kebijakan Anda memiliki pernyataan
Allowyang luas di tempat lain, seperti pernyataanAllowyang menggunakan wildcard, Anda mungkin secara tidak sengaja memberikan izin pembaruan pada sumber daya. Karena pernyataan Deny eksplisit selalu mengesampingkan pernyataan Allow, menggunakan pernyataanDenyadalah cara paling aman untuk memastikan bahwa sumber daya dilindungi.
-
-
-
Mencegah pembaruan pada semua instans jenis sumber daya
Kebijakan berikut menolak semua aksi pembaruan untuk jenis sumber daya instans ApsaraDB RDS. Kebijakan ini menggunakan pernyataan
Allowuntuk mengizinkan semua aksi pembaruan pada semua sumber daya stack lainnya. PernyataanAllowtidak berlaku untuk sumber daya instans ApsaraDB RDS karena pernyataanDenyselalu mengesampingkan pernyataan Allow.Statement: - Effect: Deny Action: Update:* Principal: '*' Resource: '*' Condition: StringEquals: ResourceType: - ALIYUN::RDS::DBInstance - Effect: Allow Action: Update:* Principal: '*' Resource: '*' -
Mencegah pembaruan pada stack bersarang
Kebijakan berikut menolak semua aksi pembaruan untuk jenis sumber daya stack ROS, yang merepresentasikan stack bersarang. Kebijakan ini menggunakan pernyataan
Allowuntuk mengizinkan semua aksi pembaruan pada semua sumber daya stack lainnya. PernyataanAllowtidak berlaku untuk sumber daya stack ROS karena pernyataanDenyselalu mengesampingkan pernyataanAllow.Statement: - Effect: Deny Action: Update:* Principal: '*' Resource: '*' Condition: StringEquals: ResourceType: - ALIYUN::ROS::Stack - Effect: Allow Action: Update:* Principal: '*' Resource: '*'