Tworzenie jednostki usługi platformy Azure za pomocą interfejsu wiersza polecenia platformy Azure

Zautomatyzowane narzędzia korzystające z usług platformy Azure powinny zawsze mieć ograniczone uprawnienia, aby zapewnić bezpieczeństwo zasobów platformy Azure. W związku z tym zamiast logowania aplikacji jako w pełni uprzywilejowany użytkownik platforma Azure oferuje jednostki usługi. Jednostka usługi platformy Azure to tożsamość utworzona do użycia z aplikacjami, hostowanymi usługami i zautomatyzowanymi narzędziami. Ta tożsamość służy do uzyskiwania dostępu do zasobów.

Z tego samouczka dowiesz się, jak wykonywać następujące czynności:

  • Tworzenie jednostki usługi
  • Logowanie przy użyciu jednostki usługi i hasła
  • Logowanie przy użyciu jednostki usługi i certyfikatu
  • Zarządzanie rolami jednostki usługi
  • Tworzenie zasobu platformy Azure przy użyciu jednostki usługi
  • Resetowanie poświadczeń jednostki usługi

Wymagania wstępne

  • W ramach subskrypcji musisz mieć User Access Administrator uprawnienia lub Role Based Access Control Administrator uprawnienia, aby utworzyć jednostkę usługi. Aby uzyskać listę ról dostępnych dla kontroli dostępu opartej na rolach (RBAC) platformy Azure, zobacz Role wbudowane platformy Azure.

Tworzenie jednostki usługi

Użyj polecenia az ad sp create-for-rbac interfejsu wiersza polecenia platformy Azure, aby utworzyć jednostkę usługi. W tym przykładzie nie określono parametru --name , więc nazwa zawierająca sygnaturę czasową jest tworzona automatycznie.

az ad sp create-for-rbac

Konsola wyjściowa:

{
  "appId": "myAppId",
  "displayName": "myServicePrincipalName",
  "password": "myServicePrincipalPassword",
  "tenant": "myTentantId"
}

Jeśli nie przestrzegasz konwencji nazewnictwa zasobów i planujesz utworzyć rolę i zakres nowej jednostki usługi później, az ad sp create-for-rbac polecenie bez parametrów jest akceptowalnym rozwiązaniem. Jednak bez roli i zakresu nowa jednostka usługi nie ma dostępu do zasobów. To po prostu istnieje.

Podczas tworzenia jednostki usługi bez parametrów wykonaj również następujące kroki:

Tworzenie jednostki usługi z rolą i zakresem

Najlepszym rozwiązaniem jest przypisanie określonego --role elementu i --scopes utworzenie jednostki usługi. Wykonaj te kroki:

  1. Określ poprawną rolę.

    Podczas określania roli należy zawsze używać zasady najniższych uprawnień. Na przykład nie należy udzielać uprawnień jednostki contributor usługi do subskrypcji, jeśli jednostka usługi musi uzyskiwać dostęp tylko do usługi Azure Storage w grupie zasobów. Rozważ rolę specjalizalizaną, na przykład współautor danych obiektu blob magazynu. Aby uzyskać pełną listę dostępnych ról w kontroli dostępu opartej na rolach platformy Azure, zobacz Role wbudowane platformy Azure.

  2. Pobierz wartość parametru zakresów.

    Znajdź i skopiuj identyfikator zasobu platformy Azure, do których musi uzyskać dostęp nowa jednostka usługi. Te informacje znajdują się zwykle na stronie Właściwości lub Punkty końcowe witryny Azure Portal dla każdego zasobu. Oto typowe --scopes przykłady, ale polegaj na identyfikatorze zasobu dla rzeczywistego formatu i wartości.

    Zakres Przykład
    Subskrypcja /subscriptions/mySubscriptionID
    Grupa zasobów /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName
    Maszyna wirtualna /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName/providers/Microsoft.Compute/virtualMachines/myVMname
    Usługa plików konta magazynu /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName/providers/Microsoft.Storage/storageAccounts/myStorageAccountName/fileServices/default
    Fabryka danych /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName/providers/Microsoft.DataFactory/factories/myDataFactoryName

    Aby uzyskać więcej przykładów zakresu, zobacz Omówienie zakresu kontroli dostępu opartej na rolach platformy Azure.

  3. Utwórz jednostkę usługi.

    W tym przykładzie zostanie utworzona nowa jednostka usługi o nazwie myServicePrincipalName1 z uprawnieniami czytelnika do wszystkich zasobów w grupie zasobów RG1.

    # Bash script
    az ad sp create-for-rbac --name myServicePrincipalName1 \
                             --role reader \
                             --scopes /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myRG1
    

    Parametr --scopes akceptuje rozdzielaną spacjami listę zakresów. W tym przykładzie zostanie utworzona nowa jednostka usługi o nazwie myServicePrincipalName2 z uprawnieniami czytelnika do wszystkich zasobów w grupie zasobów myRG1. Ta jednostka usługi ma również uprawnienia czytelnika do maszyny wirtualnej myVM znajdującej się w myRG2.

    # Bash script
    az ad sp create-for-rbac --name myServicePrincipalName2 \
                             --role reader \
                             --scopes /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myRG1 /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myRG2/providers/Microsoft.Compute/virtualMachines/myVM
    

Jeśli zdecydujesz, że przyznano ci zbyt mało lub zbyt wiele uprawnień do nowej jednostki usługi, zmień uprawnienia, zarządzając rolami jednostki usługi.

Tworzenie jednostki usługi przy użyciu zmiennych

Jednostkę usługi można również utworzyć przy użyciu zmiennych:

# Bash script
let "randomIdentifier=$RANDOM*$RANDOM"
servicePrincipalName="msdocs-sp-$randomIdentifier"
roleName="azureRoleName"
subscriptionID=$(az account show --query id --output tsv)
# Verify the ID of the active subscription
echo "Using subscription ID $subscriptionID"
resourceGroup="myResourceGroupName"

echo "Creating SP for RBAC with name $servicePrincipalName, with role $roleName and in scopes /subscriptions/$subscriptionID/resourceGroups/$resourceGroup"
az ad sp create-for-rbac --name $servicePrincipalName \
                         --role $roleName \
                         --scopes /subscriptions/$subscriptionID/resourceGroups/$resourceGroup

Aby uzyskać pełną listę właściwości jednostki usługi, użyj polecenia az ad sp list i zobacz Pobieranie istniejącej jednostki usługi.

Ostrzeżenie

Podczas tworzenia jednostki usługi platformy Azure przy użyciu az ad sp create-for-rbac polecenia dane wyjściowe zawierają poświadczenia, które należy chronić. Pamiętaj, aby nie uwzględniać tych poświadczeń w kodzie ani nie ewidencjonować ich w systemie kontroli kodu źródłowego. Alternatywnie rozważ użycie tożsamości zarządzanych , jeśli są dostępne, aby uniknąć konieczności używania poświadczeń.

Następne kroki 

Teraz, gdy wiesz już, jak utworzyć jednostkę usługi platformy Azure, przejdź do następnego kroku, aby dowiedzieć się, jak używać jednostek usługi z uwierzytelnianiem opartym na hasłach.