mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-02-05 03:16:37 -08:00
Translated ['src/pentesting-cloud/azure-security/az-post-exploitation/az
This commit is contained in:
@@ -10,7 +10,7 @@ Para mais informações sobre logic apps, consulte:
|
||||
{{#endref}}
|
||||
|
||||
### `Microsoft.Logic/workflows/read`, `Microsoft.Logic/workflows/write` && `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action`
|
||||
Com essas permissões, você pode modificar os fluxos de trabalho do Logic App e gerenciar suas identidades. Especificamente, você pode atribuir ou remover identidades gerenciadas atribuídas pelo sistema e por usuários aos fluxos de trabalho, o que permite que o Logic App se autentique e acesse outros recursos do Azure sem credenciais explícitas.
|
||||
Com essas permissões, você pode modificar fluxos de trabalho do Logic App e gerenciar suas identidades. Especificamente, você pode atribuir ou remover identidades gerenciadas atribuídas pelo sistema e por usuários aos fluxos de trabalho, o que permite que o Logic App se autentique e acesse outros recursos do Azure sem credenciais explícitas.
|
||||
```bash
|
||||
az logic workflow identity remove/assign \
|
||||
--name <workflow_name> \
|
||||
@@ -18,6 +18,45 @@ az logic workflow identity remove/assign \
|
||||
--system-assigned true \
|
||||
--user-assigned "/subscriptions/<subscription_id>/resourceGroups/<resource_group>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<identity_name>"
|
||||
```
|
||||
Adicionalmente, com apenas `Microsoft.Logic/workflows/write` você pode alterar algumas configurações, como endereços IP de entrada permitidos ou dias de retenção do histórico de execução:
|
||||
```bash
|
||||
az rest --method PUT \
|
||||
--uri "https://management.azure.com/subscriptions/<subscription_id>/resourceGroups/<resource_group>/providers/Microsoft.Logic/workflows/<workflow_name>?api-version=2019-05-01" \
|
||||
--headers "Content-Type=application/json" \
|
||||
--body '{
|
||||
"location": "<location>",
|
||||
"properties": {
|
||||
"state": "Enabled",
|
||||
"definition": {
|
||||
"$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#",
|
||||
"contentVersion": "1.0.0.0",
|
||||
"parameters": {},
|
||||
"triggers": {
|
||||
"<trigger_name>": {
|
||||
"type": "Request",
|
||||
"kind": "Http"
|
||||
}
|
||||
},
|
||||
"actions": {},
|
||||
"outputs": {}
|
||||
},
|
||||
"runtimeConfiguration": {
|
||||
"lifetime": {
|
||||
"unit": "day",
|
||||
"count": <count>
|
||||
}
|
||||
},
|
||||
"accessControl": {
|
||||
"triggers": {
|
||||
"allowedCallerIpAddresses": []
|
||||
},
|
||||
"actions": {
|
||||
"allowedCallerIpAddresses": []
|
||||
}
|
||||
}
|
||||
}
|
||||
}'
|
||||
```
|
||||
### `Microsoft.Web/sites/read`, `Microsoft.Web/sites/write`
|
||||
Com essas permissões, você pode criar ou atualizar Logic Apps hospedadas em um App Service Plan. Isso inclui modificar configurações, como habilitar ou desabilitar a aplicação forçada de HTTPS.
|
||||
```bash
|
||||
@@ -111,6 +150,16 @@ az logic integration-account session create \
|
||||
}
|
||||
}
|
||||
}'
|
||||
```
|
||||
### `Microsoft.Logic/workflows/regenerateAccessKey/action`
|
||||
|
||||
Usuários com essa permissão podem regenerar chaves de acesso do Logic App e, se mal utilizadas, podem levar a interrupções no serviço.
|
||||
```bash
|
||||
az rest --method POST \
|
||||
--uri "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.Logic/workflows/<workflow-name>/regenerateAccessKey?api-version=<api-version>" \
|
||||
--body '{"keyType": "<key-type>"}' \
|
||||
--headers "Content-Type=application/json"
|
||||
|
||||
```
|
||||
### "*/delete"
|
||||
Com essas permissões, você pode excluir recursos relacionados ao Azure Logic Apps
|
||||
|
||||
@@ -32,6 +32,65 @@ az rest \
|
||||
--body '{}' \
|
||||
--headers "Content-Type=application/json"
|
||||
```
|
||||
Adicionalmente, com apenas `Microsoft.Logic/workflows/write` você pode alterar a Política de Autorização, dando, por exemplo, a outro tenant a capacidade de acionar o fluxo de trabalho:
|
||||
```bash
|
||||
az rest --method PUT \
|
||||
--uri "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Logic/workflows/<workflow-name>?api-version=2016-10-01" \
|
||||
--body '{
|
||||
"location": "<region>",
|
||||
"properties": {
|
||||
"definition": {
|
||||
"$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#",
|
||||
"contentVersion": "1.0.0.0",
|
||||
"parameters": {
|
||||
"$connections": {
|
||||
"defaultValue": {},
|
||||
"type": "Object"
|
||||
}
|
||||
},
|
||||
"triggers": {
|
||||
"<trigger-name>": {
|
||||
"type": "Request",
|
||||
"kind": "Http"
|
||||
}
|
||||
},
|
||||
"actions": {},
|
||||
"outputs": {}
|
||||
},
|
||||
"accessControl": {
|
||||
"triggers": {
|
||||
"openAuthenticationPolicies": {
|
||||
"policies": {
|
||||
"<policy-name>": {
|
||||
"type": "AAD",
|
||||
"claims": [
|
||||
{
|
||||
"name": "iss",
|
||||
"value": "<issuer-url>"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}'
|
||||
|
||||
```
|
||||
### `Microsoft.Logic/workflows/triggers/listCallbackUrl/action`
|
||||
Você pode obter a URL de callback do gatilho e executá-la.
|
||||
```bash
|
||||
az rest --method POST \
|
||||
--uri "https://management.azure.com/subscriptions/<subscription_id>/resourceGroups/<resource_group>/providers/Microsoft.Logic/workflows/<workflow_name>/triggers/<trigger_name>/listCallbackUrl?api-version=2019-05-01"
|
||||
```
|
||||
Isso retornará uma URL de callback como `https://prod-28.centralus.logic.azure.com:443/workflows/....`. Agora podemos executá-lo com:
|
||||
```bash
|
||||
curl --request POST \
|
||||
--url "https://prod-28.centralus.logic.azure.com:443/workflows/<workflow_id>/triggers/<trigger_name>/paths/invoke?api-version=2019-05-01&sp=%2Ftriggers%2F<trigger_name>%2Frun&sv=1.0&sig=<signature>" \
|
||||
--header 'Content-Type: application/json' \
|
||||
--data '{"exampleKey": "exampleValue"}'
|
||||
```
|
||||
### (`Microsoft.Web/sites/read`, `Microsoft.Web/sites/basicPublishingCredentialsPolicies/read`, `Microsoft.Web/sites/write`, `Microsoft.Web/sites/config/list/action`) && (`Microsoft.Web/sites/start/action`)
|
||||
Com essas permissões, você pode implantar fluxos de trabalho do Logic App usando implantações de arquivo ZIP. Essas permissões permitem ações como ler detalhes do aplicativo, acessar credenciais de publicação, escrever alterações e listar configurações do aplicativo. Juntamente com as permissões de início, você pode atualizar e implantar um novo Logic App com o conteúdo desejado.
|
||||
```bash
|
||||
|
||||
@@ -10,7 +10,7 @@ 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.
|
||||
|
||||
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.
|
||||
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. 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 nativas de consulta.
|
||||
|
||||
### 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 é:
|
||||
@@ -18,16 +18,16 @@ A API NoSQL do Azure Cosmos DB é uma API baseada em documentos que usa JSON com
|
||||
https://<Account-Name>.documents.azure.com:443/
|
||||
```
|
||||
#### Bancos de Dados
|
||||
Dentro de uma conta, você pode criar um ou mais bancos de dados, que servem como agrupamentos lógicos de contêineres. Um banco de dados atua como um limite para gerenciamento de recursos e permissões de usuário. Os bancos de dados podem compartilhar a capacidade provisionada entre seus contêineres ou alocar capacidade dedicada a contêineres individuais.
|
||||
Dentro de uma conta, você pode criar um ou mais bancos de dados, que servem como agrupamentos lógicos de contêineres. Um banco de dados atua como um limite para gerenciamento de recursos e permissões de usuário. Os bancos de dados podem permitir que vários contêineres usem um pool compartilhado de capacidade de desempenho ou dar a cada contêiner seu próprio poder dedicado.
|
||||
|
||||
#### 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).
|
||||
- **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. O Microsoft Defender for Cloud pode ser ativado. Para fazer a conexão, você pode usar chaves.
|
||||
- **Backup & Recuperação**: de políticas de backup Periódico, Contínuo (7 dias) ou Contínuo (30 dias) com intervalos e retenção configuráveis.
|
||||
- **Criptografia de Dados**: Chaves gerenciadas pelo serviço padrão ou chaves gerenciadas pelo cliente (CMK) para criptografia (a seleção de CMK é irreversível).
|
||||
|
||||
#### Enumeração
|
||||
|
||||
@@ -67,6 +67,19 @@ az cosmosdb sql trigger list --account-name <AccountName> --container-name <Cont
|
||||
## 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>
|
||||
|
||||
|
||||
## MongoDB (vCore)
|
||||
# Install az cli extension
|
||||
az extension add --name cosmosdb-preview
|
||||
# List all MongoDB databases in a specified Azure Cosmos DB account
|
||||
az cosmosdb mongocluster list
|
||||
az cosmosdb mongocluster show --cluster-name <name> --resource-group <ResourceGroupName>
|
||||
# Get firewall rules
|
||||
az cosmosdb mongocluster firewall rule list --cluster-name <name> --resource-group <ResourceGroupName>
|
||||
# Connect to in
|
||||
brew install mongosh
|
||||
mongosh "mongodb://<username>:<password>@<account-name>.mongo.cosmos.azure.com:10255/?ssl=true&replicaSet=globaldb&retryWrites=false" --username <username> --password <password>
|
||||
|
||||
```
|
||||
{{#endtab }}
|
||||
|
||||
@@ -118,7 +131,7 @@ Get-AzCosmosDBSqlUserDefinedFunction -ResourceGroupName "<ResourceGroupName>" -A
|
||||
|
||||
#### Conexão
|
||||
|
||||
Para conectar, a biblioteca azure-cosmosDB (pip install azure-cosmos) é necessária. Além disso, o endpoint e a chave são componentes cruciais para estabelecer a conexão.
|
||||
Ele possui 2 tipos de chave, Leitura-escrita (completa) e Somente leitura. Elas fornecem o acesso indicado a todos os bancos de dados, coleções e dados dentro da conta do Cosmos DB. Para conectar, a biblioteca azure-cosmosDB (pip install azure-cosmos) é necessária. Além disso, o endpoint e a chave são componentes cruciais para estabelecer a conexão.
|
||||
```python
|
||||
from azure.cosmos import CosmosClient, PartitionKey
|
||||
|
||||
@@ -193,15 +206,15 @@ 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.
|
||||
#### Principais Recursos do tipo Unidade de Requisição (RU)
|
||||
**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 finais públicos (todas/selecione redes) 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. Para fazer a conexão, você pode usar chaves.
|
||||
**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.
|
||||
**Distribuição Global**: Ative uma réplica de leitura em outra região do Azure para alta disponibilidade e suporte a failover. Configure o nome da réplica, região e armazenamento por shard.
|
||||
**Rede & Segurança**: Suporta acesso público com IPs públicos atribuídos e acesso privado. Restringe 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
|
||||
@@ -229,10 +242,23 @@ az cosmosdb mongodb database list --account-name <AccountName> --resource-group
|
||||
# List all collections in a specific MongoDB database within an Azure Cosmos DB account
|
||||
az cosmosdb mongodb collection list --account-name <AccountName> --database-name <DatabaseName> --resource-group <ResourceGroupName>
|
||||
|
||||
#RBAC FUNCTIONALITIES MUST BE ENABLED TO USE THIS
|
||||
# List all role definitions for MongoDB within an Azure Cosmos DB account
|
||||
az cosmosdb mongodb role definition list --account-name <AccountName> --resource-group <ResourceGroupName>
|
||||
# List all user definitions for MongoDB within an Azure Cosmos DB account
|
||||
az cosmosdb mongodb user definition list --account-name <AccountName> --resource-group <ResourceGroupName>
|
||||
|
||||
## MongoDB (vCore)
|
||||
# Install az cli extension
|
||||
az extension add --name cosmosdb-preview
|
||||
# List all MongoDB databases in a specified Azure Cosmos DB account
|
||||
az cosmosdb mongocluster list
|
||||
az cosmosdb mongocluster show --cluster-name <name> --resource-group <ResourceGroupName>
|
||||
# Get firewall rules
|
||||
az cosmosdb mongocluster firewall rule list --cluster-name <name> --resource-group <ResourceGroupName>
|
||||
# Connect to in
|
||||
brew install mongosh
|
||||
mongosh "mongodb://<username>:<password>@<account-name>.mongo.cosmos.azure.com:10255/?ssl=true&replicaSet=globaldb&retryWrites=false" --username <username> --password <password>
|
||||
```
|
||||
{{#endtab }}
|
||||
|
||||
@@ -273,14 +299,15 @@ Get-AzCosmosDBMongoDBRoleDefinition -AccountName <account-name> -ResourceGroupNa
|
||||
|
||||
#### Conexão
|
||||
|
||||
Aqui a senha que você pode encontrá-las com as chaves ou com o método descrito na seção de privesc.
|
||||
O tipo RU MongoDB no CosmoDB tem 2 tipos de chave, Leitura-escrita (completa) e Somente leitura. Eles fornecem o acesso indicado a todos os bancos de dados, coleções e dados dentro da conta do Cosmos DB. Para a senha, você pode usar as chaves ou o método descrito na seção de privesc.
|
||||
```python
|
||||
from pymongo import MongoClient
|
||||
|
||||
# Updated connection string with retryWrites=false
|
||||
connection_string = "mongodb://<account-name>.mongo.cosmos.azure.com:10255/?ssl=true&replicaSet=globaldb&retryWrites=false"
|
||||
|
||||
# Create the client
|
||||
# Create the client. The password and username is a custom one if the type is "vCore cluster".
|
||||
# In case that is a Request unit (RU) the username is the account name and the password is the key of the cosomosDB account.
|
||||
client = MongoClient(connection_string, username="<username>", password="<password>")
|
||||
|
||||
# Access the database
|
||||
@@ -306,6 +333,10 @@ document = {
|
||||
result = collection.insert_one(document)
|
||||
print(f"Inserted document with ID: {result.inserted_id}")
|
||||
```
|
||||
Ou usando um usuário dentro do mongo:
|
||||
```bash
|
||||
mongosh "mongodb://<myUser>:<mySecurePassword>@<account_name>.mongo.cosmos.azure.com:10255/<mymongodatabase>?ssl=true&replicaSet=globaldb&retrywrites=false"
|
||||
```
|
||||
## Referências
|
||||
|
||||
- [https://learn.microsoft.com/en-us/azure/cosmos-db/choose-api](https://learn.microsoft.com/en-us/azure/cosmos-db/choose-api)
|
||||
|
||||
@@ -10,13 +10,10 @@ Logic Apps fornece um designer visual para criar fluxos de trabalho com uma **am
|
||||
|
||||
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 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.
|
||||
- **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árias fontes 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.
|
||||
|
||||
### Visualizar um LogicAPP
|
||||
|
||||
@@ -28,7 +25,7 @@ ou verificar o código na seção "**Visualização do código do Logic app**".
|
||||
|
||||
### Proteção SSRF
|
||||
|
||||
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.
|
||||
Mesmo que você encontre o **Logic App vulnerável a SSRF**, você não conseguirá acessar as credenciais da metadata, pois Logic Apps não permite isso.
|
||||
|
||||
Por exemplo, algo como isso não retornará o token:
|
||||
```bash
|
||||
@@ -40,15 +37,66 @@ curl -XPOST 'https://prod-44.westus.logic.azure.com:443/workflows/2d8de4be6e9741
|
||||
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.
|
||||
- **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. Isso implanta um "Single Workflow".
|
||||
* **Padrão**
|
||||
- **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).
|
||||
- **Workflow Service Plan**: recursos de computação dedicados com integração VNET para rede e cobra 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 de App Service dentro do ambiente.
|
||||
- **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). Baseia-se em um Container App Connected Environment.
|
||||
|
||||
### Fluxos de trabalho
|
||||
### Principais Recursos
|
||||
- **Armazenamento**: Logic Apps requer uma conta de Armazenamento Azure externa para armazenar o estado do fluxo de trabalho, histórico de execução… e deve estar no mesmo grupo de recursos que o Logic App.
|
||||
- **Rede & Segurança**: Logic Apps podem ser configurados com acesso público ou privado. Por padrão, o aplicativo está aberto para a internet, mas pode ser integrado a uma Rede Virtual Azure para conectividade isolada.
|
||||
- **Application Insights**: Gerenciamento de Desempenho de Aplicações (APM) através do Azure Monitor Application Insights pode ser habilitado para rastrear desempenho, detectar anomalias e fornecer análises.
|
||||
- **Controle de Acesso**: Logic apps suportam Identidades Gerenciadas pelo Sistema & Identidades Gerenciadas pelo Usuário.
|
||||
|
||||
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.
|
||||
### Workflows "Únicos"
|
||||
|
||||
Um **workflow** é uma sequência estruturada de etapas ou tarefas automatizadas que executam um processo ou objetivo específico. Ele define como diferentes ações, condições e decisões interagem para alcançar um resultado desejado, otimizando operações e reduzindo o esforço manual. Workflows podem integrar múltiplos sistemas, acionar eventos e regras, garantindo consistência e eficiência nos processos.
|
||||
|
||||
Azure Logic apps oferece a funcionalidade de **criar um único workflow sem a necessidade de um Logic App** em si.
|
||||
|
||||
Cada workflow tem diferentes **gatilhos**. Esses gatilhos são os passos que o workflow segue. Cada gatilho tem seus parâmetros que podem variar dependendo do tipo do gatilho:
|
||||
- Nome da conexão
|
||||
- **Tipo de Autenticação** que pode ser, Chave de Acesso, Microsoft Entra ID, autenticação de principal de serviço integrado e Identidade Gerenciada do Logic Apps.
|
||||
|
||||
Os gatilhos também têm várias configurações:
|
||||
- Validação de Esquema: Garante que os dados recebidos sigam uma estrutura predefinida.
|
||||
- Controle de Concorrência: Limita o número de execuções paralelas.
|
||||
- Condições do Gatilho: condições que devem ser atendidas antes que o gatilho seja acionado.
|
||||
- Rede: Configura o tamanho do bloco para transferência de dados e permite suprimir cabeçalhos de workflow nas respostas.
|
||||
- **Segurança**: Habilita **Entradas/Saídas Seguras para ocultar** dados sensíveis em logs e nas saídas.
|
||||
|
||||
**Configurações & Conexões de API:**
|
||||
|
||||
Um workflow tem diferentes configurações, como:
|
||||
- Endereços IP de entrada permitidos: Esta configuração permite restringir quem pode acionar ou iniciar seu Logic App. As opções são Qualquer IP, Apenas outros Logic Apps e Faixas de IP específicas.
|
||||
- Conta de integração: Aqui, você pode vincular seu Logic App a uma Conta de Integração.
|
||||
- Alta capacidade: Esta configuração permite que seu Logic App lide com mais solicitações rapidamente.
|
||||
- Retenção do histórico de execução: por quanto tempo o histórico das execuções do seu Logic App é mantido.
|
||||
|
||||
Você pode ver as diferentes conexões de API que o workflow possui. Dentro de cada uma dessas conexões, elas têm diferentes propriedades e a possibilidade de editar a conexão de API onde o tipo de autenticação pode ser alterado.
|
||||
|
||||
**Histórico & Versões:**
|
||||
Tem a opção de acessar o **histórico** das diferentes execuções, mostrando Configurações, Saída, Parâmetros e o Código.
|
||||
|
||||
Também tem a opção de acessar diferentes **versões** do workflow, onde você pode verificar o código e alterar o workflow atual por uma versão anterior dele.
|
||||
|
||||
**Autorização:**
|
||||
Azure Logic Apps suportam **políticas de autorização** com Entra ID para proteger gatilhos baseados em solicitações, exigindo um token de acesso válido. Este token deve incluir reivindicações específicas:
|
||||
- Emissor (iss) para verificar o provedor de identidade
|
||||
- Público (aud) para garantir que o token é destinado ao Logic App
|
||||
- Assunto (sub) para identificar o chamador
|
||||
- ID do JWT (identificador do Token Web JSON)
|
||||
- Reivindicação Personalizada
|
||||
|
||||
Quando uma solicitação é recebida, Logic Apps valida o token contra essas reivindicações e permite a execução apenas se corresponder à política configurada. Isso pode ser usado para permitir que outro inquilino acione o workflow ou negar o acionamento de outras fontes, por exemplo, permitindo o acionamento apenas se vier de https://login.microsoftonline.com/.
|
||||
|
||||
**Chaves de Acesso:**
|
||||
Quando você salva um gatilho baseado em solicitações pela primeira vez, Logic Apps cria automaticamente um endpoint exclusivo com uma assinatura SAS (criada a partir da Chave de Acesso) que concede permissão para chamar o workflow. Esta assinatura SAS está embutida na URL do gatilho. Esta chave pode ser regenerada e dará uma nova assinatura SAS, mas as chaves não podem ser listadas.
|
||||
|
||||
A URL para invocá-lo com a Chave de Acesso:
|
||||
|
||||
https://<region>.logic.azure.com:443/workflows/<workflow-id>/triggers/<trigger-name>/paths/invoke?api-version=<api-version>&sp=%2Ftriggers%2F<trigger-name>%2Frun&sv=<version>&sig=<signature>
|
||||
|
||||
### Enumeração
|
||||
|
||||
@@ -102,11 +150,6 @@ az rest \
|
||||
--uri "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/workflows/{workflowName}/versions/{versionName}?api-version=2016-06-01" \
|
||||
--headers "Content-Type=application/json"
|
||||
|
||||
az rest \
|
||||
--method GET \
|
||||
--uri "https://examplelogicapp1994.scm.azurewebsites.net/api/functions/admin/download?includeCsproj=true&includeAppSettings=true" \
|
||||
--headers "Content-Type=application/json"
|
||||
|
||||
# List all Logic Apps in the specified resource group
|
||||
az logicapp list --resource-group <ResourceGroupName>
|
||||
|
||||
@@ -115,6 +158,20 @@ az logicapp show --name <LogicAppName> --resource-group <ResourceGroupName>
|
||||
|
||||
# List all application settings for a specific Logic App
|
||||
az logicapp config appsettings list --name <LogicAppName> --resource-group <ResourceGroupName>
|
||||
|
||||
# Get a Parameters from an Azure App Service using Azure REST API
|
||||
az rest --method GET --url "https://management.azure.com/subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.Web/sites/{app-service-name}/hostruntime/admin/vfs/parameters.json?api-version=2018-11-01&relativepath=1"
|
||||
|
||||
# Get webhook-triggered workflows from an Azure Logic App using Azure REST API
|
||||
az rest --method GET --url "https://management.azure.com/subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.Web/sites/{logic-app-name}/hostruntime/runtime/webhooks/workflow/api/management/workflows?api-version=2018-11-01"
|
||||
|
||||
# Get workflows from an Azure Logic App using Azure REST API
|
||||
az rest --method GET --url "https://management.azure.com/subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.Web/sites/{logic-app-name}/workflows?api-version=2018-11-01"
|
||||
|
||||
# Get details of a specific workflow including its connections and parameters in Azure Logic Apps using Azure REST API
|
||||
az rest --method GET --uri "https://management.azure.com/subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.Web/sites/{logic-app-name}/workflows/{workflow-name}?api-version=2018-11-01&\$expand=connections.json,parameters.json"
|
||||
|
||||
|
||||
```
|
||||
{{#endtab }}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user