

# Amazon Aurora DSQL でのデータ保護
<a name="data-protection"></a>

[責任共有モデル](https://aws.amazon.com/compliance/shared-responsibility-model/)は、データ保護に適用されます。このモデルで説明されているように、AWS クラウドのすべてを実行するグローバルインフラストラクチャを保護する責任があります。ユーザーは、このインフラストラクチャでホストされるコンテンツに対する管理を維持する責任があります。また、使用する「」のセキュリティ設定と管理タスクもユーザーの責任となります。データプライバシーの詳細については、[データプライバシーに関するよくある質問](https://aws.amazon.com/compliance/data-privacy-faq/)を参照してください。欧州でのデータ保護の詳細については、[ セキュリティブログ](https://aws.amazon.com/blogs/security/the-aws-shared-responsibility-model-and-gdpr/)に投稿された「** 責任共有モデルおよび GDPR」ブログを参照してください。

データを保護するため、認証情報を保護し、AWS IAM アイデンティティセンター または AWS Identity and Access Management を使用して個々のユーザーをセットアップすることをお勧めします。この方法により、それぞれのジョブを遂行するために必要な権限のみが各ユーザーに付与されます。また、次の方法でデータを保護することもお勧めします:
+ 各アカウントで多要素認証 (MFA) を使用します。
+ SSL/TLS を使用して リソースと通信します。TLS 1.2 は必須ですが、TLS 1.3 を推奨します。
+ AWS CloudTrail で API とユーザーアクティビティロギングを設定します。証跡を使用してアクティビティをキャプチャする方法については、「*ユーザーガイド*」の「[Working with trails](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-trails.html)」を参照してください。
+ AWS のサービス内のすべてのデフォルトセキュリティコントロールに加え、暗号化ソリューションを使用します。
+ Amazon Macie などの高度な管理されたセキュリティサービスを使用します。これらは、Amazon S3 に保存されている機密データの検出と保護を支援します。

お客様の E メールアドレスなどの極秘または機密情報を、タグ、または **[名前]** フィールドなどの自由形式のテキストフィールドに含めないことを強くお勧めします。これは、コンソール、API、AWS CLI、または ‬AWS SDK を使用して操作する場合も同様です。タグ、または名前に使用される自由形式のテキストフィールドに入力されるデータは、請求または診断ログに使用される場合があります。外部サーバーに URL を提供する場合、そのサーバーへのリクエストを検証できるように、認証情報を URL に含めないことを強くお勧めします。



## データ暗号化
<a name="data-encryption"></a>

Amazon Aurora DSQL は、ミッションクリティカルで重要なデータストレージのために設計された、高い耐久性を備えたストレージインフラストラクチャです。データは、冗長性を確保するため、同一の Aurora DSQL リージョン内の複数施設に分散した複数のデバイスに保存されます。

### 転送中の暗号化
<a name="encryption-transit"></a>

デフォルトでは、転送中の暗号化が設定されます。Aurora DSQL は TLS を使用して、SQL クライアントと Aurora DSQL 間のすべてのトラフィックを暗号化します。

AWS CLI、SDK、または API クライアントと Aurora DSQL エンドポイントの間で転送中のデータの暗号化と署名
+ Aurora DSQL には、転送中のデータを暗号化するための HTTP エンドポイントが用意されています。
+ Aurora DSQL への API 要求の整合性を保護するには、API コールが呼び出し元によって署名されている必要があります。呼び出しは、署名バージョン 4 の署名プロセス (Sigv4) に従って、X.509 証明書またはお客様の AWS シークレットアクセスキーを使用して署名される必要があります。詳細については、[https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html)*の「AWS 全般のリファレンス署名バージョン 4 の署名プロセス*」を参照してください。
+  AWS CLI または AWS SDK の 1 つを使用して、 AWSに要求を送信します。これらのツールで、設定時に指定されたアクセスキーを使用すると、自動的に要求に署名されます。

#### FIPS 準拠
<a name="fips-compliance"></a>

Aurora DSQL データプレーンエンドポイント (データベース接続に使用されるクラスターエンドポイント) は、デフォルトで FIPS 140-2 検証済み暗号化モジュールを使用します。クラスター接続に個別の FIPS エンドポイントは必要ありません。

コントロールプレーンオペレーションの場合、Aurora DSQL はサポートされているリージョン専用の FIPS エンドポイントを提供します。コントロールプレーン FIPS エンドポイントの詳細については、「*AWS 全般のリファレンス*」の「[Aurora DSQL endpoints and quotas](https://docs.aws.amazon.com/general/latest/gr/dsql.html)」を参照してください。

保管中の暗号化については、「[Aurora DSQL での保管中の暗号化](data-encryption.md#encryption-at-rest)」を参照してください。

### ネットワーク間トラフィックのプライバシー
<a name="inter-network-traffic-privacy"></a>

接続は、Aurora DSQL とオンプレミスのアプリケーション間、および Aurora DSQL と、同じ AWS リージョン内の他の AWS リソース間で保護されます。

プライベートネットワークと AWS との間には 2 つの接続オプションがあります 
+ AWS Site-to-Site VPN 接続。詳細については、「[AWS Site-to-Site VPN とは](https://docs.aws.amazon.com/vpn/latest/s2svpn/VPC_VPN.html)」を参照してください。
+ Direct Connect 接続。詳細については、「[Direct Connect とは?](https://docs.aws.amazon.com/directconnect/latest/UserGuide/Welcome.html)」を参照してください。

AWS が公開する API オペレーションを使用することにより、ネットワークを通じて、Aurora DSQL へのアクセスを取得できます。クライアントは次をサポートする必要があります。
+ Transport Layer Security (TLS)。TLS 1.2 が必須で、TLS 1.3 をお勧めします。
+ DHE (楕円ディフィー・ヘルマン鍵共有) や ECDHE (楕円曲線ディフィー・ヘルマン鍵共有) などの完全前方秘匿性 (PFS) による暗号スイート。これらのモードは Java 7 以降など、ほとんどの最新システムでサポートされています。

## 監視リージョンでのデータ保護
<a name="witness-regions"></a>

マルチリージョンクラスターを作成すると、監視リージョンは、暗号化されたトランザクションの同期レプリケーションに参加することで、自動障害復旧を有効にするのに役立ちます。ピア接続されたクラスターが使用できなくなっても、監視リージョンは引き続きデータベースの書き込みを検証して処理できるため、可用性が失われることはありません。

監視リージョンは、次の設計機能を通じてデータを保護します。
+ 監視リージョンは、暗号化されたトランザクションログのみを受信して保存します。暗号化キーをホスト、保存、または送信することはありません。
+ 監視リージョンは、書き込みトランザクションのログ記録とクォーラム機能のみを行います。設計上、データを読み取ることはできません。
+ 監視リージョンは、クラスター接続エンドポイントまたはクエリプロセッサなしで動作します。これにより、ユーザーデータベースへのアクセスが防止されます。

監視リージョンの詳細については、「[マルチリージョンクラスターの設定](configuring-multi-region-clusters.md)」を参照してください。

# Aurora DSQL 接続用の SSL/TLS 証明書の設定
<a name="configure-root-certificates"></a><a name="ssl-certificate-overview"></a>

Aurora DSQL では、すべての接続で Transport Layer Security (TLS) 暗号化を使用する必要があります。安全な接続を確立するには、クライアントシステムが Amazon ルート認証局 (Amazon ルート CA 1) を信頼する必要があります。この証明書は、多くのオペレーティングシステムにプリインストールされています。このセクションでは、さまざまなオペレーティングシステムにプリインストールされている Amazon ルート CA 1 証明書を検証する手順と、証明書が存在しない場合は手動でインストールする手順について説明します。

PostgreSQL バージョン 17 を使用することをお勧めします。

**重要**  
本番環境では、最高レベルの接続セキュリティを確保するために `verify-full` SSL モードを使用することをお勧めします。このモードでは、サーバー証明書が信頼できる認証局によって署名されていること、およびサーバーのホスト名が証明書と一致することを確認します。

## プリインストールされた証明書の検証
<a name="verify-installed-certificates"></a>

ほとんどのオペレーティングシステムでは、**Amazon ルート CA 1** は既にプリインストールされています。これを検証するには、以下の手順に従います。

### Linux (RedHat/CentOS/Fedora)
<a name="verify-linux"></a>

ターミナルで以下のコマンドを実行します。

```
trust list | grep "Amazon Root CA 1"
```

証明書がインストールされている場合、次の出力が表示されます。

```
label: Amazon Root CA 1
```

### macOS
<a name="verify-macos"></a>

1. Spotlight 検索 (**Command** \$1 **スペース**) を開く

1. **[キーチェーンアクセス]** を検索する

1. **[システムキーチェーン]** で **[システムルート]** を選択する

1. 証明書リストで **[Amazon ルート CA 1]** を検索する

### Server
<a name="verify-windows"></a>

**注記**  
psql Windows クライアントの既知の問題により、システムルート証明書 (`sslrootcert=system`) を使用すると、`SSL error: unregistered scheme` エラーが返されることがあります。SSL を使用してクラスターに接続する代替方法として「[Windows からの接続](#connect-windows)」を使用できます。

**Amazon ルート CA 1** がオペレーティングシステムにインストールされていない場合は、以下の手順に従います。

## 証明書のインストール
<a name="install-certificates"></a>

 `Amazon Root CA 1` 証明書がオペレーティングシステムにプリインストールされていない場合は、Aurora DSQL クラスターへの安全な接続を確立するために、証明書を手動でインストールする必要があります。

### Linux 証明書のインストール
<a name="install-linux"></a>

Linux システムに Amazon ルート CA 証明書をインストールするには、次の手順に従います。

1. ルート証明書をダウンロードします。

   ```
   wget https://www.amazontrust.com/repository/AmazonRootCA1.pem
   ```

1. 証明書をコピーしてトラストストアに追加します。

   ```
   sudo cp ./AmazonRootCA1.pem /etc/pki/ca-trust/source/anchors/
   ```

1. CA トラストストアを更新します。

   ```
   sudo update-ca-trust
   ```

1. インストールを確認します。

   ```
   trust list | grep "Amazon Root CA 1"
   ```

### macOS 証明書のインストール
<a name="install-macos"></a>

これらの証明書のインストール手順はオプションです。「[Linux 証明書のインストール](#install-linux)」も macOS で機能します。

1. ルート証明書をダウンロードします。

   ```
   wget https://www.amazontrust.com/repository/AmazonRootCA1.pem
   ```

1. 証明書をシステムキーチェーンに追加します。

   ```
   sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain AmazonRootCA1.pem
   ```

1. インストールを確認します。

   ```
   security find-certificate -a -c "Amazon Root CA 1" -p /Library/Keychains/System.keychain
   ```

## SSL/TLS 検証を使用した接続
<a name="connect-using-certificates"></a>

 Aurora DSQL クラスターへの安全な接続のために SSL/TLS 証明書を設定する前に、次の動作条件を満たしていることを確認してください。
+ PostgreSQL バージョン 17 がインストールされている
+ AWS CLI が適切な認証情報で設定されている
+ Aurora DSQL クラスターエンドポイント情報

### Linux からの接続
<a name="connect-linux"></a>

1. 認証トークンを生成および設定します。

   ```
   export PGPASSWORD=$(aws dsql generate-db-connect-admin-auth-token --region=your-cluster-region --hostname your-cluster-endpoint)
   ```

1. システム証明書を使用して接続します (プリインストールされている場合)。

   ```
   PGSSLROOTCERT=system \
   PGSSLMODE=verify-full \
   psql --dbname postgres \
   --username admin \
   --host your-cluster-endpoint
   ```

1. または、ダウンロードした証明書を使用して接続します。

   ```
   PGSSLROOTCERT=/full/path/to/root.pem \
   PGSSLMODE=verify-full \
   psql --dbname postgres \
   --username admin \
   --host your-cluster-endpoint
   ```

**注記**  
 PGSSLMODE 設定の詳細については、PostgreSQL 17「[Database Connection Control Functions](https://www.postgresql.org/docs/current/libpq-connect.html)」ドキュメントの「[sslmode](https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-CONNECT-SSLMODE)」を参照してください。

### macOS からの接続
<a name="connect-macos"></a>

1. 認証トークンを生成および設定します。

   ```
   export PGPASSWORD=$(aws dsql generate-db-connect-admin-auth-token --region=your-cluster-region --hostname your-cluster-endpoint)
   ```

1. システム証明書を使用して接続します (プリインストールされている場合)。

   ```
   PGSSLROOTCERT=system \
   PGSSLMODE=verify-full \
   psql --dbname postgres \
   --username admin \
   --host your-cluster-endpoint
   ```

1. または、ルート証明書をダウンロードして `root.pem` として保存します (証明書がプリインストールされていない場合)。

   ```
   PGSSLROOTCERT=/full/path/to/root.pem \
   PGSSLMODE=verify-full \
   psql —dbname postgres \
   --username admin \
   --host your_cluster_endpoint
   ```

1. psql を使用して接続します。

   ```
   PGSSLROOTCERT=/full/path/to/root.pem \
   PGSSLMODE=verify-full \
   psql —dbname postgres \
   --username admin \
   --host your_cluster_endpoint
   ```

### Windows からの接続
<a name="connect-windows"></a>

#### コマンドプロンプトを使用する
<a name="windows-command-prompt"></a>

1. 認証トークンを生成する

   ```
   aws dsql generate-db-connect-admin-auth-token ^
   --region=your-cluster-region ^
   --expires-in=3600 ^
   --hostname=your-cluster-endpoint
   ```

1. パスワード環境変数を設定する

   ```
   set "PGPASSWORD=token-from-above"
   ```

1. SSL を設定します。

   ```
   set PGSSLROOTCERT=C:\full\path\to\root.pem
   set PGSSLMODE=verify-full
   ```

1. データベースに接続します。

   ```
   "C:\Program Files\PostgreSQL\17\bin\psql.exe" --dbname postgres ^
   --username admin ^
   --host your-cluster-endpoint
   ```

#### PowerShell を使用する
<a name="windows-powershell"></a>

1. 認証トークンを生成および設定します。

   ```
   $env:PGPASSWORD = (aws dsql generate-db-connect-admin-auth-token --region=your-cluster-region --expires-in=3600 --hostname=your-cluster-endpoint)
   ```

1. SSL を設定します。

   ```
   $env:PGSSLROOTCERT='C:\full\path\to\root.pem'
   $env:PGSSLMODE='verify-full'
   ```

1. データベースに接続します。

   ```
    "C:\Program Files\PostgreSQL\17\bin\psql.exe" --dbname postgres `
   --username admin `
   --host your-cluster-endpoint
   ```

## その他のリソース
<a name="additional-resources"></a>
+  [PostgreSQL SSL ドキュメント](https://www.postgresql.org/docs/current/libpq-ssl.html) 
+  [Amazon Trust Services](https://www.amazontrust.com/repository/) 