As chaves primária/secundária fornecem acesso a todos os recursos administrativos para a conta de banco de dados. Chaves primária/secundária:
Fornecem acesso a contas, a bancos de dados, a usuários e a permissões.
Não pode ser usado para fornecer acesso granular a contêineres e documentos.
São criadas durante a criação de uma conta.
Podem ser geradas novamente a qualquer momento.
Importante
A Microsoft recomenda usar o fluxo de autenticação mais seguro disponível. O fluxo de autenticação descrito neste procedimento exige um grau muito alto de confiança no aplicativo e traz 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. Revise o guia de segurança apropriado para sua API:
Cada conta consiste em duas chaves: uma chave primária e uma chave secundária. A finalidade das chaves duplas é para que você possa regenerar ou rolar chaves, fornecendo acesso contínuo à sua conta e dados.
As chaves primária/secundária vêm em duas versões: leitura/gravação e somente leitura. As chaves somente leitura permitem operações de leitura na conta. Eles não fornecem acesso aos recursos de permissões de leitura.
Pré-requisitos
Uma conta existente do Azure Cosmos DB
Obter sua chave primária
A chave primária geralmente pode ser localizada usando o portal do Azure ou por meio da automação.
Este modelo Bicep de exemplo gera todas as credenciais de 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
Esse modelo Bicep disparará um aviso de linter para Bicep. Idealmente, os modelos Bicep de produção não devem gerar segredos. Este exemplo intencionalmente não suprime esse aviso de linter. Para obter mais informações, consulte regra linter - as saídas não devem conter segredos.