Obtención de claves principales, secundarias, de lectura o de lectura y escritura en Azure Cosmos DB
Artículo
SE APLICA A: NoSQL MongoDB Cassandra Gremlin Table
Las claves principal o secundaria proporcionan acceso a todos los recursos administrativos de la cuenta de base de datos. Claves principal o secundaria:
Proporcionan acceso a cuentas, bases de datos, usuarios y permisos.
No se pueden usar para proporcionar acceso pormenorizado a contenedores y documentos.
Se crean durante la creación de una cuenta.
Se pueden regenerar en cualquier momento.
Importante
Microsoft recomienda usar el flujo de autenticación más seguro disponible. El flujo de autenticación que se describe en este procedimiento requiere un alto grado de confianza en la aplicación y conlleva riesgos que no están presentes en otros flujos. Solo debe usar este flujo cuando otros flujos más seguros, como las identidades administradas, no sean viables.
Para Azure Cosmos DB, la autenticación de Microsoft Entra es el mecanismo de autenticación más seguro disponible. Revise la guía de seguridad adecuada para la API:
Cada cuenta consta de dos claves: una principal y una secundaria. El fin de las claves dobles es que pueda regenerar, o distribuir claves, lo que proporciona un acceso continuo a su cuenta y sus datos.
Las claves principal y secundaria se incluyen en dos versiones: de lectura y escritura y de solo lectura. Las claves de solo lectura permiten operaciones de lectura en la cuenta. No proporcionan acceso a los recursos de permisos de lectura.
Requisitos previos
Una cuenta de Azure Cosmos DB existente
Obtención de la clave principal
Normalmente, la clave principal se puede ubicar mediante Azure Portal o mediante la automatización.
En este ejemplo, la plantilla de Bicep genera todas las credenciales de una cuenta de Azure Cosmos DB existente.
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
}
}
Advertencia
Esta plantilla de Bicep desencadenará una advertencia de linter para Bicep. Lo ideal es que las plantillas de Bicep de producción no produzcan secretos. Este ejemplo no suprime intencionadamente esta advertencia de linter. Para obtener más información, consulte linter rule : las salidas no deben contener secretos.