6.6 KiB
Az - PostgreSQL Databases
{{#include ../../../banners/hacktricks-training.md}}
Azure PostgreSQL
Azure Database for PostgreSQL는 PostgreSQL 커뮤니티 에디션을 기반으로 한 완전 관리형 관계형 데이터베이스 서비스입니다. 다양한 애플리케이션 요구에 대한 확장성, 보안 및 유연성을 제공하도록 설계되었습니다. Azure MySQL과 유사하게, PostgreSQL은 두 가지 배포 모델을 제공합니다:
- Single Server (퇴역 경로에 있음):
- 간단하고 비용 효율적인 PostgreSQL 배포를 위해 최적화됨.
- 자동 백업, 기본 모니터링 및 고가용성 기능을 갖춤.
- 예측 가능한 작업 부하를 가진 애플리케이션에 적합.
- Flexible Server:
- 데이터베이스 관리 및 구성에 대한 더 큰 제어를 제공.
- 동일한 영역 및 영역 간의 고가용성을 지원.
- 탄력적 확장, 자동 유지 관리 및 비용 절감 기능을 갖춤.
- 비용 최적화를 위해 서버를 시작하고 중지할 수 있음.
주요 기능
- 사용자 정의 유지 관리 창: 중단을 최소화하기 위해 업데이트를 예약합니다.
- 활성 모니터링: 데이터베이스 성능을 추적하고 개선하기 위한 상세한 메트릭 및 로그에 접근합니다.
- 서버 중지/시작: 사용자가 서버를 중지하고 시작할 수 있습니다.
- 자동 백업: 최대 35일 동안 구성 가능한 보존 기간을 가진 내장된 일일 백업.
- 역할 기반 접근: Azure Active Directory를 통해 사용자 권한 및 관리 접근을 제어합니다.
- 보안 및 네트워킹: 안전한 데이터베이스 접근을 위한 서버 방화벽 규칙을 관리하고 필요에 따라 가상 네트워크 구성을 분리할 수 있습니다.
열거
{% tabs %} {% tab title="az cli" %} {% code overflow="wrap" %}
# List servers in a resource group
az postgres flexible-server list --resource-group <resource-group-name>
# List databases in a flexible-server
az postgres flexible-server db list --resource-group <resource-group-name> --server-name <server_name>
# Show specific details of a Postgre database
az postgres flexible-server db show --resource-group <resource-group-name> --server-name <server_name> --database-name <database_name>
# List firewall rules of the a server
az postgres flexible-server firewall-rule list --resource-group <resource-group-name> --name <server_name>
# List parameter values for a felxible server
az postgres flexible-server parameter list --resource-group <resource-group-name> --server-name <server_name>
# List private link
az postgres flexible-server private-link-resource list --resource-group <resource-group-name> --server-name <server_name>
# List all ad-admin in a server
az postgres flexible-server ad-admin list --resource-group <resource-group-name> --server-name <server_name>
# List all user assigned managed identities from the server
az postgres flexible-server identity list --resource-group <resource-group-name> --server-name <server_name>
# List the server backups
az postgres flexible-server backup list --resource-group <resource-group-name> --name <server_name>
# List all read replicas for a given server
az postgres flexible-server replica list --resource-group <resource-group-name> --name <server_name>
# List migrations
az postgres flexible-server migration list --resource-group <resource-group-name> --name <server_name>
# Get the server's advanced threat protection setting
az postgres flexible-server advanced-threat-protection-setting show --resource-group <resource-group-name> --name <server_name>
# List all of the maintenances of a flexible server
az postgres flexible-server maintenance list --resource-group <resource-group-name> --server-name <server_name>
# List log files for a server.
az postgres flexible-server server-logs list --resource-group <resource-group-name> --server-name <server_name>
{% endcode %} {% endtab %}
{% tab title="Az PowerShell" %} {% code overflow="wrap" %}
Get-Command -Module Az.PostgreSql
# List flexible-servers in a resource group
Get-AzPostgreSqlFlexibleServer -ResourceGroupName <resource-group-name>
# List databases in a flexible-server
Get-AzPostgreSqlFlexibleServerDatabase -ResourceGroupName <resource-group-name> -ServerName <server_name>
# List firewall rules of the a flexible-server
Get-AzPostgreSqlFlexibleServerFirewallRule -ResourceGroupName <resource-group-name> -ServerName <server_name>
# List configuration settings of a flexible server
Get-AzPostgreSqlFlexibleServerConfiguration -ResourceGroupName <resource-group-name> -ServerName <server_name>
# Get the connection string for a flexible server
Get-AzPostgreSqlFlexibleServerConnectionString -ResourceGroupName <resource-group-name> -ServerName <server_name> -Client <client>
Get-AzPostgreSqlFlexibleServerLocationBasedCapability -Location <location>
# List servers in a resource group
Get-AzPostgreSqlServer -ResourceGroupName <resource-group-name>
{% endcode %} {% endtab %} {% endtabs %}
연결
rdbms-connect 확장을 사용하여 데이터베이스에 접근할 수 있습니다:
{% code overflow="wrap" %}
az postgres flexible-server connect -n <server-name> -u <username> -p <password> --interactive
#or execute commands
az postgres flexible-server execute \
-n <server-name> \
-u <username> \
-p "<password>" \
-d <database-name> \
--querytext "SELECT * FROM <table-name>;"
{% endcode %}
또는 {% code overflow="wrap" %}
psql -h testpostgresserver1994.postgres.database.azure.com -p 5432 -U adminuser <database-name>
{% endcode %}
References
- https://learn.microsoft.com/en-us/azure/postgresql/
- https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/service-overview
- https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/overview
Privilege Escalation
{% content-ref url="../az-privilege-escalation/az-postgresql-privesc.md" %} az-postgresql-privesc.md {% endcontent-ref %}
Post Exploitation
{% content-ref url="../az-post-exploitation/az-postgresql-post-exploitation.md" %} az-postgresql-post-exploitation.md {% endcontent-ref %}
ToDo
- ad-admin으로 접근할 방법을 찾아서 privesc 방법인지 확인하십시오.
{{#include ../../../banners/hacktricks-training.md}}