Zarządzanie kluczami konta magazynu za pomocą Key Vault i interfejsu wiersza polecenia platformy AzureManage storage account keys with Key Vault and the Azure CLI

Ważne

Zalecamy korzystanie z integracji usługi Azure Storage z Azure Active Directory (Azure AD), usługą firmy Microsoft do zarządzania tożsamościami i dostępem w chmurze.We recommend using Azure Storage integration with Azure Active Directory (Azure AD), Microsoft's cloud-based identity and access management service. Integracja z usługą Azure AD jest dostępna dla obiektów blob i kolejek platformy Azureoraz zapewnia oparty na tokenach dostęp OAuth2 do usługi Azure Storage (podobnie jak Azure Key Vault).Azure AD integration is available for Azure blobs and queues, and provides OAuth2 token-based access to Azure Storage (just like Azure Key Vault). Usługa Azure AD umożliwia uwierzytelnianie aplikacji klienckiej przy użyciu tożsamości aplikacji lub użytkownika zamiast poświadczeń konta magazynu.Azure AD allows you to authenticate your client application by using an application or user identity, instead of storage account credentials. Tożsamości zarządzanej usługi Azure AD można używać podczas uruchamiania na platformie Azure.You can use an Azure AD managed identity when you run on Azure. Tożsamości zarządzane usuwają potrzebę uwierzytelniania klienta i przechowywania poświadczeń w aplikacji lub z aplikacją.Managed identities remove the need for client authentication and storing credentials in or with your application. Użyj poniższego rozwiązania tylko wtedy, gdy uwierzytelnianie usługi Azure AD nie jest możliwe.Use below solution only when Azure AD authentication is not possible.

Konto usługi Azure Storage używa poświadczeń składających się z nazwy konta i klucza.An Azure storage account uses credentials comprising an account name and a key. Klucz jest generowany automatycznie i służy jako hasło, a nie jako klucz kryptograficzny.The key is auto-generated and serves as a password, rather than an as a cryptographic key. Key Vault zarządza kluczami konta magazynu, okresowo ponownie generując je na koncie magazynu i udostępnia tokeny sygnatury dostępu współdzielone w celu uzyskania delegowanego dostępu do zasobów na koncie magazynu.Key Vault manages storage account keys by periodically regenerating them in storage account and provides shared access signature tokens for delegated access to resources in your storage account.

Za pomocą funkcji Key Vault klucza konta magazynu zarządzanego można wyświetlać (synchronizować) klucze z kontem usługi Azure Storage i okresowo ponownie generować (obracać).You can use the Key Vault managed storage account key feature to list (sync) keys with an Azure storage account, and regenerate (rotate) the keys periodically. Kluczami można zarządzać zarówno dla kont magazynu, jak i klasycznych kont magazynu.You can manage keys for both storage accounts and Classic storage accounts.

W przypadku korzystania z funkcji klucza zarządzanego konta magazynu należy wziąć pod uwagę następujące kwestie:When you use the managed storage account key feature, consider the following points:

  • Wartości klucza nigdy nie są zwracane w odpowiedzi na wywołanie.Key values are never returned in response to a caller.
  • Tylko Key Vault zarządzać kluczami konta magazynu.Only Key Vault should manage your storage account keys. Nie zarządzaj kluczami samodzielnie i unikaj zakłócania Key Vault procesów.Don't manage the keys yourself and avoid interfering with Key Vault processes.
  • Tylko jeden obiekt Key Vault powinien zarządzać kluczami konta magazynu.Only a single Key Vault object should manage storage account keys. Nie zezwalaj na zarządzanie kluczami z wielu obiektów.Don't allow key management from multiple objects.
  • Wygeneruj ponownie klucze tylko Key Vault generuj ponownie.Regenerate keys by using Key Vault only. Nie należy ręcznie ponownie generować kluczy konta magazynu.Don't manually regenerate your storage account keys.

Identyfikator aplikacji jednostki usługiService principal application ID

Dzierżawa usługi Azure AD udostępnia każdej zarejestrowanej aplikacji jednostkę usługi.An Azure AD tenant provides each registered application with a service principal. Jednostką usługi jest identyfikator aplikacji, który jest używany podczas konfigurowania autoryzacji w celu uzyskiwania dostępu do innych zasobów platformy Azure za pośrednictwem kontroli dostępu na poziomie ról platformy Azure.The service principal serves as the Application ID, which is used during authorization setup for access to other Azure resources via Azure RBAC.

Key Vault to aplikacja firmy Microsoft, która jest wstępnie zarejestrowana we wszystkich dzierżawach usługi Azure AD.Key Vault is a Microsoft application that's pre-registered in all Azure AD tenants. Key Vault jest rejestrowany pod tym samym identyfikatorem aplikacji w każdej chmurze platformy Azure.Key Vault is registered under the same Application ID in each Azure cloud.

DzierżawyTenants ChmuraCloud Identyfikator aplikacjiApplication ID
Azure ADAzure AD Azure GovernmentAzure Government 7e7c393b-45d0-48b1-a35e-2905ddf8183c
Azure ADAzure AD Azure — publicznaAzure public cfa8b339-82a2-471a-a3c9-0fc0be7a4093
InneOther DowolneAny cfa8b339-82a2-471a-a3c9-0fc0be7a4093

Wymagania wstępnePrerequisites

Aby ukończyć ten przewodnik, należy najpierw wykonać następujące czynności:To complete this guide, you must first do the following:

Zarządzanie kluczami konta magazynuManage storage account keys

Nawiąż połączenie z kontem platformy AzureConnect to your Azure account

Uwierzytelnij sesję interfejsu wiersza polecenia platformy Azure przy użyciu poleceń az login.Authenticate your Azure CLI session using the az login commands.

az login

Zapewnianie Key Vault dostępu do konta magazynuGive Key Vault access to your storage account

Użyj polecenia az role assignment create interfejsu wiersza polecenia platformy Azure, Key Vault uzyskać dostęp do konta magazynu.Use the Azure CLI az role assignment create command to give Key Vault access your storage account. Podaj następujące wartości parametrów polecenia:Provide the command the following parameter values:

  • --role: przekaż rolę platformy Azure "Rola usługi operatora klucza konta magazynu".--role: Pass the "Storage Account Key Operator Service Role" Azure role. Ta rola ogranicza zakres dostępu do konta magazynu.This role limits the access scope to your storage account. W przypadku klasycznego konta magazynu zamiast tego przekaż "Rolę usługi klasycznego operatora klucza konta magazynu".For a classic storage account, pass "Classic Storage Account Key Operator Service Role" instead.
  • --assignee: przekaż wartość " https://vault.azure.net ", która jest adresem URL Key Vault w chmurze publicznej Platformy Azure.--assignee: Pass the value "https://vault.azure.net", which is the url for Key Vault in the Azure public cloud. (W przypadku chmury usługi Azure Goverment użyj zamiast tego identyfikatora "--asingee-object-id", zobacz Service principal application ID (Identyfikator aplikacji jednostki usługi).(For Azure Goverment cloud use '--asingee-object-id' instead, see Service principal application ID.)
  • --scope: przekaż identyfikator zasobu konta magazynu w postaci /subscriptions/<subscriptionID>/resourceGroups/<StorageAccountResourceGroupName>/providers/Microsoft.Storage/storageAccounts/<YourStorageAccountName> .--scope: Pass your storage account resource ID, which is in the form /subscriptions/<subscriptionID>/resourceGroups/<StorageAccountResourceGroupName>/providers/Microsoft.Storage/storageAccounts/<YourStorageAccountName>. Aby znaleźć identyfikator subskrypcji, użyj polecenia az account list interfejsu wiersza polecenia platformy Azure; Aby znaleźć nazwę konta magazynu i grupę zasobów konta magazynu, użyj polecenia az storage account list interfejsu wiersza polecenia platformy Azure.To find your subscription ID, use the Azure CLI az account list command; to find your storage account name and storage account resource group, use the Azure CLI az storage account list command.
az role assignment create --role "Storage Account Key Operator Service Role" --assignee 'https://vault.azure.net' --scope "/subscriptions/<subscriptionID>/resourceGroups/<StorageAccountResourceGroupName>/providers/Microsoft.Storage/storageAccounts/<YourStorageAccountName>"

Nadaj kontu użytkownika uprawnienia do kont magazynu zarządzanegoGive your user account permission to managed storage accounts

Użyj polecenia cmdlet az keyvault-set-policy interfejsu wiersza polecenia platformy Azure, aby zaktualizować zasady dostępu Key Vault i udzielić uprawnień konta magazynu do konta użytkownika.Use the Azure CLI az keyvault-set-policy cmdlet to update the Key Vault access policy and grant storage account permissions to your user account.

# Give your user principal access to all storage account permissions, on your Key Vault instance

az keyvault set-policy --name <YourKeyVaultName> --upn user@domain.com --storage-permissions get list delete set update regeneratekey getsas listsas deletesas setsas recover backup restore purge

Należy pamiętać, że uprawnienia dla kont magazynu nie są dostępne na stronie "Zasady dostępu" konta magazynu w Azure Portal.Note that permissions for storage accounts aren't available on the storage account "Access policies" page in the Azure portal.

Tworzenie konta Key Vault magazynu zarządzanegoCreate a Key Vault Managed storage account

Utwórz zarządzane Key Vault magazynu za pomocą polecenia az keyvault storage interfejsu wiersza polecenia platformy Azure.Create a Key Vault managed storage account using the Azure CLI az keyvault storage command. Ustaw okres odnawiania na 90 dni.Set a regeneration period of 90 days. Gdy jest czas rotacji, usługa KeyVault ponownie generuje klucz, który nie jest aktywny, a następnie ustawia nowo utworzony klucz jako aktywny.When it is time to rotate, KeyVault regenerates the key that is not active, and then sets the newly created key as active. Tylko jeden z kluczy jest używany do wydawania tokenów SAS w dowolnym momencie. Jest to klucz aktywny.Only one of the keys are used to issue SAS tokens at any one time, this is the active key. Podaj następujące wartości parametrów polecenia:Provide the command the following parameter values:

  • --vault-name: przekaż nazwę magazynu kluczy.--vault-name: Pass the name of your key vault. Aby znaleźć nazwę magazynu kluczy, użyj polecenia az keyvault list interfejsu wiersza polecenia platformy Azure.To find the name of your key vault, use the Azure CLI az keyvault list command.
  • -n: przekaż nazwę konta magazynu.-n: Pass the name of your storage account. Aby znaleźć nazwę konta magazynu, użyj polecenia az storage account list interfejsu wiersza polecenia platformy Azure.To find the name of your storage account, use the Azure CLI az storage account list command.
  • --resource-id: przekaż identyfikator zasobu konta magazynu w postaci /subscriptions/<subscriptionID>/resourceGroups/<StorageAccountResourceGroupName>/providers/Microsoft.Storage/storageAccounts/<YourStorageAccountName> .--resource-id: Pass your storage account resource ID, which is in the form /subscriptions/<subscriptionID>/resourceGroups/<StorageAccountResourceGroupName>/providers/Microsoft.Storage/storageAccounts/<YourStorageAccountName>. Aby znaleźć identyfikator subskrypcji, użyj polecenia az account list interfejsu wiersza polecenia platformy Azure; Aby znaleźć nazwę konta magazynu i grupę zasobów konta magazynu, użyj polecenia az storage account list interfejsu wiersza polecenia platformy Azure.To find your subscription ID, use the Azure CLI az account list command; to find your storage account name and storage account resource group, use the Azure CLI az storage account list command.
az keyvault storage add --vault-name <YourKeyVaultName> -n <YourStorageAccountName> --active-key-name key1 --auto-regenerate-key --regeneration-period P90D --resource-id "/subscriptions/<subscriptionID>/resourceGroups/<StorageAccountResourceGroupName>/providers/Microsoft.Storage/storageAccounts/<YourStorageAccountName>"

Tokeny sygnatury dostępu współdzielonychShared access signature tokens

Możesz również poprosić Key Vault o wygenerowanie tokenów sygnatury dostępu współdzielonych.You can also ask Key Vault to generate shared access signature tokens. Sygnatura dostępu współdzielona zapewnia delegowany dostęp do zasobów na koncie magazynu.A shared access signature provides delegated access to resources in your storage account. Możesz udzielić klientom dostępu do zasobów na koncie magazynu bez udostępniania kluczy konta.You can grant clients access to resources in your storage account without sharing your account keys. Sygnatura dostępu współdzielona zapewnia bezpieczny sposób udostępniania zasobów magazynu bez naruszania kluczy konta.A shared access signature provides you with a secure way to share your storage resources without compromising your account keys.

Polecenia w tej sekcji wykonaj następujące czynności:The commands in this section complete the following actions:

  • Ustaw definicję sygnatury dostępu współdzielonych konta <YourSASDefinitionName> .Set an account shared access signature definition <YourSASDefinitionName>. Definicja jest ustawiana na Key Vault magazynu zarządzanego <YourStorageAccountName> w magazynie <YourKeyVaultName> kluczy.The definition is set on a Key Vault managed storage account <YourStorageAccountName> in your key vault <YourKeyVaultName>.
  • Utwórz token sygnatury dostępu współdzielonych dla usług Blob, File, Table i Queue.Create an account shared access signature token for Blob, File, Table, and Queue services. Token jest tworzony dla typów zasobów Service, Container i Object.The token is created for resource types Service, Container, and Object. Token jest tworzony ze wszystkimi uprawnieniami, za pośrednictwem protokołu HTTPS i z określonymi datami rozpoczęcia i zakończenia.The token is created with all permissions, over https, and with the specified start and end dates.
  • Ustaw Key Vault sygnatury dostępu współdzielonych magazynu zarządzanego w magazynie.Set a Key Vault managed storage shared access signature definition in the vault. Definicja zawiera szablon URI utworzonego tokenu sygnatury dostępu współdzielonych.The definition has the template URI of the shared access signature token that was created. Definicja ma typ sygnatury dostępu współdzielonych account i jest ważna przez N dni.The definition has the shared access signature type account and is valid for N days.
  • Sprawdź, czy sygnatura dostępu współdzielona została zapisana w magazynie kluczy jako klucz tajny.Verify that the shared access signature was saved in your key vault as a secret.

Tworzenie tokenu sygnatury dostępu współdzielonychCreate a shared access signature token

Utwórz definicję sygnatury dostępu współdzielonego za pomocą polecenia az storage account generate-sas interfejsu wiersza polecenia platformy Azure.Create a shared access signature definition using the Azure CLI az storage account generate-sas command. Ta operacja wymaga uprawnień storage setsas i .This operation requires the storage and setsas permissions.

az storage account generate-sas --expiry 2020-01-01 --permissions rw --resource-types sco --services bfqt --https-only --account-name <YourStorageAccountName> --account-key 00000000

Po pomyślnym zakończeniu operacji skopiuj dane wyjściowe.After the operation runs successfully, copy the output.

"se=2020-01-01&sp=***"

Te dane wyjściowe będą przekazywane do --template-uri parametru w następnym kroku.This output will be the passed to the --template-uri parameter in the next step.

Generowanie definicji sygnatury dostępu współdzielonychGenerate a shared access signature definition

Użyj polecenia az keyvault storage sas-definition create interfejsu wiersza polecenia platformy Azure, przekazując dane wyjściowe z poprzedniego kroku do parametru , aby utworzyć definicję sygnatury dostępu --template-uri współdzielonego.Use the the Azure CLI az keyvault storage sas-definition create command, passing the output from the previous step to the --template-uri parameter, to create a shared access signature definition. Możesz podać nazwę dla wybranego -n parametru.You can provide the name of your choice to the -n parameter.

az keyvault storage sas-definition create --vault-name <YourKeyVaultName> --account-name <YourStorageAccountName> -n <YourSASDefinitionName> --validity-period P2D --sas-type account --template-uri <OutputOfSasTokenCreationStep>

Weryfikowanie definicji sygnatury dostępu współdzielonychVerify the shared access signature definition

Możesz sprawdzić, czy definicja sygnatury dostępu współdzielonego została zapisana w magazynie kluczy, używając polecenia az keyvault storage sas-definition show interfejsu wiersza polecenia platformy Azure.You can verify that the shared access signature definition has been stored in your key vault using the Azure CLI az keyvault storage sas-definition show command.

Teraz możesz użyć polecenia az keyvault storage sas-definition show i właściwości , aby wyświetlić id zawartość tego klucza tajnego.You can now use the az keyvault storage sas-definition show command and the id property to view the content of that secret.

az keyvault storage sas-definition show --id https://<YourKeyVaultName>.vault.azure.net/storage/<YourStorageAccountName>/sas/<YourSASDefinitionName>

Następne krokiNext steps