Güvenlik ilkeleri, Alibaba Cloud CLI işlemleri için istemci tarafı koruma sağlar. Etkinleştirildiğinde CLI, her komutu yapılandırılmış kurallarla karşılaştırarak işleme izin verir, reddeder veya manuel onay gerektirir.
Genel bakış
Güvenlik ilkeleri bir dizi kural tanımlar. Her kural bir kalıptan (eşleşme ölçütleri) ve bir eylemden (yanıt türü) oluşur:
allow(izin ver): İşlemi açıkça izin verir ve sonraki kural değerlendirmelerini atlar. Belirli işlemler için istisnalar oluşturmak amacıyla daha geneldenyveyaconfirmkurallarından önce birallowkuralı yerleştirin.deny(engelle): İşlemi tamamen engeller. CLI komutu reddeder ve API isteğini göndermez.confirm(onay gerektir): Etkileşimli bir terminalde CLI, devam etmeden önceyesyazmanızı ister. Etkileşimli olmayan bir ortamda CLI, çağrı yapan kişiye talimatlar içeren bir hata döndürür.
Güvenlik ilkeleri hem OpenAPI çağrılarına (RPC ve RESTful) hem de eklenti komutlarına uygulanır. Sunucu tarafı erişim kontrolünü (RAM) tamamlar ancak RAM izin ilkelerinin yerine geçmez.
Senaryolar
YZ aracı güvenlik sınırlamaları: Bir YZ aracı cloud kaynaklarını yönetmek için CLI'yı kullandığında, güvenlik ilkesi yıkıcı işlemleri (silme işlemleri gibi) engelleyebilir ve insan onayı gerektirebilir ya da tamamen engelleyerek insan döngüsünde (HITL) bir mekanizma sağlar.
Operasyonel korumalar: Kaynakları silme veya örnekleri durdurma gibi yıkıcı işlemlerin yanlışlıkla çalıştırılmasını önlemek için ekip CLI ortamları için varsayılan kurallar yapılandırın.
Ön koşullar
-
Alibaba Cloud CLI v3.3.14 veya üzeri yüklüdür. Mevcut sürümünüzü kontrol etmek için aşağıdaki komutu çalıştırın:
aliyun version -
CLI kimlik bilgileri yapılandırılmıştır. Kimlik bilgilerini henüz yapılandırmadıysanız aşağıdaki komutu çalıştırın:
aliyun configure
Güvenlik ilkelerini yönetin
Güvenlik ilkeleri aliyun configure safety-policy komut ailesi aracılığıyla yönetilir.
Mevcut ilkeyi görüntüleyin
Güvenlik ilkesi yapılandırmasını JSON biçiminde görüntülemek için aşağıdaki komutu çalıştırın:
aliyun configure safety-policy show
Örnek çıktı:
{
"enabled": false,
"rules": []
}
Etkinleştirin ve devre dışı bırakın
# Enable safety policy
aliyun configure safety-policy enable
# Disable safety policy
aliyun configure safety-policy disable
enabled alanının true olduğunu doğrulamak için aliyun configure safety-policy show komutunu çalıştırın.
Kuralları ekleyin
Komut sözdizimi:
aliyun configure safety-policy add --pattern <pattern> --action <deny|confirm>
Örnek: Tüm ürünlerdeki tüm silme işlemlerini engelleyin:
aliyun configure safety-policy add --pattern '*:Delete*' --action deny
Örnek: ECS güncelleme işlemleri için insan onayı gerektirin:
aliyun configure safety-policy add --pattern 'ecs:Update*' --action confirm
Kuralın eklendiğini doğrulamak için aliyun configure safety-policy list komutunu çalıştırın.
Zaten var olan bir kalıpla bir kural eklerseniz CLI, yinelenen bir giriş oluşturmak yerine o kalıp için eylemi günceller.
add alt komutu, eylem değerleri olarak yalnızca deny, confirm ve forbid kabul eder. Bir allow kuralı yapılandırmak için ALIBABA_CLOUD_SAFETY_POLICY_RULES ortam değişkenini ayarlayın veya yapılandırma dosyasını doğrudan düzenleyin.
Kuralları kaldırın
Bir kuralı kaldırmak için tam kalıbı belirtin:
aliyun configure safety-policy remove --pattern '*:Delete*'
Kuralları listeleyin
Tüm kuralları biçimlendirilmiş bir listede görüntülemek için aşağıdaki komutu çalıştırın:
aliyun configure safety-policy list
Örnek çıktı:
Safety policy: enabled
Config file: /home/user/.aliyun/safety-policy.json
Rules:
1. *:Delete* -> deny
2. ecs:Update* -> confirm
Kural sözdizimi
Kalıp biçimi
--pattern parametresi {product}:{operation} biçimini kullanır ve herhangi bir karakter dizisini eşleştirmek için * joker karakterini destekler. Kalıp eşleştirme büyük/küçük harfe duyarlı değildir: *:Delete*, *:DELETE* ve *:delete* aynı işlemlerin tümünü eşleştirir.
CLI, API stiline bağlı olarak farklı komut tanımlayıcıları oluşturur:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Yaygın kalıp örnekleri:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Kabukta komutları çalıştırırken, kabuğun * joker karakterini genişletmesini önlemek için kalıp değerlerini tek tırnak içine alın (örneğin, '*:Delete*').
Eylem değerleri
|
|
|
|
|
|
|
|
|
|
|
|
forbid, confirm için bir takma addır. Aynı çalışma zamanı davranışını üretirler.
Hiçbir kural eşleşmezse, işlem varsayılan olarak izin verilir (örtük izin). Açık allow kuralları, daha genel deny veya confirm kurallarından önce istisnalar oluşturmak için kullanılır.
Kural değerlendirme sırası
Kurallar, yapılandırılan sırada yukarıdan aşağıya doğru, ilk eşleşmenin kazandığı stratejiyle değerlendirilir: ilk eşleşen kural geçerli olur ve sonraki kurallar kontrol edilmez. Hiçbir kural eşleşmezse, varsayılan olarak yürütmeye izin verilir.
Örneğin, aşağıdaki iki kural verildiğinde:
ecs:Delete*→ confirm*:Delete*→ deny
aliyun ecs delete-instance komutunu çalıştırdığınızda, ilk kural (ecs:Delete*) eşleşir ve ikinci kuralın deny eylemi yerine confirm eylemi uygulanır.
İstisnalar oluşturmak için allow kullanımı:
ecs:Describe*→ allowecs:*→ deny
aliyun ecs DescribeInstances çalıştırıldığında ilk allow kuralıyla eşleşir ve işlem normal şekilde devam eder. aliyun ecs DeleteInstance çalıştırıldığında ise ikinci kural eşleşir ve işlem engellenir.
Kural sırası önemlidir. Kuralları eklerken, daha spesifik kuralların daha genel kurallardan önce geldiğinden emin olun.
Etkileşimli olmayan mod ve YZ aracı senaryoları
--yes bayrağı
--yes (veya -y) bayrağını belirttiğinizde, confirm kuralları otomatik olarak atlanır (onaylanmış olarak kabul edilir). deny kuralları etkilenmez ve yürütmeyi engellemeye devam eder.
# confirm rules are skipped, operation executes directly
aliyun ecs update-instance --InstanceId i-bp1xxxxx --yes
# deny rules are not affected, operation is still blocked
aliyun ecs delete-instance --InstanceId i-bp1xxxxx --yes
# Output: ERROR: operation blocked by safety policy: ecs delete-instance (rule: *:Delete*)
Bir oturum boyunca tüm confirm kurallarını otomatik olarak onaylamak, yani her komutta --yes geçmekle eşdeğer olmak için ALIBABA_CLOUD_SAFETY_SKIP_CONFIRM ortam değişkenini true olarak ayarlayabilirsiniz:
export ALIBABA_CLOUD_SAFETY_SKIP_CONFIRM=true
Ne --yes ne de ALIBABA_CLOUD_SAFETY_SKIP_CONFIRM, deny kurallarını atlayabilir. Bir deny kuralıyla eşleşen işlemler, bayraklardan veya ortam değişkenlerinden bağımsız olarak her zaman engellenir.
Etkileşimli olmayan terminal davranışı
CLI, geçerli ortamı belirlemek için standart girdinin bir terminal cihazı olup olmadığını algılar. Betikler, CI/CD işlem hatları ve YZ aracı çalışma zamanları gibi etkileşimli olmayan ortamlarda, bir işlem bir confirm kuralıyla eşleşir ve --yes bayrağı belirtilmezse CLI aşağıdaki hatayı döndürür:
Safety policy requires confirmation for: ecs update-instance
This operation cannot run in non-interactive mode without explicit approval. If you are an agent, ask the user whether this operation is allowed; after they confirm (e.g. reply yes), re-run the same command with --yes.
Önerilen YZ aracı iş akışı
Bir YZ aracı CLI aracılığıyla cloud kaynaklarını yönetirken, güvenlik ilkelerini yapılandırmak ve kullanmak için şu adımları izleyin:
Güvenlik ilkelerini yapılandırın: Tamamen yasaklanması gereken işlemler için
denyve onay gerektiren işlemler içinconfirmayarlayın.Onay istemlerini işleyin: Aracı bir
confirmengeliyle karşılaştığında, işlem ayrıntılarını kullanıcıya sunar ve onay ister.Onayla yeniden yürütün: Kullanıcı onayladıktan sonra, aracı komutu
--yesbayrağıyla yeniden çalıştırır.
Örnek yapılandırma: Silme işlemlerini engelleyin ve güncelleme işlemleri için insan onayı gerektirin:
aliyun configure safety-policy enable
aliyun configure safety-policy add --pattern '*:Delete*' --action deny
aliyun configure safety-policy add --pattern '*:Update*' --action confirm
Ortam değişkenleri
Komut satırı yapılandırmasına ek olarak, güvenlik ilkelerini ortam değişkenleri aracılığıyla kontrol edebilirsiniz. Ortam değişkenleri, yapılandırma dosyasına göre önceliklidir.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ALIBABA_CLOUD_SAFETY_POLICY_RULES ortam değişkeni ayarlandığında, yapılandırma dosyasındaki kurallar birleştirilmez, tamamen değiştirilir.
Yapılandırma dosyası
Güvenlik ilkesi yapılandırması ~/.aliyun/safety-policy.json içinde saklanır. --config-path seçeneğini belirtirseniz safety-policy.json dosyası bu özel dizinde bulunur.
Dosya biçimi örneği:
{
"enabled": true,
"rules": [
{
"pattern": "ecs:Describe*",
"action": "allow"
},
{
"pattern": "*:Delete*",
"action": "deny"
},
{
"pattern": "ecs:Update*",
"action": "confirm"
}
]
}
Yapılandırma dosyası yoksa, güvenlik ilkesi varsayılan olarak devre dışıdır ve kural listesi boştur. Dosya, ilk kez
enableveyaaddalt komutunu çalıştırdığınızda otomatik olarak oluşturulur.
Güvenlik ilkesi fail-open (hata durumunda açık kal) tasarımı kullanır: yapılandırma dosyası yüklenemezse (örneğin bozulma nedeniyle), CLI güvenlik kontrollerini atlar ve komut yürütmeyi engellemez.