共用方式為


使用 PowerShell 管理 Azure Stack Hub 中的 金鑰保存庫

本文說明如何使用 PowerShell 在 Azure Stack Hub 中建立和管理密鑰保存庫。 您將瞭解如何使用 金鑰保存庫 PowerShell Cmdlet 來:

  • 建立金鑰保存庫。
  • 儲存和管理密碼編譯密鑰和秘密。
  • 授權使用者或應用程式叫用保存庫中的作業。

注意

本文所述的 金鑰保存庫 PowerShell Cmdlet 是在 Azure PowerShell SDK 中提供。

必要條件

啟用租用戶訂用帳戶以進行 金鑰保存庫 作業

您必須先確定您的租使用者訂用帳戶已啟用保存庫作業,才能對密鑰保存庫發出任何作業。 若要確認金鑰保存庫作業已啟用,請執行下列命令:

Get-AzResourceProvider -ProviderNamespace Microsoft.KeyVault | ft -Autosize

如果您的訂用帳戶已啟用保存庫作業,輸出會顯示 RegistrationState針對密鑰保存庫的所有資源類型註冊

Powershell 中的密鑰保存庫註冊狀態

如果未啟用保存庫作業,請發出下列命令,在您的訂用帳戶中註冊 金鑰保存庫 服務:

Register-AzResourceProvider -ProviderNamespace Microsoft.KeyVault

如果註冊成功,則會傳回下列輸出:

Powershell 中的金鑰保存庫註冊成功

當您叫用金鑰保存庫命令時,可能會收到錯誤,例如「訂用帳戶未註冊為使用命名空間 』Microsoft.KeyVault』」。如果您收到錯誤,請遵循先前的指示,確認您已啟用 金鑰保存庫 資源提供者。

建立金鑰保存庫

建立金鑰保存庫之前,請先建立資源群組,讓與金鑰保存庫相關的所有資源都存在於資源群組中。 使用下列命令來建立新的資源群組:

New-AzResourceGroup -Name "VaultRG" -Location local -verbose -Force

Powershell 中產生的新資源群組

現在,使用下列 Cmdlet 在稍早建立的資源群組中建立密鑰保存庫。 此命令會讀取三個必要參數:資源組名、金鑰保存庫名稱和地理位置。

執行下列命令來建立金鑰儲存庫:

New-AzKeyVault -VaultName "Vault01" -ResourceGroupName "VaultRG" -Location local -verbose

Powershell 中產生的新金鑰保存庫

此命令的輸出會顯示您所建立之金鑰保存庫的屬性。 當應用程式存取此保存庫時,它必須使用 此範例中的 Vault URI 屬性 https://vault01.vault.local.azurestack.external

Active Directory 同盟服務 (AD FS) 部署

在AD FS部署中,您可能會收到下列警告:「未設定存取原則。 使用者或應用程式沒有使用此保存庫的訪問許可權。若要解決此問題,請使用 Set-AzKeyVaultAccessPolicy 命令來設定保存庫的存取原則:

# Obtain the security identifier(SID) of the active directory user
$adUser = Get-ADUser -Filter "Name -eq '{Active directory user name}'"
$objectSID = $adUser.SID.Value

# Set the key vault access policy
Set-AzKeyVaultAccessPolicy -VaultName "{key vault name}" -ResourceGroupName "{resource group name}" -ObjectId "{object SID}" -PermissionsToKeys {permissionsToKeys} -PermissionsToSecrets {permissionsToSecrets} -BypassObjectIdValidation

管理金鑰和秘密

建立保存庫之後,請使用下列步驟在保存庫中建立和管理密鑰和秘密。

建立金鑰

使用 Add-AzureKeyVaultKey Cmdlet 在密鑰保存庫中建立或匯入受軟體保護的密鑰:

Add-AzureKeyVaultKey -VaultName "Vault01" -Name "Key01" -verbose -Destination Software

-Destination參數用來指定金鑰受到軟體保護。 成功建立金鑰時,命令會輸出所建立金鑰的詳細數據。

Powershell 中產生的新金鑰保存庫金鑰

您現在可以使用其 URI 來參考已建立的金鑰。 如果您建立或匯入與現有索引鍵同名的金鑰,原始索引鍵會以新索引鍵中指定的值進行更新。 您可以使用金鑰的版本特定 URI 來存取舊版。 例如:

  • 使用 https://vault10.vault.local.azurestack.external:443/keys/key01 以一律可取得最新版本。
  • 使用 https://vault010.vault.local.azurestack.external:443/keys/key01/d0b36ee2e3d14e9f967b8b6b1d38938a 以取得此特定版本。

取得金鑰

使用 Get-AzureKeyVaultKey Cmdlet 來讀取金鑰及其詳細資料:

Get-AzureKeyVaultKey -VaultName "Vault01" -Name "Key01"

建立密碼

使用 Set-AzureKeyVaultSecret Cmdlet 在保存庫中建立或更新秘密。 如果秘密不存在,就會建立秘密。 如果秘密已經存在,則會建立新版本的密碼:

$secretvalue = ConvertTo-SecureString "User@123" -AsPlainText -Force
Set-AzureKeyVaultSecret -VaultName "Vault01" -Name "Secret01" -SecretValue $secretvalue

在 PowerShell 中建立秘密

取得祕密

使用 Get-AzureKeyVaultSecret Cmdlet 讀取密鑰保存庫中的秘密。 此指令可以傳回秘密的所有或特定版本:

Get-AzureKeyVaultSecret -VaultName "Vault01" -Name "Secret01"

建立金鑰和秘密之後,您可以授權外部應用程式使用這些金鑰和秘密。

授權應用程式使用金鑰或秘密

使用下列 Cmdlet 來授權應用程式存取金鑰保存庫中的金鑰或秘密。

在下列範例中,保存庫名稱為 ContosoKeyVault,而您想要授權的應用程式具有用戶端標識碼 00001111-aaaa-2222-bbbb-3333cccc4444。 若要授權應用程式,請執行下列命令。 您也可以指定 PermissionsToKeys 參數來設定使用者、應用程式或安全組的許可權。

針對設定 Azure Stack Hub 環境的 AD FS 使用 Cmdlet 時,應該提供 BypassObjectIdValidation 參數

Set-AzKeyVaultAccessPolicy -VaultName 'ContosoKeyVault' -ServicePrincipalName 00001111-aaaa-2222-bbbb-3333cccc4444 -PermissionsToKeys decrypt,sign -BypassObjectIdValidation

如果您要授權該相同應用程式讀取儲存庫中的秘密,請執行下列 Cmdlet:

Set-AzKeyVaultAccessPolicy -VaultName 'ContosoKeyVault' -ServicePrincipalName 8f8c4bbd-485b-45fd-98f7-ec6300 -PermissionsToKeys Get -BypassObjectIdValidation

下一步