Udostępnij przez


Używanie obiektu głównego platformy Azure z uwierzytelnianiem opartym na certyfikacie

Podczas tworzenia jednostki usługi wybierz używany przez nią typ uwierzytelniania logowania. Istnieją dwa typy uwierzytelniania dostępne dla jednostek usługi platformy Azure: uwierzytelnianie oparte na hasłach i uwierzytelnianie oparte na certyfikatach.

Zalecamy używanie uwierzytelniania opartego na certyfikatach ze względu na ograniczenia zabezpieczeń uwierzytelniania opartego na hasłach. Uwierzytelnianie oparte na certyfikatach umożliwia przyjęcie uwierzytelniania odpornego na wyłudzanie informacji przy użyciu zasad dostępu warunkowego, które lepiej chroni zasoby platformy Azure. Aby dowiedzieć się więcej o tym, dlaczego uwierzytelnianie oparte na certyfikatach jest bezpieczniejsze, zobacz Microsoft Entra certificate-based authentication (Uwierzytelnianie oparte na certyfikatach firmy Microsoft).

W tym kroku w samouczku wyjaśniono, jak używać certyfikatu jednostki usługi do uzyskiwania dostępu do zasobu platformy Azure.

Tworzenie jednostki usługi zawierającej nowy certyfikat

Aby utworzyć certyfikat z podpisem własnym do uwierzytelniania, użyj parametru --create-cert :

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

Dane wyjściowe konsoli:

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

Jeśli certyfikat nie jest zapisany w Key Vault, dane wyjściowe zawierają klucz fileWithCertAndPrivateKey. Wartość tego klucza informuje o tym, gdzie jest przechowywany wygenerowany certyfikat. Skopiuj certyfikat do bezpiecznej lokalizacji. Certyfikat zawiera klucz prywatny i certyfikat publiczny, który może być używany w programie az login. Jeśli utracisz dostęp do klucza prywatnego certyfikatu, zresetuj poświadczenia jednostki usługi.

Zawartość pliku PEM można wyświetlić za pomocą edytora tekstów. Oto przykładowy plik PEM:

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

Tworzenie obiektu usługi przy użyciu istniejącego certyfikatu

Utwórz podmiot usługi z istniejącym certyfikatem przy użyciu parametru --cert. Każde narzędzie korzystające z tej jednostki usługi musi mieć dostęp do klucza prywatnego certyfikatu. Certyfikaty powinny być w formacie ASCII, takim jak PEM, CER lub DER. Przekaż certyfikat jako ciąg lub użyj @path formatu, aby załadować certyfikat z pliku. Podczas przekazywania certyfikatu wymagany jest tylko certyfikat publiczny. Aby uzyskać optymalne zabezpieczenia, nie należy uwzględniać klucza prywatnego. Wiersze -----BEGIN CERTIFICATE----- i -----END CERTIFICATE----- są opcjonalne.

# 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

Oto przykładowy plik PEM do przesyłania:

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

Praca z usługą Azure Key Vault

Parametr --keyvault można dodać do tworzenia lub pobierania certyfikatów w usłudze Azure Key Vault. Jeśli używasz parametru --keyvault , --cert parametr jest również wymagany. W tym przykładzie --cert wartość jest nazwą certyfikatu.

# 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

Pobieranie certyfikatu z usługi Azure Key Vault

W przypadku certyfikatu przechowywanego w usłudze Azure Key Vault pobierz certyfikat z jego kluczem prywatnym za pomocą polecenia az keyvault secret show i przekonwertuj go na plik PEM. W usłudze Azure Key Vault nazwa sekretu certyfikatu jest taka sama jak nazwa certyfikatu.

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

Konwertowanie istniejącego pliku PKCS12

Jeśli masz już plik PKCS#12, możesz przekonwertować go na format PEM przy użyciu biblioteki OpenSSL. Jeśli masz hasło, zmień passin argument.

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

Dołącz certyfikat do głównego obiektu usługi

Użyj parametru --append, aby dołączyć certyfikat do istniejącej głównej instancji usługi przy użyciu polecenia az ad sp credential reset. Domyślnie to polecenie czyści wszystkie hasła i klucze, więc należy używać ostrożnie.

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

Dane wyjściowe konsoli:

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"
}

Zaloguj się przy użyciu zasadniczej usługi za pomocą certyfikatu

Aby zalogować się przy użyciu certyfikatu, certyfikat musi być dostępny lokalnie jako plik PEM lub DER w formacie ASCII. Pliki PKCS#12 (.p12/.pfx) nie działają. W przypadku korzystania z pliku PEM klucz PRYWATNY i CERTYFIKAT muszą być dołączane razem w pliku. Nie musisz dodawać prefiksu @ do ścieżki, jak robisz to w przypadku innych poleceń az.

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

Dalsze kroki

Teraz, gdy wiesz już, jak pracować z zasadami usługi przy użyciu certyfikatu, przejdź do kolejnego kroku, aby dowiedzieć się, jak pobrać istniejącą zasadę usługi.