Sertifika tabanlı kimlik doğrulaması ile Azure hizmet sorumlusu kullanma
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ı 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 çıkış anahtarı içerir fileWithCertAndPrivateKey
. Bu anahtarın değeri, oluşturulan sertifikanın nerede depolandığını size bildirir. Sertifikayı güvenli bir konuma kopyalayın. 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:
Mevcut sertifikayı kullanarak hizmet sorumlusu oluşturma
parametresini kullanarak --cert
var olan bir sertifikayla hizmet sorumlusu 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. certi897ficate öğesini dize olarak geçirin veya bir dosyadan sertifikayı yüklemek için biçimini kullanın@path
.
PEM dosyası kullandığınızda, SERTIFIKA dosyasının içindeki ÖZEL ANAHTARa eklenmelidir.
# 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 "-----BEGIN CERTIFICATE-----
...
-----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
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 az keyvault secret show ile özel anahtarıyla sertifikayı alın ve pem dosyasına dönüştürün. Azure Key Vault'ta sertifika gizli dizisinin 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
az login --service-principal -u "<myAppClientID>" -p cert.pem --tenant "<myTenantID>"
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 bağımsız değişkenini passin
değiştirin.
openssl pkcs12 -in fileName.p12 -clcerts -nodes -out fileName.pem -passin pass: -passout pass:
Hizmet sorumlusuna sertifika ekleme
Var olan bir hizmet sorumlusuna --append
sertifika eklemek için az ad sp credential reset içindeki 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 myServicePrincipalID \
--tenant myOwnerOrganizationId \
--password /path/to/cert
Sonraki Adımlar
Sertifika kullanarak hizmet sorumlularıyla çalışmayı öğrendiğinize göre, mevcut hizmet sorumlusunu almayı öğrenmek için sonraki adıma geçin.