Tüm Ürünler
Search
Belge Merkezi

Elastic Compute Service:Restrict source IPs for OpenAPI calls

Son Güncelleme:Sep 30, 2026

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:SourceIp koş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.

  1. Bir Alibaba Cloud hesabı veya RAM yöneticisi olarak RAM konsolunda oturum açın.

  2. Sol gezinme bölmesinde Identities > Users seçeneğini belirleyin.

  3. 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

  1. Sol gezinme bölmesinde Permissions > Policies seçeneğini belirleyin.

  2. Access Policies sayfasında Create Policy düğmesini tıklayın.

  3. 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.

  4. 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

  1. Sol gezinme bölmesinde Identities > Users seçeneğini belirleyin.

  2. Users sayfasında hedef RAM kullanıcısını bulun ve Actions sütunundaki Attach Policy düğmesini tıklayın.

  3. 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:

  1. Bir RAM kullanıcı oluşturmak için CreateUser işlemini çağırın:

    • UserName: Oturum açma adı.

    • DisplayName: Görünen ad.

  2. İlkeyi oluşturmak için CreatePolicy işlemini çağırın:

    • PolicyName: İlke adı (örneğin RestrictIPAccess).

    • PolicyDocument: acs:SourceIp alanında izin verilen IP'leri içeren JSON ilke belgesi.

  3. İlkeyi RAM kullanıcısına eklemek için AttachPolicyToUser işlemini çağırın:

    • PolicyType: Custom.

    • PolicyName: Örneğin RestrictIPAccess.

    • UserName: Örneğin TestUser.

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