Azure CLı ile Azure hizmet sorumlusu oluşturma

Azure hizmetlerini kullanan otomatikleştirilmiş araçlar her zaman kısıtlı erişime sahip olmalıdır. Azure, uygulamaların tam ayrıcalığa sahip kullanıcılar olarak oturum açmasına izin vermek yerine hizmet sorumlularını sunuyor.

Azure hizmet sorumlusu nedir?

Azure hizmet sorumlusu, Azure kaynaklarına erişen uygulamalar, barındırılan hizmetler ve otomatikleştirilmiş araçlar ile kullanılmak için oluşturulan bir kimliktir. Bu erişim, hizmet sorumlusuna atanan roller tarafından kısıtlanır ve hangi kaynaklara hangi düzeyde erişilebileceğini kontrol edebilirsiniz. Güvenlik nedeniyle, otomatikleştirilmiş araçların kullanıcı kimliği ile oturum açmalarına izin vermek yerine her zaman hizmet sorumlularını kullanmanız önerilir.

Bu makalede, Azure CLı ile Azure hizmet sorumlusu oluşturma, hakkında bilgi alma ve sıfırlama adımları gösterilmektedir.

1. hizmet sorumlusu oluşturma

Az ad SP Create-for-RBAC komutuyla bir Azure hizmet sorumlusu oluşturun.

appIdVe tenant anahtarları, çıkış bölümünde görüntülenir az ad sp create-for-rbac ve hizmet sorumlusu kimlik doğrulamasında kullanılır. Değerlerini kaydedin, ancak az ad SP listesiile herhangi bir noktada elde edilebilir.

Hizmet sorumlusu oluştururken, kullanacağınız oturum açma kimlik doğrulaması türünü seçebilirsiniz. Azure hizmet sorumluları için iki tür kimlik doğrulaması mevcuttur: parola tabanlı kimlik doğrulaması ve sertifika tabanlı kimlik doğrulama.

Not

Hesabınız hizmet sorumlusu oluşturma iznine sahip değilse az ad sp create-for-rbac, “İşlemi tamamlamak için yeterli ayrıcalık yok” iletisini içeren bir hata döndürür. Hizmet sorumlusu oluşturmak için Azure Active Directory yöneticinizle iletişime geçin.

Uyarı

Komutunu kullanarak bir Azure hizmet sorumlusu oluşturduğunuzda az ad sp create-for-rbac , çıkış, korumanız gereken kimlik bilgilerini içerir. Bu kimlik bilgilerini kodunuza eklemediğinizden emin olun veya kaynak denetiminizdeki kimlik bilgilerini denetleyin. Alternatif olarak, kimlik bilgilerini kullanma gereksinimini ortadan kaldırmak için, varsa yönetilen kimlikleri kullanmayı göz önünde bulundurun.

Contributor --role Parametresi için en az bir değer kullanmanızı öneririz. Güvenliği ihlal edilmiş hizmet sorumlusu riskinizi azaltmak için daha belirli bir rol atayın ve kapsamı kaynağa ya da kaynak grubuna daraltın. Daha fazla bilgi için bkz. Rol ataması ekleme adımları.

Parola tabanlı kimlik doğrulaması

Kimlik doğrulaması parametreleri olmadan parola tabanlı kimlik doğrulaması kullanılır ve sizin için rastgele bir parola oluşturulur.

az ad sp create-for-rbac --name ServicePrincipalName --role Contributor

Önemli

Azure CLı 2.0.68 itibariyle, --password Kullanıcı tanımlı bir parolayla hizmet sorumlusu oluşturmaya yönelik parametre, zayıf parolaların yanlışlıkla kullanılmasını engellemek için artık desteklenmez .

Parola kimlik doğrulamasıyla bir hizmet sorumlusu çıkışı, password anahtarı içerir. Bu değeri kopyalamadığınızdan emin olun ; bu değer alınamaz. Parolayı unutursanız hizmet sorumlusu kimlik bilgilerini sıfırlayın.

Sertifika tabanlı kimlik doğrulaması

Sertifika tabanlı kimlik doğrulaması için --cert bağımsız değişkenini kullanın. Bu bağımsız değişken, var olan bir sertifikayı tutabilmeniz gerekir. Bu hizmet sorumlusunu kullanan herhangi bir aracın sertifikanın özel anahtarına erişimi olduğundan emin olun. Sertifikalar ped, CER veya DER gibi bir ASCII biçiminde olmalıdır. Sertifikayı bir dize olarak geçirin veya @path sertifikayı bir dosyadan yüklemek için biçimini kullanın.

Not

PED dosyası kullanılırken, sertifikanın dosya IÇINDEKI özel anahtara eklenmesi gerekir.

az ad sp create-for-rbac --name ServicePrincipalName --role Contributor --cert "-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----"
az ad sp create-for-rbac --name ServicePrincipalName --role Contributor --cert @/path/to/cert.pem

--keyvaultBağımsız değişken Azure Key Vault bir sertifika kullanmak için eklenebilir. Bu durumda, --cert değer sertifikanın adıdır.

az ad sp create-for-rbac --name ServicePrincipalName --role Contributor --cert CertName --keyvault VaultName

Kimlik doğrulaması için otomatik olarak imzalanan bir sertifika oluşturmak için --create-cert bağımsız değişkenini kullanın:

az ad sp create-for-rbac --name ServicePrincipalName --role Contributor --create-cert

Konsol çıkışı:

Creating a role assignment under the scope of "/subscriptions/myId"
Please copy C:\myPath\myNewFile.pem to a safe place.
When you run 'az login', provide the file path in the --password argument
{
  "appId": "myAppId",
  "displayName": "myDisplayName",
  "fileWithCertAndPrivateKey": "C:\\myPath\\myNewFile.pem",
  "name": "http://myName",
  "password": null,
  "tenant": "myTenantId"
}

Yeni pek dosyasının içeriği:

-----BEGIN PRIVATE KEY-----
myPrivateKeyValue
-----END PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
myCertificateValue
-----END CERTIFICATE-----

Not

az ad sp create-for-rbac --create-certKomut, hizmet sorumlusu ve bır ped dosyası oluşturur. PED dosyası doğru biçimli bir özel anahtar ve sertifika içerir.

Sertifikanın Azure Key Vault’ta depolanması için --keyvault bağımsız değişkeni eklenebilir. Kullanırken --keyvault --cert bağımsız değişken gereklidir.

az ad sp create-for-rbac --name ServicePrincipalName --role Contributor --create-cert --cert CertName --keyvault VaultName

Sertifikayı Key Vault depolamadığınız takdirde, çıkış fileWithCertAndPrivateKey anahtarı içerir. Bu anahtarın değeri, oluşturulan sertifikanın nerede depolandığını söyler. Sertifikayı güvenli bir konuma kopyalamadığınızdan emin olun veya bu hizmet sorumlusu ile oturum açamazsınız.

Bir sertifikanın özel anahtarına erişimi kaybederseniz hizmet sorumlusu kimlik bilgilerini sıfırlayın.

Key Vault sertifikayı alma

Key Vault depolanan sertifika için, az keykasasecret Show komutunu kullanarak sertifikayı özel anahtarıyla alın ve bunu bir PEI dosyasına dönüştürün. Key Vault, sertifikanın parolasının adı, sertifika adıyla aynıdır.

az keyvault secret download --file /path/to/cert.pfx --vault-name VaultName --name CertName --encoding base64
openssl pkcs12 -in cert.pfx -passin pass: -out cert.pem -nodes

2. var olan bir hizmet sorumlusunu al

Bir Kiracıdaki hizmet sorumluları listesi az ad SP listesiylealınabilir. Varsayılan olarak, bu komut kiracınız için ilk 100 hizmet sorumlusunu döndürür. Tüm kiracının hizmet sorumlularını almak için --all bağımsız değişkenini kullanın. Bu listenin alınması uzun zaman alabilir, bu nedenle listeyi aşağıdaki bağımsız değişkenlerden biriyle filtrelemeniz önerilir:

  • --display-name belirtilen adla eşleşen bir ön eki olan hizmet sorumlularını ister. Hizmet sorumlusu görünen adı, --name oluşturma sırasında parametresiyle ayarlanan değerdir. --nameHizmet sorumlusu oluşturma sırasında ayarlamadıysanız, ad ön eki olur azure-cli- .
  • --spn tam hizmet asıl adı eşleştirme üzerine filtreler. Hizmet sorumlusu adı her zaman ile başlar https:// . için kullandığınız değer --name BIR URI değilse, bu değerin https:// ardından görünen adı gelir.
  • --show-mine yalnızca oturum açmış kullanıcı tarafından oluşturulan hizmet sorumlularını ister.
  • --filter bir OData filtresi alır ve sunucu tarafı filtrelemeyi gerçekleştirir. Bu yöntem, CLı 'nin bağımsız değişkeniyle istemci tarafı filtrelemeye karşı önerilir --query . OData filtreleri hakkında bilgi edinmek için bkz. Filtreler Için OData ifade sözdizimi.

Hizmet sorumlusu nesneleri için döndürülen bilgiler ayrıntılıdır. Yalnızca oturum açma için gereken bilgileri almak üzere sorgu dizesini kullanın [].{id:appId, tenant:appOwnerTenantId} . Örneğin, şu anda oturum açmış olan kullanıcı tarafından oluşturulan tüm hizmet sorumluları için oturum açma bilgilerini almak için:

az ad sp list --show-mine --query "[].{id:appId, tenant:appOwnerTenantId}"

Önemli

az ad sp list ya da az ad SP Show Kullanıcı ve kiracıyı al, ancak herhangi bir kimlik doğrulama parolası veya kimlik doğrulama yöntemi değil. Key Vault sertifikalar için gizli dizileri az keykasasır Showkomutuyla alınabilir, ancak varsayılan olarak başka gizli dizileri depolanmaz. Kimlik doğrulama yöntemini veya gizli anahtarı unutursanız, hizmet sorumlusu kimlik bilgilerini sıfırlayın.

3. hizmet sorumlusu rollerini yönetme

Azure CLı, rol atamalarını yönetmek için aşağıdaki komutlara sahiptir:

Katılımcı rolünü hizmet sorumlusu için en düşük düzeyde kullanmanızı öneririz. Bu rol, bir Azure hesabında okuma ve yazma için tam izne sahiptir. Okuyucu rolü daha kısıtlayıcıdır, yalnızca salt okunur erişime sahiptir. Rol Tabanlı Erişim Denetimi (RBAC) ve roller hakkında daha fazla bilgi için bkz. RBAC: Yerleşik roller.

Bu örnek, Okuyucu rolünü ekler ve Katkıda Bulunan rolünü kaldırır:

az role assignment create --assignee APP_ID --role Reader
az role assignment delete --assignee APP_ID --role Contributor

Not

Hesabınızın rol atama izni yoksa, hesabınızın “'Microsoft.Authorization/roleAssignments/write' eylemini gerçekleştirme yetkisi olmadığını” belirten bir hata iletisiyle karşılaşırsınız. Rolleri yönetmek için Azure Active Directory yöneticinizle iletişime geçin.

Bir rol eklendiğinde, önceden atanmış izinler kısıtlanmaz. Bir hizmet sorumlusunun izinlerini kısıtlarken Katkıda Bulunan rolü kaldırılmalıdır.

Atanan roller listelenerek değişiklikler doğrulanabilir:

az role assignment list --assignee APP_ID

4. hizmet sorumlusu kullanarak oturum açın

Oturum açarak yeni hizmet sorumlusunun kimlik bilgilerini ve izinlerini test edin. Hizmet sorumlusu ile oturum açmak için, appId tenant ve kimlik bilgilerine ihtiyacınız vardır.

Hizmet sorumlusunda parola kullanarak oturum açmak için:

az login --service-principal --username APP_ID --password PASSWORD --tenant TENANT_ID

Bir sertifikayla oturum açmak için, ASCII biçiminde pek veya DER dosyası olarak yerel olarak kullanılabilir olmalıdır. PED dosyası kullanılırken, özel anahtar ve sertifikanın dosya içinde birlikte eklenmesi gerekir.

az login --service-principal --username APP_ID --tenant TENANT_ID --password /path/to/cert

Hizmet sorumlusu ile oturum açma hakkında daha fazla bilgi edinmek için bkz. Azure CLI Ile oturum açma.

5. hizmet sorumlusu kullanarak kaynak oluşturma

aşağıdaki bölümde, aşağıdaki komutları kullanarak bir hizmet sorumlusu ile Azure Depolama kaynak oluşturma hakkında bir örnek verilmiştir:

Bir hizmet sorumlusuyla oturum açmanız için , ve hizmet sorumlunuz oluşturulurken appId tenant yanıt olarak password döndürüldü.

  1. Hizmet sorumlusu olarak oturum açma.

    az login --service-principal --username APP_ID --password PASSWORD --tenant TENANT_ID
    
  2. Aynı hızlı başlangıç, öğretici veya geliştirme projesi için kullanılan tüm kaynakları tutmak için bir kaynak grubu oluşturun.

    az group create --location WESTUS --name MY_RESOURCE_GROUP
    
  3. Azure hizmetine kaynak oluşturma. yerine <SERVICENAME> Azure hizmetinin adını yazın.

    Azure Depolama parametresi için geçerli <KIND> değerler:

    • BlobStorage
    • BlockBlobStorage
    • FileStorage
    • Depolama
    • StorageV2
    az storage account create --name MY_RESOURCE_<SERVICENAME> --resource-group MY_RESOURCE_GROUP --kind <KIND> --sku F0 --location WESTUS --yes
    
  4. Azure hizmetine kimlik doğrulaması yapmak için kodunda kullanılan yeni kaynağın kaynak anahtarlarını edinin.

    az storage account keys list --name MY_RESOURCE_<SERVICENAME> --resource-group MY_RESOURCE_GROUP
    

6. Kimlik bilgilerini sıfırlama

Hizmet sorumlusu kimlik bilgilerini unutursanız az ad sp credential reset kullanın. Sıfırlama komutu ile aynı bağımsız değişkenleri az ad sp create-for-rbac alır.

az ad sp credential reset --name APP_ID

Ayrıca bkz.