AWS - Relational Database (RDS) Enum

HackTricksをサポートする

基本情報

AWSが提供する**リレーショナルデータベースサービス(RDS)**は、クラウド内のリレーショナルデータベースの展開、運用、スケーリングを簡素化することを目的としています。このサービスは、コスト効率とスケーラビリティの利点を提供し、ハードウェアのプロビジョニング、データベースの構成、パッチ適用、バックアップなどの労働集約的なタスクを自動化します。

AWS RDSは、MySQL、PostgreSQL、MariaDB、Oracle Database、Microsoft SQL Server、Amazon Auroraなど、広く使用されているさまざまなリレーショナルデータベースエンジンをサポートしており、MySQLとPostgreSQLの両方に互換性があります。

RDSの主な機能は以下の通りです:

  • データベースインスタンスの管理が簡素化されます。

  • 読み取り性能を向上させるためのリードレプリカの作成。

  • 高可用性とフェイルオーバー機構を確保するためのマルチアベイラビリティゾーン(AZ)デプロイメントの構成。

  • 他のAWSサービスとの統合、例えば:

  • AWSアイデンティティおよびアクセス管理(IAM)による堅牢なアクセス制御。

  • AWS CloudWatchによる包括的な監視とメトリクス。

  • AWSキー管理サービス(KMS)による静止データの暗号化の確保。

認証情報

DBクラスターを作成する際、マスターユーザー名を設定できます(デフォルトは**admin**)。このユーザーのパスワードを生成するには、次のいずれかを行うことができます:

  • 自分でパスワードを指定する

  • RDSに自動生成させる

  • RDSにAWS Secret ManagerでKMSキーで暗号化されたものを管理させる

認証

認証オプションは3種類ありますが、マスターパスワードの使用は常に許可されています

公開アクセスとVPC

デフォルトでは、データベースに公開アクセスは付与されませんが、付与される可能性があります。したがって、デフォルトでは、選択したセキュリティグループ(EC2 SGに保存されている)が許可している場合にのみ、同じVPC内のマシンがアクセスできます。

DBインスタンスを公開する代わりに、RDSプロキシを作成することが可能で、これによりDBクラスターのスケーラビリティ可用性が向上します。

さらに、データベースポートも変更可能です

暗号化

暗号化はデフォルトで有効になっており、AWS管理キーを使用します(代わりにCMKを選択することもできます)。

暗号化を有効にすることで、ストレージ、スナップショット、リードレプリカ、およびバックアップの静止データの暗号化が有効になります。この暗号化を管理するためのキーは、KMSを使用して発行できます。 データベースが作成された後にこのレベルの暗号化を追加することはできません。作成時に行う必要があります

ただし、暗号化されていないデータベースを暗号化するための回避策があります。暗号化されていないデータベースのスナップショットを作成し、そのスナップショットの暗号化されたコピーを作成し、その暗号化されたスナップショットを使用して新しいデータベースを作成することで、最終的にデータベースが暗号化されます。

透過的データ暗号化(TDE)

RDSに内在するアプリケーションレベルの暗号化機能に加えて、RDSは静止データを保護するための追加のプラットフォームレベルの暗号化メカニズムもサポートしています。これには、OracleおよびSQL Server用の**透過的データ暗号化(TDE)**が含まれます。ただし、TDEは静止データを暗号化することでセキュリティを強化しますが、データベースのパフォーマンスに影響を与える可能性があることに注意が必要です。このパフォーマンスへの影響は、MySQLの暗号化関数やMicrosoft Transact-SQLの暗号化関数と併用した場合に特に顕著です。

TDEを利用するには、いくつかの前提条件が必要です:

  1. オプショングループの関連付け

  • データベースはオプショングループに関連付けられている必要があります。オプショングループは、設定や機能のコンテナとして機能し、セキュリティの強化を含むデータベース管理を容易にします。

  • ただし、オプショングループは特定のデータベースエンジンとバージョンにのみ利用可能であることに注意が必要です。

  1. オプショングループへのTDEの含有

  • オプショングループに関連付けられた後、Oracleの透過的データ暗号化オプションをそのグループに含める必要があります。

  • TDEオプションがオプショングループに追加されると、それは永久的なものであり、削除することはできません。

  1. TDE暗号化モード

  • TDEは2つの異なる暗号化モードを提供します:

  • TDEテーブルスペース暗号化:このモードは、全体のテーブルを暗号化し、より広範なデータ保護を提供します。

  • TDEカラム暗号化:このモードは、データベース内の特定の個別要素を暗号化することに焦点を当て、暗号化されるデータに対するより細かな制御を可能にします。

これらの前提条件とTDEの運用の複雑さを理解することは、RDS内での暗号化の効果的な実装と管理において重要であり、データのセキュリティと必要な基準への準拠を確保します。

列挙

# Clusters info
## Get Endpoints, username, port, iam auth enabled, attached roles, SG
aws rds describe-db-clusters
aws rds describe-db-cluster-endpoints #Cluster URLs
aws rds describe-db-cluster-backtracks --db-cluster-identifier <cluster-name>

## Cluster snapshots
aws rds describe-db-cluster-snapshots

# Get DB instances info
aws rds describe-db-instances #username, url, port, vpc, SG, is public?
aws rds describe-db-security-groups

## Find automated backups
aws rds describe-db-instance-automated-backups

## Find snapshots
aws rds describe-db-snapshots
aws rds describe-db-snapshots --include-public --snapshot-type public
## Restore snapshot as new instance
aws rds restore-db-instance-from-db-snapshot --db-instance-identifier <ID> --db-snapshot-identifier <ID> --availability-zone us-west-2a

# Any public snapshot in the account
aws rds describe-db-snapshots --snapshot-type public

# Proxies
aws rds describe-db-proxy-endpoints
aws rds describe-db-proxy-target-groups
aws rds describe-db-proxy-targets

## reset credentials of MasterUsername
aws rds modify-db-instance --db-instance-identifier <ID> --master-user-password <NewPassword> --apply-immediately

認証されていないアクセス

権限昇格

エクスプロイト後

永続性

SQLインジェクション

DynamoDBデータにSQL構文でアクセスする方法があるため、典型的なSQLインジェクションも可能です

HackTricksをサポートする

Last updated