Aracılığıyla paylaş


Sertifika tabanlı kimlik doğrulaması ile Azure hizmet ilkesi kullanma

Bir hizmet ilkesi oluştururken, kullanacağı oturum açma kimlik doğrulama türünü seçersiniz. Azure hizmet sorumluları için iki tür kimlik doğrulaması sağlanır: parola tabanlı kimlik doğrulaması ve sertifika tabanlı kimlik doğrulaması.

Parola tabanlı kimlik doğrulamasının güvenlik kısıtlamaları nedeniyle sertifika tabanlı kimlik doğrulaması kullanmanızı öneririz. Sertifika tabanlı kimlik doğrulaması, Azure kaynaklarını daha iyi koruyan koşullu erişim ilkelerini kullanarak kimlik avına dayanıklı bir kimlik doğrulamasını benimsemenizi sağlar. Sertifika tabanlı kimlik doğrulamasının neden daha güvenli olduğu hakkında daha fazla bilgi edinmek için bkz . Microsoft Entra sertifika tabanlı kimlik doğrulaması.

Öğreticideki bu adım, bir Azure kaynağına erişmek için hizmet sorumlusu sertifikasının nasıl kullanılacağını açıklar.

Yeni sertifika içeren bir hizmet sorumlusu oluşturma

Kimlik doğrulaması için otomatik olarak imzalanan bir sertifika oluşturmak için parametresini --create-cert kullanın:

az ad sp create-for-rbac --name myServicePrincipalName \
                         --role roleName \
                         --scopes /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName \
                         --create-cert

Konsol çıkışı:

{
  "appId": "myServicePrincipalID",
  "displayName": "myServicePrincipalName",
  "fileWithCertAndPrivateKey": "certFilePath\certFileName.pem",
  "password": null,
  "tenant": "myOrganizationTenantID"
}

Sertifikayı Key Vault'ta depolamadığınız sürece, fileWithCertAndPrivateKey anahtarı çıkışa dahil olur. Bu anahtarın değeri, oluşturulan sertifikanın nerede depolandığını size bildirir. Sertifikayı güvenli bir konuma kopyalayın. Sertifika, az login içinde kullanılabilecek özel anahtarı ve ortak sertifikayı içerir. Bir sertifikanın özel anahtarına erişimi kaybederseniz hizmet sorumlusu kimlik bilgilerini sıfırlayın.

PEM dosyasının içeriği bir metin düzenleyicisiyle görüntülenebilir. PeM dosyası örneği aşağıda verilmiştir:

-----BEGIN PRIVATE KEY-----
MIIEvQ...
-----END PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
MIICoT...
-----END CERTIFICATE-----

Mevcut sertifikayı kullanarak hizmet sorumlusu oluşturma

--cert parametresini kullanarak var olan bir sertifikayla bir hizmet ilkesi oluşturun. Bu hizmet sorumlusunu kullanan tüm araçların sertifikanın özel anahtarına erişimi olmalıdır. Sertifikalar PEM, CER veya DER gibi bir ASCII biçiminde olmalıdır. Sertifikayı dize olarak geçirin veya bir dosyadan yüklemek için @path biçimini kullanın. Sertifika yüklenirken yalnızca herkese açık sertifika gereklidir. En iyi güvenlik için özel anahtarı eklemeyin. -----BEGIN CERTIFICATE----- ve -----END CERTIFICATE----- satırları isteğe bağlıdır.

# create a service principal with the certificate as a string
az ad sp create-for-rbac --name myServicePrincipalName \
                         --role roleName \
                         --scopes /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName \
                         --cert "MIICoT..."

# or provide -----BEGIN CERTIFICATE----- and -----END CERTIFICATE----- lines
az ad sp create-for-rbac --name myServicePrincipalName \
                         --role roleName \
                         --scopes /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName \
                         --cert "-----BEGIN CERTIFICATE-----
MIICoT...
-----END CERTIFICATE-----"
# create a service principal with the certificate file location
az ad sp create-for-rbac --name myServicePrincipalName \
                         --role roleName \
                         --scopes /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName \
                         --cert @/path/to/cert.pem

Karşıya yüklemek için bir PEM dosyası örneği aşağıda verilmiştir:

-----BEGIN CERTIFICATE-----
MIICoT...
-----END CERTIFICATE-----

Azure Key Vault ile çalışma

Parametresi, --keyvault Azure Key Vault'ta sertifika oluşturmak veya almak için eklenebilir. parametresini --keyvault kullandığınızda parametresi --cert de gereklidir. Bu örnekte, --cert değer sertifikanın adıdır.

# Create a service principal storing the certificate in Azure Key Vault
az ad sp create-for-rbac --name myServicePrincipalName \
                         --role roleName \
                         --scopes /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName \
                         --create-cert \
                         --cert myCertificateName \
                         --keyvault myVaultName
# Create a service principal using an existing certificate in Azure Key Vault
az ad sp create-for-rbac --name myServicePrincipalName \
                         --role roleName \
                         --scopes /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName \
                         --cert myCertificateName \
                         --keyvault myVaultName

Azure Key Vault'tan sertifika alma

Azure Key Vault'ta depolanan bir sertifika için, özel anahtarıyla birlikte sertifikayı az keyvault secret show komutuyla alın ve bir PEM dosyasına dönüştürün. Azure Key Vault'ta sertifikanın sırrı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: -passout pass: -out cert.pem -nodes

Var olan bir PKCS12 dosyasını dönüştürme

Zaten bir PKCS#12 dosyanız varsa, OpenSSL kullanarak dosyayı PEM biçimine dönüştürebilirsiniz. Parolanız varsa passin argümanını değiştirin.

openssl pkcs12 -in fileName.p12 -clcerts -nodes -out fileName.pem -passin pass: -passout pass:

Hizmet sorumlusuna sertifika ekleme

Mevcut bir hizmet sorumlusuna bir sertifika eklemek için --append komutundaki parametresini kullanın. Varsayılan olarak, bu komut tüm parolaları ve anahtarları temizler, bu nedenle dikkatli kullanın.

az ad sp credential reset --id myServicePrincipalID \
                          --append \
                          --cert @/path/to/cert.pem

Konsol çıkışı:

Certificate expires yyyy-mm-dd hh:mm:ss+00:00. Adjusting key credential end date to match.
The output includes credentials that you must protect. Be sure that you do not include these credentials in your code or check the credentials into your source control. For more information, see https://aka.ms/azadsp-cli
{
  "appId": "myServicePrincipalID",
  "password": null,
  "tenant": "myOrganizationTenantID"
}

Sertifika kullanarak hizmet sorumlusuyla oturum açma

Sertifikayla oturum açmak için sertifikanın ASCII biçiminde bir PEM veya DER dosyası olarak yerel olarak kullanılabilir olması gerekir. PKCS#12 dosyaları (.p12/.pfx) çalışmaz. PEM dosyası kullandığınızda, PRIVATE KEY ve CERTIFICATE dosyası içinde birlikte eklenmelidir. Diğer az komutlarıyla yaptığınız gibi yola ön ek @ eklemeniz gerekmez.

az login --service-principal --username APP_ID --certificate /path/to/cert.pem --tenant TENANT_ID

Sonraki Adımlar

Sertifika kullanarak hizmet sorumlularıyla çalışmayı öğrendiğinize göre, halihazırdaki bir hizmet sorumlusunu almayı öğrenmek için sonraki adıma geçin.