Gunakan kebijakan RAM untuk membatasi eksekusi perintah Cloud Assistant hanya pada pengguna biasa, seperti pengguna non-root atau non-system.
Prasyarat
Pengguna biasa telah dibuat pada instans ECS. Topik ini menggunakan user01 dan user02 sebagai contoh.
Latar Belakang
Secara default, Cloud Assistant menjalankan perintah dengan hak istimewa tertinggi pada instans ECS: sebagai root pada Linux dan system pada Windows.
Anda dapat menggunakan kebijakan RAM untuk menolak root atau system menjalankan perintah Cloud Assistant dan hanya memberikan izin kepada pengguna biasa seperti user01 dan user02.
Konfigurasi pengguna biasa untuk instans Linux
Ikuti langkah-langkah berikut untuk mencegah pengguna RAM menjalankan perintah Cloud Assistant sebagai root pada instans Linux.
-
Masuk ke Konsol RAM dengan Akun Alibaba Cloud Anda.
-
Contoh pengaturan pengguna RAM:
Parameter
Contoh
Logon name
commandUser
Display name
commandUser
Access mode
Pilih kedua opsi Console Access dan Programmatic Access (topik ini menggunakan keduanya).
CatatanPilih hanya mode akses yang Anda perlukan sesuai prinsip hak istimewa minimal.
Set password
Pilih Automatically generate password.
Password reset
Pilih Required at Next Logon.
MFA
Pilih Not Required.
Simpan username, password, dan AccessKey setelah pembuatan.
-
Buat kebijakan kustom untuk Cloud Assistant.
Klik tab Script. Dalam isi kebijakan, konfigurasikan izin API ECS Cloud Assistant dengan aksi berikut:
ecs:DescribeInstancesecs:DescribeTagKeysecs:CreateCommandecs:DescribeCommandsecs:InvokeCommandecs:RunCommandecs:DeleteCommandecs:DescribeInvocationsecs:DescribeInvocationResultsecs:StopInvocationecs:DescribeCloudAssistantStatusecs:InstallCloudAssistant
Atur Resource menjadi
acs:ecs:*:*:instance/*.Buat kebijakan bernama
commandUserPolicy. Berikut dua contoh — modifikasi sesuai kebutuhan.-
Izinkan
user01danuser02menjalankan perintah Cloud Assistant:{ "Statement": [ { "Effect": "Allow", "Action": [ "ecs:InvokeCommand", "ecs:RunCommand" ], "Resource": [ "acs:ecs:*:*:instance/*", "acs:ecs:*:*:command/*" ], "Condition": { "StringEquals": { "ecs:CommandRunAs": [ "user01", "user02" ] } } } ], "Version": "1" }CatatanTambahkan atau ubah username dalam blok
Conditionuntuk memberikan izin kepada pengguna lain. -
Tolak
rootdansystemmenjalankan perintah Cloud Assistant:{ "Statement": [ { "Effect": "Allow", "Action": [ "ecs:InvokeCommand", "ecs:RunCommand" ], "Resource": [ "acs:ecs:*:*:instance/*", "acs:ecs:*:*:command/*" ], "Condition": { "StringNotEqualsIgnoreCase": { "ecs:CommandRunAs": [ "system", "root" ] } } } ], "Version": "1" }CatatanTambahkan atau ubah username dalam blok
Conditionuntuk membatasi pengguna lain.
-
Berikan izin read-only ECS dan izin Cloud Assistant kepada pengguna RAM.
-
ECS read-only: pilih AliyunECSReadOnlyAccess.
-
Cloud Assistant: pilih commandUserPolicy (dibuat pada langkah sebelumnya).
-
-
Masuk ke Konsol Alibaba Cloud sebagai pengguna RAM.
-
Verifikasi dengan menjalankan perintah Cloud Assistant. Lihat Buat dan jalankan perintah.
-
Di konsol, tentukan pengguna yang akan menjalankan perintah.
user01berhasil menjalankan perintah, tetapirootmenghasilkan error. -
Di CLI,
user01berhasil menjalankan perintah, tetapirootmenghasilkan error:shell@Alicloud:~$ aliyun ecs RunCommand --RegionId 'cn-hangzhou' \ > --Name 'ping' \ > --Type 'RunShellScript' \ > --CommandContent 'ping aliyun.com' \ > --Timeout '60' \ > --ContentEncoding 'PlainText' \ > --InstanceId.1 'i-bp10s90xxxxxxxxn' \ > --Username 'user01' { "CommandId": "c-hz01ai1xxxxxxxxc", "InvokeId": "t-hz01ai18xxxxxxxx", "RequestId": "B352A46C-3CFE-4E72-9F03-BFC0C0D3C590" } shell@Alicloud:~$ aliyun ecs RunCommand --RegionId 'cn-hangzhou' \ > --Name 'ping' \ > --Type 'RunShellScript' \ > --CommandContent 'ping aliyun.com' \ > --Timeout '60' \ > --ContentEncoding 'PlainText' \ > --InstanceId.1 'i-bp10s90xxxxxxxxn' \ > --Username 'root' ERROR: SDK.ServerError ErrorCode: Forbidden.RAM Recommend: https://error-center.alibabacloud.com/status/search?Keyword=Forbidden.RAM&source=PopGw RequestId: 9FE8BCB7-AAFD-4401-B28D-8276411703CD Message: User not authorized to operate on the specified resource, or this API doesn't support RAM. shell@Alicloud:~$
-
Konfigurasi pengguna biasa untuk instans Windows
Menjalankan perintah Cloud Assistant pada instans Windows memerlukan username dan password. Simpan kata sandi logon Windows sebagai parameter terenkripsi di CloudOps Orchestration Service dan enkripsi dengan Key Management Service (KMS). Lihat Apa itu CloudOps Orchestration Service dan Apa itu Key Management Service.
Ikuti langkah-langkah berikut untuk mencegah pengguna RAM menjalankan perintah Cloud Assistant sebagai root atau system.
-
Masuk ke Konsol RAM dengan Akun Alibaba Cloud Anda.
-
Contoh pengaturan pengguna RAM:
Parameter
Contoh
Logon name
commandUser
Display name
commandUser
Access mode
Pilih kedua opsi Console Access dan Programmatic Access (topik ini menggunakan keduanya).
CatatanPilih hanya mode akses yang Anda perlukan sesuai prinsip hak istimewa minimal.
Set password
Pilih Automatically generate password.
Password reset
Pilih Required at Next Logon.
MFA
Pilih Not Required.
Simpan username, password, dan AccessKey setelah pembuatan.
-
Buat kebijakan kustom untuk Cloud Assistant dan KMS.
-
Izin Cloud Assistant:
Buat kebijakan bernama
commandUserPolicy. Berikut dua contoh — modifikasi sesuai kebutuhan.-
Izinkan
user01danuser02menjalankan perintah Cloud Assistant:{ "Statement": [ { "Effect": "Allow", "Action": [ "ecs:InvokeCommand", "ecs:RunCommand" ], "Resource": [ "acs:ecs:*:*:instance/*", "acs:ecs:*:*:command/*" ], "Condition": { "StringEquals": { "ecs:CommandRunAs": [ "user01", "user02" ] } } } ], "Version": "1" }CatatanTambahkan atau ubah username dalam blok
Conditionuntuk memberikan izin kepada pengguna lain. -
Tolak
rootdansystemmenjalankan perintah Cloud Assistant:{ "Statement": [ { "Effect": "Allow", "Action": [ "ecs:InvokeCommand", "ecs:RunCommand" ], "Resource": [ "acs:ecs:*:*:instance/*", "acs:ecs:*:*:command/*" ], "Condition": { "StringNotEqualsIgnoreCase": { "ecs:CommandRunAs": [ "system", "root" ] } } } ], "Version": "1" }CatatanTambahkan atau ubah username dalam blok
Conditionuntuk membatasi pengguna lain.
-
-
Izin KMS:
Buat kebijakan bernama
kmsPolicy. Lihat Contoh kebijakan otorisasi umum.{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "kms:List*", "kms:Describe*", "kms:Encrypt", "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": [ "*" ] } ] }
-
-
Berikan izin ECS, OOS, Cloud Assistant, dan KMS kepada pengguna RAM.
-
ECS read-only: pilih AliyunECSReadOnlyAccess.
-
OOS read-only: pilih AliyunOOSReadOnlyAccess.
-
Cloud Assistant: pilih commandUserPolicy (dibuat pada langkah sebelumnya).
-
KMS: pilih kmsPolicy (dibuat pada langkah sebelumnya).
-
-
Konfigurasi peran RAM untuk instans Windows.
-
Buat kebijakan kustom untuk peran RAM.
Contoh kebijakan:
{ "Version": "1", "Statement": [ { "Action": [ "kms:GetSecretValue" ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "oos:GetSecretParameter" ], "Effect": "Allow", "Resource": "*" } ] } -
Contoh konfigurasi:
Parameter
Contoh
Trusted entity type
Pilih Alibaba Cloud Service.
Trusted service
Pilih ECS.
Role name
AxtSecretRamRole
-
Lampirkan peran RAM ke instans ECS.
-
-
Buat parameter terenkripsi di OOS untuk menyimpan kata sandi logon Windows.
CatatanParameter terenkripsi OOS harus berada di wilayah yang sama dengan instans ECS.
Contoh nilai untuk
user01:Parameter
Contoh
Parameter name
axtSecretPassword
KMS key ID
Gunakan Default Service CMK bawaan.
Value
Kata sandi logon
user01. -
Masuk ke Konsol Alibaba Cloud sebagai pengguna RAM.
-
Verifikasi dengan menjalankan perintah Cloud Assistant. Lihat Buat dan jalankan perintah.
Jalankan perintah Cloud Assistant pada instans Windows untuk memverifikasi izin.
-
Di konsol, tentukan pengguna dan parameter kata sandi terenkripsi OOS.
user01berhasil menjalankan perintah, tetapisystemmenghasilkan error. -
Di CLI,
user01berhasil menjalankan perintah, tetapisystemmenghasilkan error:shell@AliCloud:~$ aliyun ecs RunCommand --RegionId 'cn-hangzhou' \ > --Name 'ping' \ > --Type 'RunPowerShellScript' \ > --CommandContent 'ping aliyun.com' \ > --Timeout '60' \ > --ContentEncoding 'PlainText' \ > --InstanceId.1 'i-bp1h21856zxxx' \ > --Username 'user01' \ > --WindowsPasswordName 'axtSecretPassword' { "CommandId": "c-hz0xxxxo2yo", "InvokeId": "t-hz01xxxxs00", "RequestId": "2D92EEDE-6FCA-47F9-81B1-2262EEB3376F" } shell@AliCloud:~$ aliyun ecs RunCommand --RegionId 'cn-hangzhou' \ > --Name 'ping' \ > --Type 'RunPowerShellScript' \ > --CommandContent 'ping aliyun.com' \ > --Timeout '60' \ > --ContentEncoding 'PlainText' \ > --InstanceId.1 'i-bp1h2lxxx_xxxl' \ > --Username 'system' \ > --WindowsPasswordName 'axtSecretPassword' ERROR: SDK.ServerError ErrorCode: Forbidden.RAM Recommend: https://error-center.alibabacloud.com/status/search?Keyword=Forbidden.RAM&source=PopGw RequestId: 229A382B-FA81-4115-855A-C8F52EE29FE1 Message: User not authorized to operate on the specified resource, or this API doesn't support RAM. shell@AliCloud:~$
-