Sızdırılan bir AccessKey'in etkisini azaltmak için OpenAPI çağrılarını yalnızca güvenilir kaynak IP adresleriyle sınırlayan bir RAM ilkesi kullanın.
Güvenlik riskleri
Varsayılan olarak, geçerli bir AccessKey'e sahip herhangi bir varlık herhangi bir IP adresinden OpenAPI çağrısı yapabilir. Yanlış yapılandırma, kaynak kodda sabitlenmiş anahtarlar veya çalışan ayrılıkları nedeniyle sızdırılan bir AccessKey, saldırganların cloud kaynaklarınız üzerinde doğrudan kontrol kurmasına olanak tanır. Bu durum veri hırsızlığına, kötü amaçlı silme işlemlerine veya beklenmeyen maliyetlere yol açabilir.
Çalışma mantığı
acs:SourceIp koşulu içeren bir RAM ilkesi, API çağrılarını şirketinizin giden IP adresi veya Bastionhost IP'si gibi güvenilir IP adresleriyle sınırlar. Bir AccessKey sızdırılsa bile API çağrıları yalnızca bu adreslerden başarılı olur.
acs:SourceIp birden fazla IP veya CIDR aralığı içeriyorsa bu değerler VEYA (OR) mantığıyla değerlendirilir: Kaynak IP herhangi bir girişle eşleşirse çağrı başarılı olur.
Sınırlamalar
Yalnızca RAM kullanıcıları: Kaynak IP kısıtlama ilkeleri yalnızca RAM kullanıcıları için geçerlidir; Alibaba Cloud hesabının kendisi için geçerli değildir.
Yalnızca genel IP'ler:
acs:SourceIpkoşulu çağrıyı yapanın genel giden IP adresini veya NAT Gateway giden IP adresini değerlendirir; VPC içindeki özel IP adresini değerlendirmez.
Ön koşullar
Aşağıdakilere sahip olduğunuzdan emin olun:
RAM yönetici izinlerine sahip bir Alibaba Cloud hesabı.
İzin verilecek giden IP adresi veya CIDR aralığı (örneğin şirketinizin giden IP adresi veya bir Bastionhost IP'si).
RAM konsolunu kullanarak kaynak IP'leri kısıtlama
Adım 1: RAM kullanıcı oluşturma
Kaynak IP kısıtlama ilkeleri Alibaba Cloud hesabına değil RAM kullanıcılarına eklenir.
Bir Alibaba Cloud hesabı veya RAM yöneticisi olarak RAM konsolunda oturum açın.
Sol gezinme bölmesinde Identities > Users seçeneğini belirleyin.
Users sayfasında Create User düğmesini tıklayın, kullanıcı bilgilerini girin, OK düğmesini tıklayın ve güvenlik doğrulamasını tamamlayın.
Adım 2: Özel ilke oluşturma
Sol gezinme bölmesinde Permissions > Policies seçeneğini belirleyin.
Access Policies sayfasında Create Policy düğmesini tıklayın.
-
Create Policy sayfasında JSON sekmesini tıklayın ve aşağıdaki ilkeyi girin:
Alan Açıklama Örnek Actionİzin verilecek işlemler. ecs:*tüm ECS işlemleri için*ise tüm cloud hizmetleri için kullanın."ecs:*"acs:SourceIpİzin verilen IP'ler veya CIDR aralıkları. Birden fazla giriş VEYA mantığıyla değerlendirilir; kaynak IP herhangi bir girişle eşleşirse çağrı başarılı olur. "200.1.1.0/24","213.1.2.3"{ "Version": "1", "Statement": [ { "Action": "ecs:*", "Resource": "*", "Effect": "Allow", "Condition": { "IpAddress": { "acs:SourceIp": [ "200.1.xxx.xxx/24", "213.1.xxx.xxx" ] } } } ] }İlkeyi kaydetmeden önce yer tutucu değerleri değiştirin.
Bir Policy Name girin (örneğin
RestrictIPAccess), isteğe bağlı olarak bir açıklama ekleyin, OK düğmesini tıklayın ve güvenlik doğrulamasını tamamlayın.
Adım 3: İlkeyi RAM kullanıcısına ekleme
Sol gezinme bölmesinde Identities > Users seçeneğini belirleyin.
Users sayfasında hedef RAM kullanıcısını bulun ve Actions sütunundaki Attach Policy düğmesini tıklayın.
Grant Permission panelinde ilkeyi seçin ve Authorize düğmesini tıklayın.
API kullanarak kaynak IP'leri kısıtlama
Aşağıdaki RAM API işlemlerini sırayla çağırın:
-
Bir RAM kullanıcı oluşturmak için CreateUser işlemini çağırın:
UserName: Oturum açma adı.DisplayName: Görünen ad.
-
İlkeyi oluşturmak için CreatePolicy işlemini çağırın:
PolicyName: İlke adı (örneğinRestrictIPAccess).PolicyDocument:acs:SourceIpalanında izin verilen IP'leri içeren JSON ilke belgesi.
-
İlkeyi RAM kullanıcısına eklemek için AttachPolicyToUser işlemini çağırın:
PolicyType:Custom.PolicyName: ÖrneğinRestrictIPAccess.UserName: ÖrneğinTestUser.
Uyumluluk
Tüm RAM kullanıcılarındaki kaynak IP kısıtlamalarını denetlemek ve düzeltmek için aşağıdaki betikleri Alibaba Cloud CLI ile kullanın.
Kontrol: Kaynak IP kısıtlaması olmayan RAM kullanıcılarını bulma
Belirtilen ilkenin eklenmediği tüm RAM kullanıcılarını listeler.
#!/bin/bash
# Replace with your policy name and ARN.
POLICY_NAME="RestrictIPAccess"
POLICY_ARN="acs:ram::123456789012:policy/RestrictIPAccess"
USER_LIST=$(aliyun ram ListUsers | jq -r '.Users.User[].UserName')
for USER in $USER_LIST; do
POLICIES=$(aliyun ram ListPoliciesForUser --UserName $USER | jq -r '.Policies.Policy[].PolicyName')
if ! echo "$POLICIES" | grep -q "$POLICY_NAME"; then
echo "User $USER is not attached to policy $POLICY_ARN"
fi
done
Düzeltme: Kaynak IP kısıtlamasını toplu olarak RAM kullanıcılarına ekleme
İlkeyi henüz sahip olmayan her RAM kullanıcısına ekler.
#!/bin/bash
# Replace with your policy name and ARN.
POLICY_NAME="RestrictIPAccess"
POLICY_ARN="acs:ram::123456789012:policy/RestrictIPAccess"
USER_LIST=$(aliyun ram ListUsers | jq -r '.Users.User[].UserName')
for USER in $USER_LIST; do
POLICIES=$(aliyun ram ListPoliciesForUser --UserName $USER | jq -r '.Policies.Policy[].PolicyName')
if ! echo "$POLICIES" | grep -q "^${POLICY_NAME}$"; then
echo "Attaching policy $POLICY_ARN to user $USER ..."
aliyun ram AttachPolicyToUser \
--PolicyType Custom \
--PolicyName $POLICY_NAME \
--UserName $USER
if [ $? -eq 0 ]; then
echo "Policy attached to $USER."
else
echo "Failed to attach policy to $USER. Check your permissions or verify the policy exists."
fi
else
echo "User $USER already has the policy. Skipping."
fi
done