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. Sertifika, içinde kullanılabilecek az login
ö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
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. Sertifikayı dize olarak geçirin veya bir dosyadan sertifikayı yüklemek için biçimini kullanın @path
. Sertifika karşıya yüklenirken yalnızca genel sertifika gerekir. 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 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
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 APP_ID --certificate /path/to/cert.pem --tenant TENANT_ID
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.