Translated ['src/pentesting-cloud/azure-security/az-privilege-escalation

This commit is contained in:
Translator
2025-02-20 00:39:57 +00:00
parent 980a4a8051
commit 5854da2c03
9 changed files with 240 additions and 137 deletions

View File

@@ -11,7 +11,7 @@ Para mais informações sobre SQL Database, consulte:
### `Microsoft.DBforMySQL/flexibleServers/read` && `Microsoft.DBforMySQL/flexibleServers/write`
Com esta permissão, você pode criar, atualizar ou excluir instâncias de MySQL Flexible Server no Azure. Isso inclui provisionar novos servidores, modificar configurações de servidores existentes ou descomissionar servidores.
Com esta permissão, você pode criar, atualizar ou excluir instâncias do MySQL Flexible Server no Azure. Isso inclui provisionar novos servidores, modificar configurações de servidores existentes ou descomissionar servidores.
```bash
az mysql flexible-server create \
--name <ServerName> \
@@ -31,13 +31,23 @@ az mysql flexible-server update \
--name <server_name> \
--admin-password <password_to_update>
```
Além disso, é necessário ter o acesso público habilitado se você quiser acessar a partir de um endpoint não privado, para habilitá-lo:
Além disso, é necessário ter o acesso público habilitado se você quiser acessar a partir de um endpoint não privado. Para habilitá-lo:
```bash
az mysql flexible-server update --resource-group <resource_group_name> --server-name <server_name> --public-access Enabled
```
### `Microsoft.DBforMySQL/flexibleServers/read`, `Microsoft.DBforMySQL/flexibleServers/write`, `Microsoft.DBforMySQL/flexibleServers/backups/read`, `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action`
Com essas permissões, você pode restaurar um servidor MySQL a partir de um backup:
```bash
az mysql flexible-server restore \
--resource-group <resource_group_name> \
--name <restore_server_name> \
--source-server <server_name> \
--yes
```
### `Microsoft.DBforMySQL/flexibleServers/read`, `Microsoft.DBforMySQL/flexibleServers/write`, `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action`, `Microsoft.DBforMySQL/flexibleServers/administrators/write` && `Microsoft.DBforMySQL/flexibleServers/administrators/read`
Com esta permissão, você pode configurar administradores do Azure Active Directory (AD) para um Servidor Flexível MySQL. Isso pode ser explorado configurando-se ou configurando outra conta como o administrador do AD, concedendo controle administrativo total sobre o servidor MySQL. É importante que o servidor flexível tenha identidades gerenciadas atribuídas a um usuário para serem utilizadas.
Com esta permissão, você pode configurar administradores do Azure Active Directory (AD) para um MySQL Flexible Server. Isso pode ser explorado configurando-se ou configurando outra conta como o administrador do AD, concedendo controle administrativo total sobre o servidor MySQL. É importante que o flexible-server tenha identidades gerenciadas atribuídas a um usuário para uso.
```bash
az mysql flexible-server ad-admin create \
--resource-group <ResourceGroupName> \

View File

@@ -30,14 +30,60 @@ az postgres flexible-server update \
--resource-group <resource_group_name> \
--name <server_name> \
--admin-password <password_to_update>
```
Além disso, com as permissões, você pode habilitar a identidade atribuída, operando com a identidade gerenciada anexada ao servidor. Aqui você pode encontrar todas as extensões que o Azure PostgreSQL flexible server suporta [https://learn.microsoft.com/en-us/azure/cosmos-db/postgresql/reference-extensions](https://learn.microsoft.com/en-us/azure/cosmos-db/postgresql/reference-extensions). Para poder usar essas extensões, alguns parâmetros do servidor (azure.extensions) precisam ser alterados. Por exemplo, aqui com uma identidade gerenciada que pode acessar o Azure Storage:
Primeiro, alteramos os parâmetros e garantimos que a identidade atribuída esteja habilitada:
```bash
az postgres flexible-server parameter set \
--resource-group <YourResourceGroupName> \
--server-name <YourServerName> \
--name azure.extensions \
--value "AZURE_STORAGE"
az postgres flexible-server identity update \
--resource-group <YourResourceGroupName> \
--server-name <YourServerName> \
--system-assigned Enabled
```
```sql
CREATE EXTENSION IF NOT EXISTS azure_storage;
CREATE EXTERNAL DATA SOURCE ManagedIdentity
SELECT azure_storage.account_add('<storage-account>', '<storage-key>');
SELECT *
FROM azure_storage.blob_get(
'<storage-account>',
'<container>',
'message.txt',
decoder := 'text'
) AS t(content text)
LIMIT 1;
```
Além disso, é necessário ter o acesso público habilitado se você quiser acessar a partir de um endpoint não privado, para habilitá-lo:
```bash
az postgres flexible-server update --resource-group <resource_group_name> --server-name <server_name> --public-access Enabled
```
### `Microsoft.DBforPostgreSQL/flexibleServers/read`, `Microsoft.DBforPostgreSQL/flexibleServers/write`, `Microsoft.DBforPostgreSQL/flexibleServers/backups/read`, `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action`
Com essas permissões, você pode restaurar um servidor a partir de um backup com:
```bash
az postgres flexible-server restore \
--resource-group <RESOURCE_GROUP> \
--name <NEW_SERVER_NAME> \
--source-server <SOURCE_SERVER_NAME> \
--restore-time "<ISO8601_TIMESTAMP>" \
--yes
```
### `Microsoft.DBforPostgreSQL/flexibleServers/read`, `Microsoft.DBforPostgreSQL/flexibleServers/write`, `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action`, `Microsoft.DBforPostgreSQL/flexibleServers/administrators/write` && `Microsoft.DBforPostgreSQL/flexibleServers/administrators/read`
Com esta permissão, você pode configurar administradores do Azure Active Directory (AD) para um Servidor Flexível PostgreSQL. Isso pode ser explorado configurando-se ou configurando outra conta como o administrador do AD, concedendo controle administrativo total sobre o servidor PostgreSQL. A atualização de um principal existente ainda não é suportada, então, se houver um criado, você deve excluí-lo primeiro.
Com essa permissão, você pode configurar administradores do Azure Active Directory (AD) para um Servidor Flexível PostgreSQL. Isso pode ser explorado configurando-se ou configurando outra conta como administrador do AD, concedendo controle administrativo total sobre o servidor PostgreSQL. A atualização de um principal existente ainda não é suportada, então, se houver um criado, você deve excluí-lo primeiro.
É importante que o servidor flexível tenha identidades gerenciadas atribuídas a um usuário para uso.
```bash

View File

@@ -12,7 +12,7 @@ Para mais informações sobre SQL Database, consulte:
### `Microsoft.Sql/servers/read` && `Microsoft.Sql/servers/write`
Com essas permissões, um usuário pode realizar escalonamento de privilégios ao atualizar ou criar servidores Azure SQL e modificar configurações críticas, incluindo credenciais administrativas. Essa permissão permite que o usuário atualize propriedades do servidor, incluindo a senha do administrador do SQL Server, possibilitando acesso não autorizado ou controle sobre o servidor. Eles também podem criar novos servidores, potencialmente introduzindo infraestrutura sombra para fins maliciosos. Isso se torna particularmente crítico em ambientes onde "Microsoft Entra Authentication Only" está desativado, pois podem explorar a autenticação baseada em SQL para obter acesso irrestrito.
Com essas permissões, um usuário pode realizar escalonamento de privilégios ao atualizar ou criar servidores Azure SQL e modificar configurações críticas, incluindo credenciais administrativas. Essa permissão permite que o usuário atualize propriedades do servidor, incluindo a senha do administrador do SQL Server, possibilitando acesso ou controle não autorizado sobre o servidor. Eles também podem criar novos servidores, potencialmente introduzindo infraestrutura sombra para fins maliciosos. Isso se torna particularmente crítico em ambientes onde "Microsoft Entra Authentication Only" está desativado, pois podem explorar a autenticação baseada em SQL para obter acesso irrestrito.
```bash
# Change the server password
az sql server update \
@@ -44,6 +44,11 @@ az sql server update \
```
```sql
CREATE DATABASE SCOPED CREDENTIAL [ManagedIdentityCredential]
WITH IDENTITY = 'Managed Identity';
GO
CREATE EXTERNAL DATA SOURCE ManagedIdentity
WITH (
TYPE = BLOB_STORAGE,
@@ -81,7 +86,7 @@ az sql server firewall-rule update \
--end-ip-address <new-end-ip-address>
```
Além disso, a permissão `Microsoft.Sql/servers/outboundFirewallRules/delete` permite que você exclua uma Regra de Firewall.
NOTA: É necessário ter o acesso público habilitado.
NOTA: É necessário ter o acesso público habilitado
### `Microsoft.Sql/servers/ipv6FirewallRules/write`
@@ -109,7 +114,7 @@ az sql server ad-admin create \
```
### `Microsoft.Sql/servers/azureADOnlyAuthentications/write` && `Microsoft.Sql/servers/azureADOnlyAuthentications/read`
Com essas permissões, você pode configurar e impor "Autenticação Somente do Microsoft Entra" em um Azure SQL Server, o que pode facilitar a escalada de privilégios em certos cenários. Um atacante ou um usuário autorizado com essas permissões pode habilitar ou desabilitar a autenticação somente do Azure AD.
Com essas permissões, você pode configurar e impor "Autenticação Apenas do Microsoft Entra" em um Azure SQL Server, o que pode facilitar a escalada de privilégios em certos cenários. Um atacante ou um usuário autorizado com essas permissões pode habilitar ou desabilitar a autenticação apenas do Azure AD.
```bash
#Enable
az sql server azure-ad-only-auth enable \
@@ -121,4 +126,20 @@ az sql server azure-ad-only-auth disable \
--server <server_name> \
--resource-group <resource_group_name>
```
### Microsoft.Sql/servers/databases/dataMaskingPolicies/write
Modifique (ou desative) as políticas de mascaramento de dados em seus bancos de dados SQL.
```bash
az rest --method put \
--uri "https://management.azure.com/subscriptions/<your-subscription-id>/resourceGroups/<your-resource-group>/providers/Microsoft.Sql/servers/<your-server>/databases/<your-database>/dataMaskingPolicies/Default?api-version=2021-11-01" \
--body '{
"properties": {
"dataMaskingState": "Disable"
}
}'
```
### Remover Segurança em Nível de Linha
Se você fizer login como admin, pode remover as políticas do próprio admin e de outros usuários.
```sql
DROP SECURITY POLICY [Name_of_policy];
```
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -10,7 +10,9 @@ Azure Cosmos DB fornece várias APIs de banco de dados para modelar dados do mun
Um aspecto chave do CosmosDB é a Conta do Azure Cosmos. **Conta do Azure Cosmos** atua como o ponto de entrada para os bancos de dados. A conta determina configurações principais, como distribuição global, níveis de consistência e a API específica a ser usada, como NoSQL. Através da conta, você pode configurar a replicação global para garantir que os dados estejam disponíveis em várias regiões para acesso de baixa latência. Além disso, você pode escolher um nível de consistência que equilibre desempenho e precisão dos dados, com opções que variam de Consistência Forte a Consistência Eventual.
### NoSQL (sql)
Azure Cosmos DB suporta **identidades atribuídas pelo usuário** e **identidades gerenciadas atribuídas pelo sistema** que são criadas automaticamente e vinculadas ao ciclo de vida do recurso, permitindo autenticação segura baseada em token ao se conectar a outros serviços—desde que esses serviços tenham as atribuições de função apropriadas. No entanto, o Cosmos DB não possui um mecanismo embutido para consultar diretamente fontes de dados externas, como o Azure Blob Storage. Ao contrário dos recursos de tabela externa do SQL Server, o Cosmos DB requer que os dados sejam ingeridos em seus contêineres usando ferramentas externas, como Azure Data Factory, o Data Migration Tool ou scripts personalizados, antes que possam ser consultados com suas capacidades de consulta nativas.
### NoSQL
A API NoSQL do Azure Cosmos DB é uma API baseada em documentos que usa JSON como seu formato de dados. Ela fornece uma sintaxe de consulta semelhante ao SQL para consultar objetos JSON, tornando-a adequada para trabalhar com dados estruturados e semi-estruturados. O endpoint do serviço é:
```bash
https://<Account-Name>.documents.azure.com:443/
@@ -21,6 +23,12 @@ Dentro de uma conta, você pode criar um ou mais bancos de dados, que servem com
#### Contêineres
A unidade central de armazenamento de dados é o contêiner, que contém documentos JSON e é automaticamente indexado para consultas eficientes. Os contêineres são escaláveis de forma elástica e distribuídos entre partições, que são determinadas por uma chave de partição definida pelo usuário. A chave de partição é crítica para garantir desempenho ideal e distribuição uniforme de dados. Por exemplo, um contêiner pode armazenar dados de clientes, com "customerId" como a chave de partição.
#### Principais Recursos
**Distribuição Global**: Ative ou desative a Geo-Redundância para replicação entre regiões e Escritas em Múltiplas Regiões para melhor disponibilidade.
**Rede & Segurança**: entre pontos de extremidade públicos (todas/seletivas) ou privados para conectividade. Conexões seguras com criptografia TLS 1.2. Suporta CORS (Cross-Origin Resource Sharing) para acesso controlado a recursos.
**Backup & Recuperação**: de políticas de backup Periódicas, Contínuas (7 dias) ou Contínuas (30 dias) com intervalos e retenção configuráveis.
**Criptografia de Dados**: Chaves gerenciadas pelo serviço por padrão ou chaves gerenciadas pelo cliente (CMK) para criptografia (a seleção de CMK é irreversível).
#### Enumeração
{{#tabs }}
@@ -42,21 +50,21 @@ az cosmosdb identity show --resource-group <ResourceGroupName> --name <AccountNa
# CosmoDB (NoSQL)
## List the SQL databases under an Azure Cosmos DB account.
## List the NoSQL databases under an Azure Cosmos DB account.
az cosmosdb sql database list --resource-group <ResourceGroupName> --account-name <AccountName>
## List the SQL containers under an Azure Cosmos DB SQL database.
## List the NoSQL containers under an Azure Cosmos DB NoSQL database.
az cosmosdb sql container list --account-name <AccountName> --database-name <DatabaseName> --resource-group <ResourceGroupName>
## List all SQL role assignments under an Azure Cosmos DB
## List all NoSQL role assignments under an Azure Cosmos DB
az cosmosdb sql role assignment list --resource-group <ResourceGroupName> --account-name <AccountName>
## List all SQL role definitions under an Azure Cosmos DB
## List all NoSQL role definitions under an Azure Cosmos DB
az cosmosdb sql role definition list --resource-group <ResourceGroupName> --account-name <AccountName>
## List the SQL stored procedures under an Azure Cosmos DB
## List the NoSQL stored procedures under an Azure Cosmos DB
az cosmosdb sql stored-procedure list --account-name <AccountName> --container-name <ContainerName> --database-name <DatabaseName> --resource-group <ResourceGroupName>
## List the SQL triggers under an Azure Cosmos DB SQL container.
## List the NoSQL triggers under an Azure Cosmos DB NoSQL container.
az cosmosdb sql trigger list --account-name <AccountName> --container-name <ContainerName> --database-name <DatabaseName> --resource-group <ResourceGroupName>
## List the SQL user defined functions under an Azure Cosmos DB SQL container
## List the NoSQL user defined functions under an Azure Cosmos DB NoSQL container
az cosmosdb sql user-defined-function list --account-name <AccountName> --container-name <ContainerName> --database-name <DatabaseName> --resource-group <ResourceGroupName>
```
@@ -185,6 +193,17 @@ No MongoDB, você pode criar um ou mais bancos de dados dentro de uma instância
#### Coleções
A unidade central de armazenamento de dados no MongoDB é a coleção, que contém documentos e é projetada para consultas eficientes e design de esquema flexível. As coleções são escaláveis de forma elástica e podem suportar operações de alto desempenho em vários nós em uma configuração distribuída.
#### Principais Recursos do tipo Unidade de Solicitação (RU)
**Distribuição Global**: Ativar ou desativar a Geo-Redundância para replicação entre regiões e Escritas em Múltiplas Regiões para melhor disponibilidade.
**Rede & Segurança**: entre pontos de extremidade públicos (todas/seletivas) ou privados para conectividade. Conexões seguras com criptografia TLS 1.2. Suporta CORS (Compartilhamento de Recursos de Origem Cruzada) para acesso controlado a recursos.
**Backup & Recuperação**: de políticas de backup Periódico, Contínuo (7 dias, gratuito) ou Contínuo (30 dias, pago) com intervalos e retenção configuráveis.
**Criptografia de Dados**: Chaves gerenciadas pelo serviço por padrão ou chaves gerenciadas pelo cliente (CMK) para criptografia (a seleção de CMK é irreversível).
#### Principais Recursos do tipo cluster vCore
**Distribuição Global**: Ativar uma réplica de leitura em outra região do Azure para alta disponibilidade e suporte a failover. Configurar o nome da réplica, região e armazenamento por fragmento.
**Rede & Segurança**: Suporta acesso público com IPs públicos atribuídos e acesso privado. Restringir conexões usando regras de firewall—por padrão, nenhum IP público é permitido.
**Conexões Criptografadas**: Impõe criptografia TLS para transmissão segura de dados.
#### Enumeração
{{#tabs }}
@@ -312,6 +331,4 @@ print(f"Inserted document with ID: {result.inserted_id}")
* Dê uma olhada na pós exploração "Microsoft.DocumentDB/databaseAccounts/mongodbUserDefinitions/write" && "Microsoft.DocumentDB/databaseAccounts/mongodbUserDefinitions/read" e definições de função, pois aqui pode haver uma privesc
* Dê uma olhada nas restaurações
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -8,10 +8,15 @@ Azure Logic Apps é um serviço baseado em nuvem fornecido pela Microsoft Azure
Logic Apps fornece um designer visual para criar fluxos de trabalho com uma **ampla gama de conectores pré-construídos**, o que facilita a conexão e interação com vários serviços, como Office 365, Dynamics CRM, Salesforce e muitos outros. Você também pode criar conectores personalizados para suas necessidades específicas.
Ao criar um Logic App, você deve criar ou vincular uma conta de armazenamento externa que armazena o estado do fluxo de trabalho, o histórico de execução e os artefatos. Esse armazenamento pode ser configurado com configurações de diagnóstico para monitoramento e pode ser protegido com restrições de acesso à rede ou integrado a uma rede virtual para controlar o tráfego de entrada e saída.
### Identidades Gerenciadas
Logic Apps possui **identidade gerenciada atribuída ao sistema** vinculada ao seu ciclo de vida. Quando ativada, ela recebe um ID de Objeto (principal) exclusivo que pode ser usado com Azure RBAC para conceder as permissões necessárias para acessar outros serviços Azure de forma segura. Isso elimina a necessidade de armazenar credenciais no código, pois a identidade é autenticada através do Microsoft Entra ID. Além disso, você também pode usar **identidades gerenciadas atribuídas a usuários**, que podem ser compartilhadas entre vários recursos. Essas identidades permitem que fluxos de trabalho e Logic Apps interajam de forma segura com sistemas externos, garantindo que os controles de acesso e permissões necessários sejam gerenciados centralmente através da estrutura de segurança do Azure.
### Exemplos
- **Automatizando Pipelines de Dados**: Logic Apps pode automatizar **processos de transferência e transformação de dados** em combinação com o Azure Data Factory. Isso é útil para criar pipelines de dados escaláveis e confiáveis que movem e transformam dados entre vários armazenamentos de dados, como Azure SQL Database e Azure Blob Storage, auxiliando em operações de análise e inteligência de negócios.
- **Integrando com Azure Functions**: Logic Apps pode trabalhar ao lado do Azure Functions para desenvolver **aplicações sofisticadas e orientadas a eventos que escalam conforme necessário** e se integram perfeitamente com outros serviços do Azure. Um exemplo de caso de uso é usar um Logic App para acionar uma Azure Function em resposta a certos eventos, como mudanças em uma conta de armazenamento do Azure, permitindo o processamento dinâmico de dados.
- **Integrando com Azure Functions**: Logic Apps pode trabalhar ao lado do Azure Functions para desenvolver **aplicações sofisticadas e orientadas a eventos que escalam conforme necessário** e se integram perfeitamente com outros serviços Azure. Um exemplo de caso de uso é usar um Logic App para acionar uma Azure Function em resposta a certos eventos, como mudanças em uma conta de armazenamento Azure, permitindo o processamento dinâmico de dados.
### Visualizar um LogicAPP
@@ -19,11 +24,11 @@ Logic Apps fornece um designer visual para criar fluxos de trabalho com uma **am
<figure><img src="../../../images/image (197).png" alt=""><figcaption></figcaption></figure>
ou verificar o código na seção "**Visualização do código da lógica app**".
ou verificar o código na seção "**Visualização do código do Logic app**".
### Proteção SSRF
Mesmo que você encontre a **Logic App vulnerável a SSRF**, você não conseguirá acessar as credenciais da metadata, pois Logic Apps não permite isso.
Mesmo que você encontre o **Logic App vulnerável a SSRF**, não será possível acessar as credenciais da metadata, pois Logic Apps não permite isso.
Por exemplo, algo como isso não retornará o token:
```bash
@@ -37,10 +42,14 @@ Existem várias opções de hospedagem:
* **Consumo**
- **Multi-tenant**: fornece recursos de computação compartilhados, opera na nuvem pública e segue um modelo de preços pay-per-operation. Isso é ideal para cargas de trabalho leves e econômicas.
* **Padrão**
- **Workflow Service Plan**: recursos de computação dedicados com integração VNET para rede e cobranças por instância de plano de serviço de fluxo de trabalho. É adequado para cargas de trabalho mais exigentes que requerem maior controle.
- **App Service Environment V3** recursos de computação dedicados com total isolamento e escalabilidade. Também se integra com VNET para rede e utiliza um modelo de preços baseado em instâncias de App Service dentro do ambiente. Isso é ideal para aplicações em escala empresarial que necessitam de alto isolamento.
- **Workflow Service Plan**: recursos de computação dedicados com integração VNET para rede e cobranças por instância do plano de serviço de fluxo de trabalho. É adequado para cargas de trabalho mais exigentes que requerem maior controle.
- **App Service Environment V3** recursos de computação dedicados com total isolamento e escalabilidade. Também se integra com VNET para rede e utiliza um modelo de preços baseado em instâncias do App Service dentro do ambiente. Isso é ideal para aplicações em escala empresarial que necessitam de alto isolamento.
- **Híbrido** projetado para processamento local e suporte multi-nuvem. Permite recursos de computação gerenciados pelo cliente com acesso à rede local e utiliza Kubernetes Event-Driven Autoscaling (KEDA).
### Fluxos de trabalho
Os fluxos de trabalho no Azure Logic Apps são os processos automatizados principais que orquestram ações entre vários serviços. Um fluxo de trabalho começa com um gatilho—um evento ou cronograma—e então executa uma série de ações, como chamar APIs, processar dados ou interagir com outros serviços do Azure. Os fluxos de trabalho podem ser definidos visualmente usando um designer ou via código (definições JSON) e são gerenciados através de comandos como az logic workflow create, az logic workflow show e az logic workflow update. Eles também suportam gerenciamento de identidade (via o subgrupo de identidade) para gerenciar permissões e integrações com recursos externos de forma segura.
### Enumeração
{{#tabs }}
@@ -145,7 +154,7 @@ Get-AzLogicAppTriggerHistory -ResourceGroupName "<ResourceGroupName>" -Name "<Lo
* Assemblies: Gerenciar assemblies da conta de integração para otimizar a lógica e o processamento de dados.
* Certificados: Lidar com certificados para criptografar e assinar mensagens, garantindo comunicação segura.
* Parceiros: Gerenciar informações de parceiros comerciais para transações B2B, permitindo integrações sem costura.
* Acordos: Configurar regras e configurações para trocar dados com parceiros comerciais (por exemplo, EDI, AS2).
* Acordos: Configurar regras e configurações para troca de dados com parceiros comerciais (por exemplo, EDI, AS2).
* Configurações de Lote: Gerenciar configurações de processamento em lote para agrupar e processar mensagens de forma eficiente.
* RosettaNet PIP: Configurar Processos de Interface de Parceiro RosettaNet (PIPs) para padronizar a comunicação B2B.
@@ -251,7 +260,7 @@ Get-AzIntegrationAccountSchema -ResourceGroupName <resource-group-name> -Integra
## Escalação de Privilégios
Mesma coisa que privesc de logic apps:
Mesma coisa que a escalação de privilégios de aplicativos lógicos:
{{#ref}}
../az-privilege-escalation/az-logic-apps-privesc.md

View File

@@ -10,15 +10,15 @@ O Azure Database for MySQL é um serviço de banco de dados relacional totalment
- Os recursos incluem backups automatizados, alta disponibilidade e monitoramento básico.
- Ideal para aplicativos com cargas de trabalho previsíveis.
* **Servidor Flexível**:
- Oferece mais controle sobre a gestão e configuração do banco de dados.
- Oferece mais controle sobre o gerenciamento e configuração do banco de dados.
- Suporta alta disponibilidade (mesma zona e redundância de zona).
- Recursos de escalabilidade elástica, gerenciamento de patches e otimização de carga de trabalho.
- Oferece funcionalidade de parar/iniciar para economia de custos.
### Principais Recursos
* **Gerenciamento de Servidor**: O recurso **ad-admin** permite gerenciar administradores do Azure Active Directory (AAD) para servidores MySQL, proporcionando controle sobre o acesso administrativo via credenciais AAD, enquanto o recurso **identity** possibilita a atribuição e gerenciamento de Identidades Gerenciadas do Azure, oferecendo autenticação segura e sem credenciais para acessar recursos do Azure.
* **Gerenciamento de Servidor**: O recurso **ad-admin** permite gerenciar administradores do Azure Entra ID para servidores MySQL, proporcionando controle sobre o acesso administrativo via credenciais do Entra ID. O Mysql suporta Identidades Gerenciadas pelo Usuário, usadas para autenticar sem a necessidade de credenciais, e pode ser usado por outros serviços.
* **Gerenciamento de Ciclo de Vida**: opções para iniciar ou parar um servidor, excluir uma instância de servidor flexível, reiniciar um servidor para aplicar rapidamente alterações de configuração e aguardar para garantir que um servidor atenda a condições específicas antes de prosseguir com scripts de automação.
* **Segurança e Rede**: pode gerenciar regras de firewall do servidor para acesso seguro ao banco de dados e desanexar configurações de rede virtual conforme necessário.
* **Segurança e Rede**: Proteja seu servidor restringindo conexões por meio de regras de firewall que permitem apenas endereços IP públicos específicos ou usando endpoints privados que integram seu servidor a uma rede virtual. Todas as conexões são protegidas com criptografia TLS 1.2. Bancos de dados, backups e logs são criptografados em repouso por padrão usando chaves gerenciadas pelo serviço ou chaves personalizadas.
* **Proteção de Dados e Backup**: inclui opções para gerenciar backups de servidores flexíveis para recuperação de dados, realizar restauração geográfica para recuperar um servidor em uma região diferente, exportar backups de servidores para uso externo (em Pré-visualização) e restaurar um servidor a partir de backup para um ponto específico no tempo.
### Enumeração
@@ -114,7 +114,7 @@ Ou com o plugin de extensão nativa do MySQL
```bash
mysql -h <server-name>.mysql.database.azure.com -P 3306 -u <username> -p
```
Você também pode executar consultas com github, mas a senha e o usuário também são necessários. Você precisa configurar um arquivo sql com a consulta a ser executada e então:
Você também pode executar consultas com o github, mas a senha e o usuário também são necessários. Você precisa configurar um arquivo sql com a consulta a ser executada e então:
```bash
# Setup
az mysql flexible-server deploy setup \
@@ -147,6 +147,8 @@ az mysql flexible-server deploy run \
## A Fazer
* Procurar uma maneira de acessar com mysql flexible-server ad-admin para verificar se é um método de escalação de privilégios
* Procurar uma maneira de acessar com mysql flexible-server ad-admin para verificar se é um método de privesc
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -23,6 +23,7 @@
* **Backups Automáticos**: Backups diários integrados com períodos de retenção configuráveis de até 35 dias.
* **Acesso Baseado em Funções**: Controle as permissões dos usuários e o acesso administrativo através do Azure Active Directory.
* **Segurança e Rede**: pode gerenciar regras de firewall do servidor para acesso seguro ao banco de dados e desanexar configurações de rede virtual conforme necessário.
* **Identidades Gerenciadas**: permitem que seu servidor autentique com segurança outros serviços do Azure sem armazenar credenciais. Permitem acessar outros serviços que teriam identidade gerenciada atribuída pelo sistema e serem acessados por outros serviços com outras identidades, que é a identidade gerenciada atribuída pelo usuário.
### Enumeração
@@ -132,4 +133,5 @@ psql -h testpostgresserver1994.postgres.database.azure.com -p 5432 -U adminuser
* Procure uma maneira de acessar com ad-admin para verificar se é um método de privesc
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -8,144 +8,92 @@ Azure SQL é uma família de produtos gerenciados, seguros e inteligentes que ut
Azure SQL consiste em quatro ofertas principais:
1. **Azure SQL Server**: Azure SQL Server é um serviço de banco de dados relacional gerenciado que simplifica a implantação e o gerenciamento de bancos de dados SQL Server, com recursos de segurança e desempenho integrados.
2. **Azure SQL Database**: Este é um **serviço de banco de dados totalmente gerenciado**, que permite hospedar bancos de dados individuais na nuvem Azure. Oferece inteligência integrada que aprende seus padrões únicos de banco de dados e fornece recomendações personalizadas e ajuste automático.
3. **Azure SQL Managed Instance**: Este é para implantações em maior escala, abrangendo toda a instância do SQL Server. Ele fornece quase 100% de compatibilidade com o mais recente motor de banco de dados SQL Server local (Edição Enterprise), que oferece uma implementação nativa de rede virtual (VNet) que aborda preocupações comuns de segurança, e um modelo de negócios favorável para clientes do SQL Server local.
4. **Azure SQL Server em VMs Azure**: Este é Infraestrutura como Serviço (IaaS) e é melhor para migrações onde você deseja **controle sobre o sistema operacional e a instância do SQL Server**, como se fosse um servidor rodando localmente.
1. **Azure SQL Server**: Um servidor é necessário para a **implantação e gerenciamento** de bancos de dados SQL Server.
2. **Azure SQL Database**: Este é um **serviço de banco de dados totalmente gerenciado**, que permite hospedar bancos de dados individuais na nuvem Azure.
3. **Azure SQL Managed Instance**: Este é para implantações em maior escala, abrangendo toda a instância do SQL Server.
4. **Azure SQL Server em VMs Azure**: Este é o melhor para arquiteturas onde você deseja **controle sobre o sistema operacional** e a instância do SQL Server.
### Azure SQL Server
### Recursos de Segurança do SQL Server
Azure SQL Server é um sistema de gerenciamento de banco de dados relacional (RDBMS) que utiliza Transact-SQL para operações de dados e é construído para lidar com sistemas de nível empresarial. Oferece recursos robustos para desempenho, segurança, escalabilidade e integração com várias aplicações da Microsoft. Os bancos de dados Azure SQL dependem deste servidor, pois são construídos sobre esses servidores e é o ponto de entrada para o usuário acessar os bancos de dados.
**Acesso à rede:**
#### Rede
- Endpoint público (pode limitar o acesso a redes específicas).
- Endpoints privados.
- Também é possível restringir conexões com base em nomes de domínio.
- Também é possível permitir que serviços Azure acessem (como usar o editor de consultas no portal ou permitir que uma VM Azure se conecte).
**Conectividade de Rede**: Escolha se deseja habilitar o acesso via endpoint público ou endpoint privado. Se você selecionar Sem acesso, nenhum endpoint é criado até que seja configurado manualmente:
- Sem acesso: Nenhum endpoint é configurado, bloqueando conexões de entrada até que seja configurado manualmente.
- Endpoint público: Permite conexões diretas pela internet pública, sujeitas a regras de firewall e outras configurações de segurança.
- Endpoint privado: Restringe a conectividade a uma rede privada.
**Métodos de Autenticação:**
**Política de Conexão**: Defina como os clientes se comunicam com o servidor de banco de dados SQL:
- Padrão: Usa uma política de Redirecionamento para todas as conexões de clientes de dentro do Azure (exceto aquelas usando Endpoints Privados) e uma política de Proxy para conexões de fora do Azure.
- Proxy: Roteia todas as conexões de clientes através do gateway do Azure SQL Database.
- Redirecionar: Os clientes se conectam diretamente ao nó que hospeda o banco de dados.
- Autenticação **somente Entra** da Microsoft: Você precisa indicar os princípios Entra que terão acesso ao serviço.
- Autenticação **tanto SQL quanto Microsoft Entra**: Autenticação SQL tradicional com nome de usuário e senha juntamente com Microsoft Entra.
- Autenticação **somente SQL**: Permitir acesso apenas via usuários de banco de dados.
#### Métodos de Autenticação
Azure SQL suporta vários métodos de autenticação para proteger o acesso ao banco de dados:
Observe que, se qualquer autenticação SQL for permitida, um usuário administrador (nome de usuário + senha) precisa ser indicado e, se a autenticação Entra ID for selecionada, também é necessário indicar pelo menos um princípio com acesso de administrador.
- **Autenticação apenas do Microsoft Entra**: Usa o Microsoft Entra (anteriormente Azure AD) para gerenciamento centralizado de identidade e autenticação única.
- **Autenticação SQL e Microsoft Entra**: Permite usar a autenticação SQL tradicional juntamente com o Microsoft Entra.
- **Autenticação SQL**: Baseia-se exclusivamente em nomes de usuário e senhas do SQL Server.
**Criptografia:**
#### Recursos de Segurança
- É chamada de “Criptografia de dados transparente” e criptografa bancos de dados, backups e logs em repouso.
- Como sempre, uma chave gerenciada pela Azure é usada por padrão, mas uma chave de criptografia gerenciada pelo cliente (CMEK) também pode ser usada.
**Identidades Gerenciadas:**
Os servidores SQL têm **Identidades Gerenciadas**. As identidades gerenciadas permitem que seu servidor autentique de forma segura com outros serviços Azure sem armazenar credenciais. Permite acessar outros serviços que seriam identidade gerenciada atribuída ao sistema e ser acessada por outros serviços com outras identidades, que é identidade gerenciada atribuída ao usuário. Alguns dos serviços que o SQL pode acessar são Azure Storage Account(V2), Azure Data Lake Storage Gen2, SQL Server, Oracle, Teradata, MongoDB ou Cosmos DB API para MongoDB, ODBC genérico, Operações em massa e armazenamento de objetos compatível com S3.
- É possível atribuir MIs gerenciadas pelo sistema e pelo usuário.
- Usado para acessar a chave de criptografia (se um CMEK for usado) e outros serviços dos bancos de dados.
- Se mais de um UMI for atribuído, é possível indicar o padrão a ser usado.
- É possível configurar uma identidade de cliente federada para acesso entre locatários.
Outros recursos de segurança que o servidor SQL possui são:
**Microsoft Defender:**
- **Regras de Firewall**: As regras de firewall controlam o acesso ao seu servidor restringindo ou permitindo tráfego. Este é um recurso do próprio banco de dados também.
- **Criptografia de Dados Transparente (TDE)**: TDE criptografa seus bancos de dados, backups e logs em repouso para proteger seus dados mesmo que o armazenamento seja comprometido. Pode ser feito com uma chave gerenciada pelo serviço ou uma chave gerenciada pelo cliente.
- **Microsoft Defender para SQL**: O Microsoft Defender para SQL pode ser habilitado oferecendo avaliações de vulnerabilidade e proteção avançada contra ameaças para um servidor.
- Útil para “mitigar vulnerabilidades potenciais do banco de dados e detectar atividades anômalas”
- Falaremos sobre o Defender em sua própria lição (pode ser habilitado em vários outros serviços Azure)
#### Modelos de Implantação
**Backups:**
- A frequência de backup é gerenciada nas políticas de retenção.
O Azure SQL Database suporta opções de implantação flexíveis para atender a várias necessidades:
**Bancos de dados excluídos:**
- É possível restaurar DBs que foram excluídos de backups existentes.
- **Banco de Dados Único**:
- Um banco de dados totalmente isolado com seus próprios recursos dedicados.
- Ótimo para microsserviços ou aplicações que requerem uma única fonte de dados.
- **Pool Elástico**:
- Permite que vários bancos de dados compartilhem recursos dentro de um pool.
- Custo-efetivo para aplicações com padrões de uso flutuantes em vários bancos de dados.
## Azure SQL Database
### Azure SQL Database
**Azure SQL Database** é uma **plataforma de banco de dados totalmente gerenciada como serviço (PaaS)** que fornece soluções de banco de dados relacionais escaláveis e seguras. É construído nas mais recentes tecnologias do SQL Server e elimina a necessidade de gerenciamento de infraestrutura, tornando-se uma escolha popular para aplicativos baseados em nuvem.
**Azure SQL Database** é uma **plataforma de banco de dados totalmente gerenciada como serviço (PaaS)** que fornece soluções de banco de dados relacionais escaláveis e seguras. É construído nas mais recentes tecnologias do SQL Server e elimina a necessidade de gerenciamento de infraestrutura, tornando-se uma escolha popular para aplicações baseadas em nuvem.
Para criar um banco de dados SQL, é necessário indicar o servidor SQL onde ele será hospedado.
#### Recursos Principais
### Recursos de Segurança do Banco de Dados SQL
- **Sempre Atualizado**: Funciona na versão estável mais recente do SQL Server e recebe novos recursos e patches automaticamente.
- **Capacidades PaaS**: Alta disponibilidade, backups e atualizações integrados.
- **Flexibilidade de Dados**: Suporta dados relacionais e não relacionais (por exemplo, gráficos, JSON, espacial e XML).
- **Sempre Atualizado**: Executa na versão estável mais recente do SQL Server e recebe novos recursos e patches automaticamente.
- **Recursos de segurança herdados do SQL Server:**
- Autenticação (SQL e/ou Entra ID)
- Identidades Gerenciadas atribuídas
- Restrições de rede
- Criptografia
- Backups
-
- **Redundância de dados:** As opções são local, zona, Geo ou redundante Geo-Zona.
- **Ledger:** Verifica criptograficamente a integridade dos dados, garantindo que qualquer adulteração seja detectada. Útil para organizações financeiras, médicas e qualquer organização que gerencie dados sensíveis.
#### Rede
Um banco de dados SQL pode fazer parte de um **Pool Elástico**. Pools elásticos são uma solução econômica para gerenciar vários bancos de dados compartilhando recursos de computação (eDTUs) e armazenamento configuráveis entre eles, com preços baseados apenas nos recursos alocados, em vez do número de bancos de dados.
**Conectividade de Rede**: Escolha se deseja habilitar o acesso via endpoint público ou endpoint privado. Se você selecionar Sem acesso, nenhum endpoint é criado até que seja configurado manualmente:
- Sem acesso: Nenhum endpoint é configurado, bloqueando conexões de entrada até que seja configurado manualmente.
- Endpoint público: Permite conexões diretas pela internet pública, sujeitas a regras de firewall e outras configurações de segurança.
- Endpoint privado: Restringe a conectividade a uma rede privada.
#### Segurança em Nível de Coluna (Mascaramento) e Segurança em Nível de Linha do Azure SQL
**Política de Conexão**: Defina como os clientes se comunicam com o servidor de banco de dados SQL:
- Padrão: Usa uma política de Redirecionamento para todas as conexões de clientes de dentro do Azure (exceto aquelas usando Endpoints Privados) e uma política de Proxy para conexões de fora do Azure.
- Proxy: Roteia todas as conexões de clientes através do gateway do Azure SQL Database.
- Redirecionar: Os clientes se conectam diretamente ao nó que hospeda o banco de dados.
O mascaramento de dados dinâmico do **Azure SQL** é um recurso que ajuda a **proteger informações sensíveis ocultando-as** de usuários não autorizados. Em vez de alterar os dados reais, ele mascara dinamicamente os dados exibidos, garantindo que detalhes sensíveis, como números de cartão de crédito, sejam ocultados.
#### Recursos de Segurança
O **Mascaramento de Dados Dinâmico** afeta todos os usuários, exceto aqueles que estão desmascarados (esses usuários precisam ser indicados) e administradores. Ele possui a opção de configuração que especifica quais usuários SQL estão isentos do mascaramento dinâmico de dados, com **administradores sempre excluídos**.
- **Microsoft Defender para SQL**: pode ser habilitado oferecendo avaliações de vulnerabilidade e proteção avançada contra ameaças.
- **Ledger**: verifica criptograficamente a integridade dos dados, garantindo que qualquer adulteração seja detectada.
- **Identidade do Servidor**: usa identidades gerenciadas atribuídas ao sistema e ao usuário para permitir acesso centralizado.
- **Gerenciamento de Chaves de Criptografia de Dados Transparentes**: criptografa bancos de dados, backups e logs em repouso sem exigir alterações no aplicativo. A criptografia pode ser habilitada em cada banco de dados e, se configurada no nível do banco de dados, essas configurações substituem a configuração no nível do servidor.
- **Sempre Criptografado**: é um conjunto de recursos avançados de proteção de dados que separa a propriedade dos dados do gerenciamento dos dados. Isso garante que administradores ou operadores com altos privilégios não possam acessar dados sensíveis.
#### Modelos de Compra / Níveis de Serviço
- **Baseado em vCore**: Escolha computação, memória e armazenamento de forma independente. Para Uso Geral, Crítico para Negócios (com alta resiliência e desempenho para aplicativos OLTP), e escala até 128 TB de armazenamento.
- **Baseado em DTU**: Agrupa computação, memória e I/O em níveis fixos. Recursos equilibrados para tarefas comuns.
- Padrão: Recursos equilibrados para tarefas comuns.
- Premium: Alto desempenho para cargas de trabalho exigentes.
#### Desempenho escalável e pools
- **Bancos de Dados Únicos**: Cada banco de dados é isolado e possui seus próprios recursos dedicados de computação, memória e armazenamento. Os recursos podem ser escalados dinamicamente (para cima ou para baixo) sem tempo de inatividade (1128 vCores, 32 GB4 TB de armazenamento e até 128 TB).
- **Pools Elásticos**: Compartilham recursos entre vários bancos de dados em um pool para maximizar a eficiência e economizar custos. Os recursos também podem ser escalados dinamicamente para todo o pool.
- **Flexibilidade de Nível de Serviço**: Comece pequeno com um único banco de dados no nível de Uso Geral. Faça upgrade para os níveis Crítico para Negócios ou Hiperscale à medida que as necessidades crescem.
- **Opções de Escalonamento**: Escalonamento Dinâmico ou Alternativas de Autoscalonamento.
#### Monitoramento e Otimização Integrados
- **Query Store**: Acompanha problemas de desempenho, identifica os principais consumidores de recursos e oferece recomendações acionáveis.
- **Ajuste Automático**: Otimiza proativamente o desempenho com recursos como indexação automática e correções de plano de consulta.
- **Integração de Telemetria**: Suporta monitoramento através do Azure Monitor, Event Hubs ou Azure Storage para insights personalizados.
#### Recuperação de Desastres e Disponibilidade
- **Backups automáticos**: O SQL Database realiza automaticamente backups completos, diferenciais e de logs de transações dos bancos de dados.
- **Restauração em um Ponto no Tempo**: Recupera bancos de dados para qualquer estado passado dentro do período de retenção de backup.
- **Geo-Redundância**
- **Grupos de Failover**: Simplifica a recuperação de desastres agrupando bancos de dados para failover automático entre regiões.
A **Segurança em Nível de Linha (RLS)** do Azure SQL é um recurso que **controla quais linhas um usuário pode visualizar ou modificar**, garantindo que cada usuário veja apenas os dados relevantes para ele. Ao criar políticas de segurança com predicados de filtro ou bloqueio, as organizações podem impor acesso granular no nível do banco de dados.
### Azure SQL Managed Instance
**Azure SQL Managed Instance** é um motor de banco de dados como Serviço (PaaS) que oferece quase 100% de compatibilidade com o SQL Server e lida automaticamente com a maioria das tarefas de gerenciamento (por exemplo, atualização, correção, backups, monitoramento). Ele fornece uma solução em nuvem para migrar bancos de dados SQL Server locais com mínimas alterações.
#### Níveis de Serviço
- **Uso Geral**: Opção econômica para aplicações com requisitos padrão de I/O e latência.
- **Crítico para Negócios**: Opção de alto desempenho com baixa latência de I/O para cargas de trabalho críticas.
#### Recursos Avançados de Segurança
* **Proteção contra Ameaças**: Alertas de Proteção Avançada contra Ameaças para atividades suspeitas e ataques de injeção SQL. Auditoria para rastrear e registrar eventos de banco de dados para conformidade.
* **Controle de Acesso**: Autenticação Microsoft Entra para gerenciamento centralizado de identidade. Segurança em Nível de Linha e Mascaramento Dinâmico de Dados para controle de acesso granular.
* **Backups**: Backups automatizados e manuais com capacidade de restauração em um ponto no tempo.
As **Instâncias Gerenciadas do Azure SQL** são para implantações em maior escala, abrangendo toda a instância do SQL Server. Elas oferecem quase 100% de compatibilidade com o mais recente SQL Server local (Edição Enterprise), que fornece uma implementação nativa de rede virtual (VNet) que aborda preocupações comuns de segurança e um modelo de negócios favorável para clientes do SQL Server local.
### Azure SQL Virtual Machines
**Azure SQL Virtual Machines** é melhor para migrações onde você deseja **controle sobre o sistema operacional e a instância do SQL Server**, como se fosse um servidor rodando localmente. Pode ter diferentes tamanhos de máquina e uma ampla seleção de versões e edições do SQL Server.
As **Máquinas Virtuais do Azure SQL** permitem **controlar o sistema operacional** e a instância do SQL Server, já que uma VM será criada no serviço de VM executando o SQL Server.
#### Recursos Principais
Quando uma Máquina Virtual SQL é criada, é possível **selecionar todas as configurações da VM** (como mostrado na lição de VM) que hospedarão o SQL Server.
- Isso significa que a VM acessará algumas VNet(s), pode ter **Identidades Gerenciadas anexadas** a ela, pode ter compartilhamentos de arquivos montados… tornando um **pivotamento do SQL** para a VM super interessante.
- Além disso, é possível configurar um ID de aplicativo e segredo para **permitir que o SQL acesse um cofre de chaves específico**, que pode conter informações sensíveis.
**Backup Automatizado**: Agende backups para bancos de dados SQL.
**Correção Automática**: Automatiza a instalação de atualizações do Windows e do SQL Server durante uma janela de manutenção.
**Integração com Azure Key Vault**: Configura automaticamente o Key Vault para VMs do SQL Server.
**Integração com Defender for Cloud**: Visualize as recomendações do Defender para SQL no portal.
**Flexibilidade de Versão/Edição**: Altere os metadados da versão ou edição do SQL Server sem redistribuir a VM.
#### Recursos de Segurança
**Microsoft Defender para SQL**: Insights e alertas de segurança.
**Integração com Azure Key Vault**: Armazenamento seguro de credenciais e chaves de criptografia.
**Microsoft Entra (Azure AD)**: Autenticação e controle de acesso.
Também é possível configurar coisas como **atualizações automáticas do SQL**, **backups automáticos**, **autenticação Entra ID** e a maioria dos recursos dos outros serviços SQL.
## Enumeração
@@ -216,6 +164,30 @@ az sql midb show --resource-group <res-grp> --name <name>
# Lis all sql VM
az sql vm list
az sql vm show --resource-group <res-grp> --name <name>
# List schema by the database
az rest --method get \
--uri "https://management.azure.com/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Sql/servers/<serverName>/databases/<databaseName>/schemas?api-version=2021-11-01"
# Get tables of a database with the schema
az rest --method get \
--uri "https://management.azure.com/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Sql/servers/<serverName>/databases/<databaseName>/schemas/<schemaName>/tables?api-version=2021-11-01"
# Get columns of a database
az rest --method get \
--uri "https://management.azure.com/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Sql/servers/<serverName>/databases/<databaseName>/columns?api-version=2021-11-01"
# Get columns of a table
az rest --method get \
--uri "https://management.azure.com/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Sql/servers/<serverName>/databases/<databaseName>/schemas/<schemaName>/tables/<tableName>/columns?api-version=2021-11-01"
# Get DataMaskingPolicies of a database
az rest --method get \
--uri "https://management.azure.com/subscriptions/9291ff6e-6afb-430e-82a4-6f04b2d05c7f/resourceGroups/Resource_Group_1/providers/Microsoft.Sql/servers/getstorageserver/databases/masktest/dataMaskingPolicies/Default?api-version=2021-11-01"
az rest --method get \
--uri "https://management.azure.com/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Sql/servers/<serverName>/databases/<databaseName>/dataMaskingPolicies/Default/rules?api-version=2021-11-01"
```
{{#endtab}}
@@ -260,6 +232,31 @@ Get-AzSqlVM
{{#endtab}}
{{#endtabs}}
Além disso, se você quiser enumerar a Máscara de Dados Dinâmica e as políticas de Nível de Linha, dentro do banco de dados, você pode consultar:
```sql
--Enumerates the masked columns
SELECT
OBJECT_NAME(mc.object_id) AS TableName,
c.name AS ColumnName,
mc.masking_function AS MaskingFunction
FROM sys.masked_columns AS mc
JOIN sys.columns AS c
ON mc.object_id = c.object_id
AND mc.column_id = c.column_id
--Enumerates Row level policies
SELECT
sp.name AS PolicyName,
sp.is_enabled,
sp.create_date,
sp.modify_date,
OBJECT_NAME(sp.object_id) AS TableName,
sp2.predicate_definition AS PredicateDefinition
FROM sys.security_policies AS sp
JOIN sys.security_predicates AS sp2
ON sp.object_id = sp2.object_id;
```
### Conectar e executar consultas SQL
Você pode encontrar uma string de conexão (contendo credenciais) do exemplo [enumerando um Az WebApp](az-app-services.md):