Configurar o controlo de acesso baseado em funções com o Microsoft Entra ID para a conta do Azure Cosmos DB

APLICA-SE A: NoSQL

Nota

Este artigo é sobre controle de acesso baseado em função para operações de plano de dados no Azure Cosmos DB. Se você estiver usando operações de plano de gerenciamento, consulte o artigo Controle de acesso baseado em função aplicado às operações do plano de gerenciamento.

O Azure Cosmos DB expõe um sistema de controle de acesso interno baseado em função que permite:

  • Autentique suas solicitações de dados com uma identidade do Microsoft Entra.
  • Autorize suas solicitações de dados com um modelo de permissão refinado e baseado em funções.

Conceitos

O controle de acesso baseado em função do plano de dados do Azure Cosmos DB é baseado em conceitos que são comumente encontrados em outros sistemas de controle de acesso baseados em função, como o controle de acesso baseado em função do Azure:

  • O modelo de permissão é composto por um conjunto de ações, cada uma dessas ações é mapeada para uma ou várias operações de banco de dados. Alguns exemplos de ações incluem ler um item, escrever um item ou executar uma consulta.
  • Os usuários do Azure Cosmos DB criam definições de função contendo uma lista de ações permitidas.
  • As definições de função são atribuídas a identidades específicas do Microsoft Entra por meio de atribuições de função. Uma atribuição de função também define o escopo ao qual a definição de função se aplica; Atualmente, existem três âmbitos:
    • Uma conta do Azure Cosmos DB,
    • Um banco de dados do Azure Cosmos DB,
    • Um contêiner do Azure Cosmos DB.

Diagram of common role-based access control concepts including role definitions, role assignments, and principals.

Modelo de permissão

Importante

Esse modelo de permissão abrange apenas operações de banco de dados que envolvem leitura e gravação de dados. Não abrange qualquer tipo de operações de gestão de recursos de gestão, incluindo:

  • Criar/substituir/excluir banco de dados
  • Criar/substituir/excluir contêiner
  • Taxa de transferência de contêiner de leitura/substituição
  • Criar/substituir/excluir/ler procedimentos armazenados
  • Criar/substituir/excluir/ler gatilhos
  • Criar/substituir/excluir/ler funções definidas pelo usuário

Não é possível usar nenhum SDK do plano de dados do Azure Cosmos DB para autenticar operações de gerenciamento com uma identidade do Microsoft Entra. Em vez disso, você deve usar o controle de acesso baseado em função do Azure por meio de uma das seguintes opções:

Banco de Dados de Leitura e Contêiner de Leitura são considerados solicitações de metadados. O acesso a estas operações pode ser concedido conforme indicado na secção seguinte.

Esta tabela lista todas as ações expostas pelo modelo de permissão.

Nome Operação(ões) correspondente(s) da base de dados
Microsoft.DocumentDB/databaseAccounts/readMetadata Leia os metadados da conta. Consulte Solicitações de metadados para obter detalhes.
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/create Crie um novo item.
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/read Leia um item individual pelo seu ID e chave de partição (point-read).
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/replace Substitua um item existente.
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/upsert "Upsert" um item. Esta operação cria um item se ainda não existir, ou para substituir o item se ele existir.
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/delete Excluir um item.
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/executeQuery Execute uma consulta SQL.
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/readChangeFeed Leia a partir do feed de alterações do recipiente. Execute consultas SQL usando os SDKs.
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/executeStoredProcedure Execute um procedimento armazenado.
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/manageConflicts Gerencie conflitos para contas de região de várias gravações (ou seja, liste e exclua itens do feed de conflitos).

Nota

Ao executar consultas através dos SDKs, ambas as Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/executeQuery permissões são Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/readChangeFeed necessárias.

Os curingas são suportados nos níveis de contêineres e itens :

  • Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/*
  • Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/*

Pedidos de metadados

Os SDKs do Azure Cosmos DB emitem solicitações de metadados somente leitura durante a inicialização e para atender a solicitações de dados específicas. Essas solicitações buscam vários detalhes de configuração, como:

  • A configuração global da sua conta, que inclui as regiões do Azure em que a conta está disponível.
  • A chave de partição de seus contêineres ou sua política de indexação.
  • A lista de partições físicas que fazem um contêiner e seus endereços.

Eles não buscam nenhum dos dados que você armazenou em sua conta.

Para garantir a melhor transparência do nosso modelo de permissão, essas solicitações de metadados são explicitamente cobertas pela Microsoft.DocumentDB/databaseAccounts/readMetadata ação. Essa ação deve ser permitida em todas as situações em que sua conta do Azure Cosmos DB é acessada por meio de um dos SDKs do Azure Cosmos DB. Ele pode ser atribuído (por meio de uma atribuição de função) em qualquer nível na hierarquia do Azure Cosmos DB (ou seja, conta, banco de dados ou contêiner).

As solicitações de metadados reais permitidas pela Microsoft.DocumentDB/databaseAccounts/readMetadata ação dependem do escopo ao qual a ação é atribuída:

Âmbito Pedidos permitidos pela ação
Conta • Listar as bases de dados sob a conta
• Para cada banco de dados sob a conta, as ações permitidas no escopo do banco de dados
Base de Dados • Leitura de metadados da base de dados
• Listar os contêineres no banco de dados
• Para cada contêiner sob o banco de dados, as ações permitidas no escopo do contêiner
Contentor • Leitura de metadados do recipiente
• Listar divisórias físicas sob o contêiner
• Resolução do endereço de cada partição física

Importante

A taxa de transferência não está incluída nos metadados desta ação.

Definições de função incorporadas

O Azure Cosmos DB expõe duas definições de função internas:

Importante

As definições de função de termo aqui referem-se às definições de função específicas do Azure Cosmos DB. Elas são distintas das definições de função de controle de acesso baseadas em função do Azure.

ID Nome Ações incluídas
00000000-0000-0000-0000-000000000001 Leitor de dados integrado do Cosmos DB Microsoft.DocumentDB/databaseAccounts/readMetadata
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/read
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/executeQuery
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/readChangeFeed
00000000-0000-0000-0000-000000000002 Colaborador de dados integrado do Cosmos DB Microsoft.DocumentDB/databaseAccounts/readMetadata
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/*
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/*

Criar definições de função personalizadas

Ao criar uma definição de função personalizada, você precisa fornecer:

  • O nome da sua conta do Azure Cosmos DB.
  • O grupo de recursos que contém a sua conta.
  • O tipo de definição de função: CustomRole.
  • O nome da definição de função.
  • Uma lista de ações que você deseja que a função permita.
  • Um ou vários âmbitos aos quais a definição de função pode ser atribuída; Os escopos suportados são:
    • / (ao nível da conta),
    • /dbs/<database-name> (ao nível da base de dados),
    • /dbs/<database-name>/colls/<container-name> (ao nível do contentor).

Nota

As operações descritas estão disponíveis em:

Utilizar o Azure PowerShell

Crie uma função chamada MyReadOnlyRole que contenha apenas ações de leitura:

$resourceGroupName = "<myResourceGroup>"
$accountName = "<myCosmosAccount>"
New-AzCosmosDBSqlRoleDefinition -AccountName $accountName `
    -ResourceGroupName $resourceGroupName `
    -Type CustomRole -RoleName MyReadOnlyRole `
    -DataAction @( `
        'Microsoft.DocumentDB/databaseAccounts/readMetadata',
        'Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/read', `
        'Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/executeQuery', `
        'Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/readChangeFeed') `
    -AssignableScope "/"

Crie uma função chamada MyReadWriteRole que contenha todas as ações:

New-AzCosmosDBSqlRoleDefinition -AccountName $accountName `
    -ResourceGroupName $resourceGroupName `
    -Type CustomRole -RoleName MyReadWriteRole `
    -DataAction @( `
        'Microsoft.DocumentDB/databaseAccounts/readMetadata',
        'Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/*', `
        'Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/*') `
    -AssignableScope "/"

Liste as definições de função que você criou para buscar suas IDs:

Get-AzCosmosDBSqlRoleDefinition -AccountName $accountName `
    -ResourceGroupName $resourceGroupName
RoleName         : MyReadWriteRole
Id               : /subscriptions/<mySubscriptionId>/resourceGroups/<myResourceGroup>/providers/Microsoft.DocumentDB/databaseAcc
                   ounts/<myCosmosAccount>/sqlRoleDefinitions/<roleDefinitionId>
Type             : CustomRole
Permissions      : {Microsoft.Azure.Management.CosmosDB.Models.Permission}
AssignableScopes : {/subscriptions/<mySubscriptionId>/resourceGroups/<myResourceGroup>/providers/Microsoft.DocumentDB/databaseAc
                   counts/<myCosmosAccount>}

RoleName         : MyReadOnlyRole
Id               : /subscriptions/<mySubscriptionId>/resourceGroups/<myResourceGroup>/providers/Microsoft.DocumentDB/databaseAcc
                   ounts/<myCosmosAccount>/sqlRoleDefinitions/<roleDefinitionId>
Type             : CustomRole
Permissions      : {Microsoft.Azure.Management.CosmosDB.Models.Permission}
AssignableScopes : {/subscriptions/<mySubscriptionId>/resourceGroups/<myResourceGroup>/providers/Microsoft.DocumentDB/databaseAc
                   counts/<myCosmosAccount>}

Com a CLI do Azure

Crie uma função chamada MyReadOnlyRole que contenha apenas ações de leitura em um arquivo chamado role-definition-ro.json:

{
    "RoleName": "MyReadOnlyRole",
    "Type": "CustomRole",
    "AssignableScopes": ["/"],
    "Permissions": [{
        "DataActions": [
            "Microsoft.DocumentDB/databaseAccounts/readMetadata",
            "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/read",
            "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/executeQuery",
            "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/readChangeFeed"
        ]
    }]
}
resourceGroupName='<myResourceGroup>'
accountName='<myCosmosAccount>'
az cosmosdb sql role definition create --account-name $accountName --resource-group $resourceGroupName --body @role-definition-ro.json

Crie uma função chamada MyReadWriteRole que contenha todas as ações em um arquivo chamado role-definition-rw.json:

{
    "RoleName": "MyReadWriteRole",
    "Type": "CustomRole",
    "AssignableScopes": ["/"],
    "Permissions": [{
        "DataActions": [
            "Microsoft.DocumentDB/databaseAccounts/readMetadata",
            "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/*",
            "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/*"
        ]
    }]
}
az cosmosdb sql role definition create --account-name $accountName --resource-group $resourceGroupName --body @role-definition-rw.json

Liste as definições de função que você criou para buscar suas IDs:

az cosmosdb sql role definition list --account-name $accountName --resource-group $resourceGroupName
[
  {
    "assignableScopes": [
      "/subscriptions/<mySubscriptionId>/resourceGroups/<myResourceGroup>/providers/Microsoft.DocumentDB/databaseAccounts/<myCosmosAccount>"
    ],
    "id": "/subscriptions/<mySubscriptionId>/resourceGroups/<myResourceGroup>/providers/Microsoft.DocumentDB/databaseAccounts/<myCosmosAccount>/sqlRoleDefinitions/<roleDefinitionId>",
    "name": "<roleDefinitionId>",
    "permissions": [
      {
        "dataActions": [
          "Microsoft.DocumentDB/databaseAccounts/readMetadata",
          "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/*",
          "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/*"
        ],
        "notDataActions": []
      }
    ],
    "resourceGroup": "<myResourceGroup>",
    "roleName": "MyReadWriteRole",
    "sqlRoleDefinitionGetResultsType": "CustomRole",
    "type": "Microsoft.DocumentDB/databaseAccounts/sqlRoleDefinitions"
  },
  {
    "assignableScopes": [
      "/subscriptions/<mySubscriptionId>/resourceGroups/<myResourceGroup>/providers/Microsoft.DocumentDB/databaseAccounts/<myCosmosAccount>"
    ],
    "id": "/subscriptions/<mySubscriptionId>/resourceGroups/<myResourceGroup>/providers/Microsoft.DocumentDB/databaseAccounts/<myCosmosAccount>/sqlRoleDefinitions/<roleDefinitionId>",
    "name": "<roleDefinitionId>",
    "permissions": [
      {
        "dataActions": [
          "Microsoft.DocumentDB/databaseAccounts/readMetadata",
          "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/read",
          "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/executeQuery",
          "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/readChangeFeed"
        ],
        "notDataActions": []
      }
    ],
    "resourceGroup": "<myResourceGroup>",
    "roleName": "MyReadOnlyRole",
    "sqlRoleDefinitionGetResultsType": "CustomRole",
    "type": "Microsoft.DocumentDB/databaseAccounts/sqlRoleDefinitions"
  }
]

Utilizar modelos do Azure Resource Manager

Para obter uma referência e exemplos de como usar modelos do Azure Resource Manager para criar definições de função, consulte Microsoft.DocumentDB databaseAccounts/sqlRoleDefinitions.

Criar atribuições de função

Você pode associar definições de função internas ou personalizadas às suas identidades do Microsoft Entra. Ao criar uma atribuição de função, você precisa fornecer:

  • O nome da sua conta do Azure Cosmos DB.

  • O grupo de recursos que contém a sua conta.

  • A ID da definição de função a ser atribuída.

  • A ID principal da identidade à qual a definição de função deve ser atribuída.

  • O âmbito da atribuição de funções; Os escopos suportados são:

    • / (nível da conta)
    • /dbs/<database-name> (ao nível da base de dados)
    • /dbs/<database-name>/colls/<container-name> (ao nível do contentor)

    O escopo deve corresponder ou ser um subescopo de um dos escopos atribuíveis da definição de função.

Nota

Se você quiser criar uma atribuição de função para uma entidade de serviço, certifique-se de usar sua ID de objeto conforme encontrado na seção Aplicativos corporativos da folha do portal Microsoft Entra ID .

Nota

As operações descritas estão disponíveis em:

Utilizar o Azure PowerShell

Atribua uma função a uma identidade:

$resourceGroupName = "<myResourceGroup>"
$accountName = "<myCosmosAccount>"
$readOnlyRoleDefinitionId = "<roleDefinitionId>" # as fetched above
# For Service Principals make sure to use the Object ID as found in the Enterprise applications section of the Azure Active Directory portal blade.
$principalId = "<aadPrincipalId>"
New-AzCosmosDBSqlRoleAssignment -AccountName $accountName `
    -ResourceGroupName $resourceGroupName `
    -RoleDefinitionId $readOnlyRoleDefinitionId `
    -Scope "/" `
    -PrincipalId $principalId

Com a CLI do Azure

Atribua uma função a uma identidade:

resourceGroupName='<myResourceGroup>'
accountName='<myCosmosAccount>'
readOnlyRoleDefinitionId='<roleDefinitionId>' # as fetched above
# For Service Principals make sure to use the Object ID as found in the Enterprise applications section of the Azure Active Directory portal blade.
principalId='<aadPrincipalId>'
az cosmosdb sql role assignment create --account-name $accountName --resource-group $resourceGroupName --scope "/" --principal-id $principalId --role-definition-id $readOnlyRoleDefinitionId

Usando modelos do Bicep/Azure Resource Manager

Para uma atribuição interna usando um modelo Bicep:

resource sqlRoleAssignment 'Microsoft.DocumentDB/databaseAccounts/sqlRoleAssignments@2023-04-15' = {
  name: guid(<roleDefinitionId>, <aadPrincipalId>, <databaseAccountResourceId>)
  parent: databaseAccount
  properties:{
    principalId: <aadPrincipalId>
    roleDefinitionId: '/${subscription().id}/resourceGroups/<databaseAccountResourceGroup>/providers/Microsoft.DocumentDB/databaseAccounts/<myCosmosAccount>/sqlRoleDefinitions/<roleDefinitionId>'
    scope: <databaseAccountResourceId>
  }
}

Para obter uma referência e exemplos de como usar modelos do Azure Resource Manager para criar atribuições de função, consulte Microsoft.DocumentDB databaseAccounts/sqlRoleAssignments.

Inicializar o SDK com o ID do Microsoft Entra

Para usar o controle de acesso baseado em função do Azure Cosmos DB em seu aplicativo, você precisa atualizar a maneira como inicializa o SDK do Azure Cosmos DB. Em vez de passar a chave primária da sua conta, você precisa passar uma instância de uma TokenCredential classe. Esta instância fornece ao SDK do Azure Cosmos DB o contexto necessário para buscar um token do Microsoft Entra em nome da identidade que você deseja usar.

A maneira como você cria uma TokenCredential instância está além do escopo deste artigo. Há muitas maneiras de criar essa instância, dependendo do tipo de identidade do Microsoft Entra que você deseja usar (entidade de usuário, entidade de serviço, grupo, etc.). Mais importante ainda, sua TokenCredential instância deve ser resolvida para a identidade (ID principal) à qual você atribuiu suas funções. Você pode encontrar exemplos de criação de uma TokenCredential classe:

Os exemplos a seguir usam uma entidade de serviço com uma ClientSecretCredential instância.

Em .NET

O controle de acesso baseado em função do Azure Cosmos DB é atualmente suportado no .NET SDK V3.

TokenCredential servicePrincipal = new ClientSecretCredential(
    "<azure-ad-tenant-id>",
    "<client-application-id>",
    "<client-application-secret>");
CosmosClient client = new CosmosClient("<account-endpoint>", servicePrincipal);

Em Java

O controle de acesso baseado em função do Azure Cosmos DB é atualmente suportado no Java SDK V4.

TokenCredential ServicePrincipal = new ClientSecretCredentialBuilder()
    .authorityHost("https://login.microsoftonline.com")
    .tenantId("<azure-ad-tenant-id>")
    .clientId("<client-application-id>")
    .clientSecret("<client-application-secret>")
    .build();
CosmosAsyncClient Client = new CosmosClientBuilder()
    .endpoint("<account-endpoint>")
    .credential(ServicePrincipal)
    .build();

Em JavaScript

O controle de acesso baseado em função do Azure Cosmos DB é atualmente suportado no JavaScript SDK V3.

const servicePrincipal = new ClientSecretCredential(
    "<azure-ad-tenant-id>",
    "<client-application-id>",
    "<client-application-secret>");
const client = new CosmosClient({
    endpoint: "<account-endpoint>",
    aadCredentials: servicePrincipal
});

Em Python

O controle de acesso baseado em função do Azure Cosmos DB é suportado nas versões 4.3.0b4 e superiores do SDK do Python.

aad_credentials = ClientSecretCredential(
    tenant_id="<azure-ad-tenant-id>",
    client_id="<client-application-id>",
    client_secret="<client-application-secret>")
client = CosmosClient("<account-endpoint>", aad_credentials)

Autenticar solicitações na API REST

Ao construir o cabeçalho de autorização da API REST, defina o parâmetro type como Microsoft Entra ID e a assinatura hash (sig) para o token OAuth, conforme mostrado no exemplo a seguir:

type=aad&ver=1.0&sig=<token-from-oauth>

Usar o explorador de dados

Nota

O explorador de dados exposto no portal do Azure ainda não suporta o controlo de acesso baseado na função do Azure Cosmos DB. Para usar sua identidade do Microsoft Entra ao explorar seus dados, você deve usar o Azure Cosmos DB Explorer .

Quando você acessa o Azure Cosmos DB Explorer com o parâmetro de consulta específico ?feature.enableAadDataPlane=true e entra, a seguinte lógica é usada para acessar seus dados:

  1. Uma solicitação para buscar a chave primária da conta é tentada em nome da identidade conectada. Se essa solicitação for bem-sucedida, a chave primária será usada para acessar os dados da conta.
  2. Se a identidade conectada não tiver permissão para buscar a chave primária da conta, essa identidade será usada diretamente para autenticar o acesso aos dados. Nesse modo, a identidade deve ser atribuída com definições de função adequadas para garantir o acesso aos dados.

Pedidos de dados de auditoria

Os logs de diagnóstico são aumentados com informações de identidade e autorização para cada operação de dados ao usar o controle de acesso baseado em função do Azure Cosmos DB. Esse aumento permite que você execute auditorias detalhadas e recupere a identidade do Microsoft Entra usada para cada solicitação de dados enviada à sua conta do Azure Cosmos DB.

Essas informações adicionais fluem na categoria de log DataPlaneRequests e consistem em duas colunas extras:

  • aadPrincipalId_g mostra a ID principal da identidade do Microsoft Entra que foi usada para autenticar a solicitação.
  • aadAppliedRoleAssignmentId_gMostra a atribuição de função que foi honrada ao autorizar a solicitação.

Impondo o controle de acesso baseado em função como o único método de autenticação

Em situações em que você deseja forçar os clientes a se conectarem ao Azure Cosmos DB exclusivamente por meio do controle de acesso baseado em função, você pode desabilitar as chaves primárias/secundárias da conta. Ao fazer isso, qualquer solicitação de entrada usando uma chave primária/secundária ou um token de recurso é rejeitada ativamente.

Utilizar modelos do Azure Resource Manager

Ao criar ou atualizar sua conta do Azure Cosmos DB usando modelos do Azure Resource Manager, defina a disableLocalAuth propriedade como true:

"resources": [
    {
        "type": " Microsoft.DocumentDB/databaseAccounts",
        "properties": {
            "disableLocalAuth": true,
            // ...
        },
        // ...
    },
    // ...
 ]

Limites

  • Você pode criar até 100 definições de função e 2.000 atribuições de função por conta do Azure Cosmos DB.
  • Você só pode atribuir definições de função a identidades do Microsoft Entra pertencentes ao mesmo locatário do Microsoft Entra que sua conta do Azure Cosmos DB.
  • Atualmente, não há suporte para a resolução de grupo do Microsoft Entra para identidades que pertencem a mais de 200 grupos.
  • Atualmente, o token Microsoft Entra é passado como um cabeçalho com cada solicitação individual enviada ao serviço Azure Cosmos DB, aumentando o tamanho geral da carga útil.

Perguntas mais frequentes

Esta seção inclui perguntas frequentes sobre controle de acesso baseado em função e o Azure Cosmos DB.

Quais APIs do Azure Cosmos DB oferecem suporte ao controle de acesso baseado em função do plano de dados?

A partir de agora, apenas a API NoSQL é suportada.

É possível gerir definições de funções e atribuições de funções no portal do Azure?

O suporte do portal do Azure para gerenciamento de funções ainda não está disponível.

Quais SDKs na API do Azure Cosmos DB para NoSQL oferecem suporte ao controle de acesso baseado em função?

Os SDKs .NET V3, Java V4, JavaScript V3 e Python V4.3+ são suportados atualmente.

O token do Microsoft Entra é automaticamente atualizado pelos SDKs do Azure Cosmos DB quando expira?

Sim.

É possível desativar o uso das chaves primárias/secundárias da conta ao usar o controle de acesso baseado em função?

Sim, consulte Impondo controle de acesso baseado em função como o único método de autenticação.

Próximos passos