Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
O Plano de Controle no Azure Cosmos DB é um serviço RESTful que permite executar um conjunto diversificado de operações na conta do Azure Cosmos DB. Ele expõe um modelo de recurso público (por exemplo: banco de dados, conta) e várias operações aos usuários finais para executar ações no modelo de recurso. As operações do plano de controle incluem alterações na conta ou no contêiner do Azure Cosmos DB. Por exemplo, operações como criar uma conta do Azure Cosmos DB, adicionar uma região, atualizar a taxa de transferência, failover de uma região, adicionar uma VNet, etc., são algumas das operações do plano de controlo. Este artigo explica como auditar as operações do plano de controle no Azure Cosmos DB. Você pode executar as operações do plano de controle em contas do Azure Cosmos DB usando a CLI do Azure, o PowerShell ou o portal do Azure, enquanto para contêineres, use a CLI do Azure ou o PowerShell.
Seguem-se alguns exemplos de cenários em que a auditoria das operações do plano de controlo é útil:
Você deseja receber um alerta quando as regras de firewall para sua conta do Azure Cosmos DB forem modificadas. O alerta é necessário para localizar modificações não autorizadas nas regras que regem a segurança de rede da sua conta do Azure Cosmos DB e tomar medidas rápidas.
Você deseja receber um alerta se uma nova região for adicionada ou removida da sua conta do Azure Cosmos DB. Adicionar ou remover regiões tem implicações nos requisitos de faturamento e soberania de dados. Este alerta irá ajudá-lo a detetar uma adição ou remoção acidental de região na sua conta.
Você deseja obter mais detalhes dos logs de diagnóstico sobre o que mudou. Por exemplo, uma VNet foi alterada.
Desativar o acesso de gravação de metadados baseado em chave
Antes de auditar as operações do plano de controlo no Azure Cosmos DB, desative o acesso à escrita de metadados baseado em chaves na sua conta. Quando o acesso de gravação de metadados baseados em chave é desabilitado, os clientes que se conectam à conta do Azure Cosmos DB por meio de chaves de conta são impedidos de acessar a conta. Você pode desabilitar o acesso de gravação definindo a disableKeyBasedMetadataWriteAccess propriedade como true. Depois de definir essa propriedade, as alterações em qualquer recurso podem ocorrer de um usuário com a função e as credenciais adequadas do Azure.
Depois de o disableKeyBasedMetadataWriteAccess estar ativado, se os clientes baseados em SDK executarem operações de criação ou atualização, será retornado um erro "A operação 'POST' no recurso 'ContainerNameorDatabaseName' não é permitida através do ponto final do Azure Cosmos DB. Tem de ativar o acesso a essas operações para a sua conta ou executar as operações de criação/atualização através do Azure Resource Manager, CLI do Azure ou Azure PowerShell. Para reverter, defina disableKeyBasedMetadataWriteAccess como false usando a CLI do Azure. Certifique-se de alterar o valor de disableKeyBasedMetadataWriteAccess para false em vez de true.
Considere os seguintes pontos ao desativar o acesso de gravação de metadados:
Avalie e certifique-se de que seus aplicativos não façam chamadas de metadados que alterem os recursos acima (por exemplo, criar coleção, atualizar a taxa de transferência, ...) usando o SDK ou as chaves de conta.
Quando
disableKeyBasedMetadataWriteAccessdefinido como true, as operações de metadados emitidas pelo SDK são bloqueadas. Como alternativa, você pode usar implantações de modelo do portal do Azure, CLI do Azure, Azure PowerShell ou Azure Resource Manager para executar essas operações.
Habilitar logs de diagnóstico para operações do plano de controle
Você pode habilitar logs de diagnóstico para operações de plano de controle usando o portal do Azure. Depois de ativar, os logs de diagnóstico registrarão a operação como um par de eventos iniciais e completos com detalhes relevantes. Por exemplo, RegionFailoverStart e RegionFailoverComplete concluirão o evento de failover de região.
Use as seguintes etapas para ativar o registo de logs nas operações do plano de controlo:
Entre no portal do Azure e navegue até sua conta do Azure Cosmos DB.
Abra o painel Configurações de diagnóstico , forneça um Nome para os logs a serem criados.
Selecione ControlPlaneRequests para o tipo de log e selecione a opção Enviar para o Log Analytics .
Opcionalmente, envie os logs de diagnóstico para o Armazenamento do Azure, Hubs de Eventos do Azure, Azure Monitor ou terceiros.
Você também pode armazenar os logs em uma conta de armazenamento ou transmitir para um hub de eventos. Este artigo mostra como enviar logs para Análise de Registos e, em seguida, consultá-los. Depois de ativar, leva alguns minutos para que os logs de diagnóstico entrem em vigor. Todas as operações do plano de controle realizadas após esse ponto podem ser rastreadas. A captura de tela a seguir mostra como habilitar logs de plano de controle:
Ver as operações do plano de controlo
Depois de ativar o registo, utilize os seguintes passos para controlar as operações de uma conta específica:
Inicie sessão no portal Azure.
Abra o separador Monitor na navegação do lado esquerdo e selecione o painel Logs. Ele abre uma interface do usuário onde você pode facilmente executar consultas com essa conta específica no escopo. Execute a seguinte consulta para exibir logs de plano de controle:
AzureDiagnostics | where ResourceProvider=="MICROSOFT.DOCUMENTDB" and Category=="ControlPlaneRequests" | where TimeGenerated >= ago(1h)As capturas de tela a seguir capturam logs quando um nível de consistência é alterado para uma conta do Azure Cosmos DB. O
activityId_gvalor dos resultados é diferente do ID da atividade de uma operação:
As capturas de ecrã a seguir registam logs quando o keyspace ou uma tabela de uma conta Cassandra são criados e quando a largura de banda é atualizada. Os logs do plano de controle para operações de criação e atualização no banco de dados e no contêiner são registrados separadamente, conforme mostrado na captura de tela a seguir:
Identificar a identidade associada a uma operação específica
Se quiser depurar mais, você pode identificar uma operação específica no log de atividades usando o activityId_g ou pelo carimbo de data/hora da operação. O carimbo de data/hora é usado para alguns clientes do Resource Manager em que o ID da atividade não é passado explicitamente. O log de atividades fornece detalhes sobre a identidade com a qual a operação foi iniciada. A captura de tela a seguir mostra como usar o activityId_g para localizar as operações associadas a ele no log de atividades:
Operações do plano de controlo para uma conta do Azure Cosmos DB
A seguir estão as operações do plano de controle disponíveis no nível da conta. A maioria das operações é rastreada no nível da conta. Estas operações estão disponíveis como métricas no Azure monitor:
- Região adicionada
- Região removida
- Conta excluída
- Região com falha
- Conta criada
- Rede virtual excluída
- Configurações de rede da conta atualizadas
- Configurações de replicação de conta atualizadas
- Chaves de conta atualizadas
- Configurações de backup de conta atualizadas
- Configurações de diagnóstico de conta atualizadas
Operações do plano de gestão para bases de dados ou contêineres
A seguir estão as operações do plano de controle disponíveis no nível do banco de dados e do contêiner. Estas operações estão disponíveis como métricas no Azure monitor:
- Banco de dados SQL criado
- Banco de dados SQL atualizado
- Taxa de transferência atualizada do banco de dados SQL
- Banco de dados SQL excluído
- Contêiner SQL criado
- Contêiner SQL atualizado
- Atualização do Throughput do Container SQL
- Contêiner SQL excluído
- Espaço de Chave Cassandra Criado
- Keyspace de Cassandra Atualizado
- Taxa de transferência do Cassandra Keyspace atualizada
- O Keyspace Cassandra foi excluído
- Tabela Cassandra criada
- Tabela Cassandra Atualizada
- Capacidade de transmissão da tabela Cassandra foi atualizada
- Tabela Cassandra Suprimida
- Banco de dados Gremlin criado
- Banco de dados Gremlin atualizado
- Taxa de transferência do banco de dados Gremlin atualizada
- Banco de dados Gremlin excluído
- Gráfico de Gremlin criado
- Gráfico Gremlin atualizado
- Taxa de transferência do gráfico Gremlin atualizada
- Gráfico de Gremlin excluído
- Banco de dados Mongo criado
- Base de Dados Mongo Atualizada
- Taxa de transferência do banco de dados Mongo atualizada
- Banco de dados Mongo excluído
- Coleção MongoDB Criada
- Coleção Mongo Atualizada
- Desempenho da coleção Mongo atualizado
- Coleção Mongo Eliminada
- Tabela AzureTable criada
- Tabela AzureTable atualizada
- Capacidade de processamento da tabela AzureTable atualizada
- Tabela AzureTable excluída
Operações de log de diagnóstico
A seguir estão os nomes de operação em logs de diagnóstico para diferentes operações:
- RegiãoAdicionarInício, RegiãoAdicionarConcluir
- RegionRemoveStart, RegionRemoveComplete
- ContaEliminarIniciar, ContaEliminarCompleta
- RegionFailoverStart, RegiãoFailoverComplete
- ContaCriarIniciar, ContaCriarConcluído
- ContaAtualizarIniciar, ContaAtualizarCompletar
- VirtualNetworkDeleteStart, VirtualNetworkDeleteComplete
- Início da atualização do registo de diagnóstico, Conclusão da atualização do registo de diagnóstico
Para operações específicas da API, a operação é nomeada com o seguinte formato:
- ApiKind + ApiKindResourceType + OperationType
- ApiKind + ApiKindResourceType + "Taxa de transferência" + operationType
Example
- CriarEspaçosDeChaveCassandra
- CassandraKeyspacesUpdate
- CassandraKeyspacesThroughputUpdate
- Atualização de Contêineres SQL
A propriedade ResourceDetails contém todo o corpo do recurso como uma carga útil de solicitação e contém todas as propriedades solicitadas para atualização
Consultas de log de diagnóstico para operações do plano de controle
Seguem-se alguns exemplos para obter registos de diagnóstico para operações do plano de controlo:
AzureDiagnostics
| where Category startswith "ControlPlane"
| where OperationName contains "Update"
| project httpstatusCode_s, statusCode_s, OperationName, resourceDetails_s, activityId_g
AzureDiagnostics
| where Category =="ControlPlaneRequests"
| where TimeGenerated >= todatetime('2020-05-14T17:37:09.563Z')
| project TimeGenerated, OperationName, apiKind_s, apiKindResourceType_s, operationType_s, resourceDetails_s
AzureDiagnostics
| where Category == "ControlPlaneRequests"
| where OperationName startswith "SqlContainersUpdate"
AzureDiagnostics
| where Category == "ControlPlaneRequests"
| where OperationName startswith "SqlContainersThroughputUpdate"
Consulta para obter o ID da atividade e o chamador que iniciou a operação de eliminação do contentor:
(AzureDiagnostics
| where Category == "ControlPlaneRequests"
| where OperationName == "SqlContainersDelete"
| where TimeGenerated >= todatetime('9/3/2020, 5:30:29.300 PM')
| summarize by activityId_g )
| join (
AzureActivity
| parse HTTPRequest with * "clientRequestId\": \"" activityId_g "\"" *
| summarize by Caller, HTTPRequest, activityId_g)
on activityId_g
| project Caller, activityId_g
Consulta para obter atualizações de índice ou TTL. Em seguida, você pode comparar a saída dessa consulta com uma atualização anterior para ver a alteração no índice ou ttl.
AzureDiagnostics
| where Category =="ControlPlaneRequests"
| where OperationName == "SqlContainersUpdate"
| project resourceDetails_s
output:
{id:skewed,indexingPolicy:{automatic:true,indexingMode:consistent,includedPaths:[{path:/*,indexes:[]}],excludedPaths:[{path:/_etag/?}],compositeIndexes:[],spatialIndexes:[]},partitionKey:{paths:[/pk],kind:Hash},defaultTtl:1000000,uniqueKeyPolicy:{uniqueKeys:[]},conflictResolutionPolicy:{mode:LastWriterWins,conflictResolutionPath:/_ts,conflictResolutionProcedure:}