As chaves primárias/secundárias fornecem acesso a todos os recursos administrativos da conta do banco de dados. Chaves primárias/secundárias:
Forneça acesso a contas, bancos de dados, usuários e permissões.
Não pode ser usado para fornecer acesso granular a contêineres e documentos.
São criados durante a criação de uma conta.
Pode ser regenerado a qualquer momento.
Importante
A Microsoft recomenda que você use o fluxo de autenticação mais seguro disponível. O fluxo de autenticação descrito neste procedimento requer um grau muito alto de confiança no aplicativo e acarreta riscos que não estão presentes em outros fluxos. Você só deve usar esse fluxo quando outros fluxos mais seguros, como identidades gerenciadas, não forem viáveis.
Para o Azure Cosmos DB, a autenticação do Microsoft Entra é o mecanismo de autenticação mais seguro disponível. Consulte o guia de segurança apropriado para sua API:
Cada conta consiste em duas chaves: uma chave primária e uma chave secundária. O objetivo das chaves duplas é para que você possa regenerar, ou rolar, chaves, fornecendo acesso contínuo à sua conta e dados.
As chaves primárias/secundárias vêm em duas versões: leitura-gravação e somente leitura. As chaves somente leitura só permitem operações de leitura na conta. Eles não fornecem acesso a recursos de permissões de leitura.
Pré-requisitos
Uma conta existente do Azure Cosmos DB
Obtenha a sua chave primária
A chave primária geralmente pode ser localizada usando o portal do Azure ou por meio da automação.
Este exemplo de modelo Bicep gera todas as credenciais para uma conta existente do 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
}
}
Aviso
Este modelo de Bicep acionará um aviso de linter para Bicep. Idealmente, os modelos Bicep de produção não devem produzir segredos. Esta amostra intencionalmente não suprime este aviso de linter. Para obter mais informações, consulte regra linter - as saídas não devem conter segredos.