在 Azure Cosmos DB 中取得主要、次要、讀取或讀寫密鑰
適用於:NoSQL MongoDB Cassandra Gremlin 桌子
主要/次要金鑰可讓資料庫帳戶存取所有系統管理資源。 主要/次要金鑰:
- 允許存取帳戶、資料庫、使用者和權限。
- 無法用來提供容器和文件的更細微的存取權。
- 在帳戶建立期間建立。
- 可隨時重新產生。
重要
Microsoft 建議您使用最安全的可用驗證流程。 這個程序描述的驗證流程需要在應用程式中具備極高的信任度,且伴隨著其他流程並未面臨的風險。 請僅在其他較安全的流程 (例如受控身分識別) 皆不具可行性的情況下,才使用這個流程。
對於 Azure Cosmos DB,Microsoft Entra 驗證是可用的最安全驗證機制。 檢閱 API 的適當安全性指南:
每個帳戶都包含兩個金鑰:主要金鑰和次要金鑰。 雙重金鑰的目的是讓您可以重新產生或輸替金鑰,以持續存取您的帳戶和資料。
主要/次要金鑰有兩個版本:讀寫和唯讀。 唯讀金鑰只允許帳戶上的讀取作業。 不提供存取權來讀取權限資源。
必要條件
取得主鍵
主要金鑰通常可以使用 Azure 入口網站 或透過自動化來找到。
使用 Azure 入口網站 來取得四個內建金鑰的其中一個:
登入 Azure 入口網站 (https://portal.azure.com)。
導覽至現有的 Azure Cosmos DB 帳戶。
在帳戶資源窗格中,從服務功能表的 [設定] 區段中選取 [金鑰]。
在 [讀寫金鑰] 或 [只讀] 區段中,找出並記錄 [主鍵] 或 [次要密鑰] 字段的值。
提示
您可能需要先顯示索引鍵,再錄製其值。 根據預設,會隱藏索引鍵。
使用此 Azure CLI 腳本可從 Azure Cosmos DB 帳戶取得金鑰或 連接字串。
az cosmosdb keys list \
--resource-group "<name-of-existing-resource-group>" \
--name "<name-of-existing-account>" \
--type "keys"
警告
Azure CLI 會轉譯警告,指出您的秘密可能會危害帳戶的安全性。
--type
自變數選項包括:
connection-strings
keys
read-only-keys
如需詳細資訊,請參閱az cosmosdb keys list
。
使用此 Azure PowerShell 腳本可從 Azure Cosmos DB 帳戶取得密鑰或 連接字串。
$parameters = @{
ResourceGroupName = "<name-of-existing-resource-group>"
Name = "<name-of-existing-account>"
Type = "Keys"
}
Get-AzCosmosDBAccountKey @parameters
Type
參數選項包括:
ConnectionStrings
Keys
ReadOnlyKeys
如需詳細資訊,請參閱Get-AzCosmosDBAccountKey
。
此範例 Bicep 範本會輸出現有 Azure Cosmos DB 帳戶的所有認證。
metadata description = 'Gets all keys and connection strings for an Azure Cosmos DB account.'
@description('The name of the Azure Cosmos DB account.')
param accountName string
resource account 'Microsoft.DocumentDB/databaseAccounts@2024-05-15' existing = {
name: accountName
}
output endpoint string = account.properties.documentEndpoint
var keys = account.listKeys()
output keys object = {
primary: {
readWrite: keys.primaryMasterKey
readOnly: keys.primaryReadonlyMasterKey
}
secondary: {
readWrite: keys.secondaryMasterKey
readOnly: keys.secondaryReadonlyMasterKey
}
}
var connectionStrings = account.listConnectionStrings()
output connectionStrings object = {
primary: {
readWrite: connectionStrings.connectionStrings[0].connectionString
readOnly: connectionStrings.connectionStrings[1].connectionString
}
secondary: {
readWrite: connectionStrings.connectionStrings[2].connectionString
readOnly: connectionStrings.connectionStrings[3].connectionString
}
}
警告
此 Bicep 範本會觸發 Bicep 的 linter 警告。 在理想情況下,生產 Bicep 範本不應該輸出秘密。 此範例刻意不會抑制此linter警告。 如需詳細資訊,請參閱 linter規則 - 輸出不應包含秘密。
相關內容