# Az - PostgreSQL ポストエクスプロイテーション

{{#include ../../../banners/hacktricks-training.md}}

## PostgreSQL データベース ポストエクスプロイテーション
PostgreSQL データベースに関する詳細情報は以下を確認してください:

{{#ref}}
../az-services/az-postgresql.md
{{#endref}}

### pg_azure_storage 拡張機能を使用してストレージアカウントにアクセスする

PostgreSQL サーバーから Azure ストレージアカウントにアクセスするために、拡張機能 **`pg_azure_storage`** を使用することが可能です。これは、サーバーに割り当てられたマネージドアイデンティティの権限を使用してストレージアカウントにアクセスします。

この技術については、特権昇格セクションで説明されている内容を確認してください:

{{#ref}}
../az-privilege-escalation/az-postgresql-privesc.md
{{#endref}}

### `Microsoft.DBforPostgreSQL/flexibleServers/databases/write` && `Microsoft.DBforPostgreSQL/flexibleServers/databases/read`

この権限を使用すると、Azure の Postgres フレキシブルサーバーインスタンス内に新しいデータベースを作成できます。このアクション自体は既存のリソースを変更しませんが、過剰または不正なデータベースの作成はリソースの消費やサーバーの潜在的な悪用につながる可能性があります。
```bash
az postgres flexible-server db create \
--server-name <server_name> \
--resource-group <resource_group_name> \
--database-name <database_name>
```
### `Microsoft.DBforPostgreSQL/flexibleServers/advancedThreatProtectionSettings/write` && `Microsoft.DBforPostgreSQL/flexibleServers/advancedThreatProtectionSettings/read`

この権限を使用すると、Azure上のPostgres Flexible ServerインスタンスのAdvanced Threat Protection (ATP)設定を構成または更新できます。これにより、異常な活動や潜在的な脅威を検出し、対応するために設計されたセキュリティ機能を有効または無効にすることができます。
```bash
az postgres flexible-server threat-protection-policy update \
--name <server_name> \
--resource-group <resource_group_name> \
--state <Enabled|Disabled>
```
### `Microsoft.DBforPostgreSQL/flexibleServers/firewallRules/write`, `Microsoft.DBforPostgreSQL/flexibleServers/read` && `Microsoft.DBforPostgreSQL/flexibleServers/firewallRules/read`

この権限を使用すると、Azure上のPostgres Flexible Serverインスタンスのファイアウォールルールを作成または変更できます。これにより、どのIPアドレスまたは範囲がサーバーにアクセスできるかを制御できます。この権限の不正または不適切な使用は、サーバーを望ましくないまたは悪意のあるアクセスにさらす可能性があります。
```bash
# Create Rule
az postgres flexible-server firewall-rule create \
--name <server_name> \
--resource-group <resource_group_name> \
--rule-name <rule_name> \
--start-ip-address <start_ip> \
--end-ip-address <end_ip>

# Update Rule
az postgres flexible-server firewall-rule update \
--name <server_name> \
--resource-group <resource_group_name> \
--rule-name <rule_name> \
--start-ip-address <start_ip> \
--end-ip-address <end_ip>
```
### `Microsoft.DBforPostgreSQL/flexibleServers/configurations/write` && `Microsoft.DBforPostgreSQL/flexibleServers/configurations/read`

この権限を持つことで、Azure上のPostgres Flexible Serverインスタンスの設定を更新できます。これにより、パフォーマンス調整、セキュリティ設定、または運用設定などのサーバーパラメータをカスタマイズできます。
```bash
az postgres flexible-server parameter set \
--resource-group <resource_group_name> \
--server-name <server_name> \
--name <parameter_name> \
--value <parameter_value>
```
### `Microsoft.DBforPostgreSQL/flexibleServers/stop/action`

この権限を使用すると、Azure上のPostgreSQL Flexible Serverインスタンスを停止できます。サーバーを停止すると、一時的なサービスの中断が発生し、データベースに依存するアプリケーションやユーザーに影響を与える可能性があります。
```bash
az postgres flexible-server stop \
--name <server_name> \
--resource-group <resource_group_name>
```

### `Microsoft.DBforPostgreSQL/flexibleServers/start/action`
With this permission, you can start a stopped PostgreSQL Flexible Server instance on Azure. Starting a server restores its availability, enabling applications and users to reconnect and access the database.

```bash
az postgres flexible-server start \
--name <server_name> \
--resource-group <resource_group_name>
```

### `Microsoft.DBforPostgreSQL/flexibleServers/read`, `Microsoft.DBforPostgreSQL/flexibleServers/write` && `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action`

With this permission, you can assign a user-assigned managed identity to postgres flexible servers.

```bash
az postgres flexible-server identity assign \
--resource-group <ResourceGroupName> \
--server-name <ServerName> \
--identity <IdentityName>
```

### `*/delete`
With this permissions you can delete resources related to postgres server in Azure such as server, firewalls, managed identities or configurations


{{#include ../../../banners/hacktricks-training.md}}
