在 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 规则 - 输出不应包含机密。
相关内容