

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 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/)。如需有關歐洲資料保護的相關資訊，請參閱*安全性部落格*上的[共同責任模型和 GDPR](https://aws.amazon.com/blogs/security/the-aws-shared-responsibility-model-and-gdpr/) 部落格文章。

基於資料保護目的，我們建議您保護登入資料，並使用 AWS IAM Identity Center 或 設定個別使用者 AWS Identity and Access Management。如此一來，每個使用者都只會獲得授與完成其任務所必須的許可。我們也建議您採用下列方式保護資料：
+ 每個帳戶均要使用多重要素驗證 (MFA)。
+ 使用 SSL/TLS 與資源通訊。我們需要 TLS 1.2 並建議使用 TLS 1.3。
+ 使用 設定 API 和使用者活動記錄 AWS CloudTrail。如需使用追蹤功能擷取活動的更多詳細資訊，請參閱*使用者指南*中的[使用追蹤功能](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-trails.html)。
+ 使用加密解決方案，以及 AWS 服務內的所有預設安全控制。
+ 使用進階的受管安全服務 (例如 Amazon Macie)，協助探索和保護儲存在 Amazon S3 的敏感資料。

我們強烈建議您絕對不要將客戶的電子郵件地址等機密或敏感資訊，放在標籤或自由格式的文字欄位中，例如**名稱**欄位。這包括當您使用 或使用 主控台、API AWS CLI、 或 AWS SDKs的其他 時。您在標籤或自由格式文字欄位中輸入的任何資料都可能用於計費或診斷日誌。如果您提供外部伺服器的 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 提供 HTTPS 端點用於加密傳輸中的資料。
+ 為了保護向 Aurora DSQL 發出 API 請求的完整性，必須由發起人簽署 API 呼叫。根據簽章第 4 版簽署程序 (Sigv4)，呼叫由 X.509 憑證或客戶的 AWS 私密存取金鑰進行簽署。如需詳細資訊，請參閱 *AWS 一般參考* 中的 [Signature 第 4 版簽署程序](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html)。
+  使用 AWS CLI 或其中一個 AWS SDKs 向 提出請求 AWS。這些工具會自動使用您設定工具時指定的存取金鑰，替您簽署請求。

#### FIPS 合規
<a name="fips-compliance"></a>

Aurora DSQL 資料平面端點 （用於資料庫連線的叢集端點） 預設會使用 FIPS 140-2 驗證的密碼編譯模組。叢集連線不需要單獨的 FIPS 端點。

對於控制平面操作，Aurora DSQL 在支援的區域提供專用 FIPS 端點。如需控制平面 FIPS 端點的詳細資訊，請參閱《》中的 [Aurora DSQL 端點和配額](https://docs.aws.amazon.com/general/latest/gr/dsql.html)*AWS 一般參考*。

靜態加密請參閱 [Aurora DSQL 的靜態加密](data-encryption.md#encryption-at-rest)。

### 網際網路流量隱私權
<a name="inter-network-traffic-privacy"></a>

Aurora DSQL 與內部部署應用程式之間，以及 Aurora DSQL 與相同資源內其他 AWS 資源之間的連線都會受到保護 AWS 區域。

您的私有網路與 之間有兩個連線選項 AWS：
+ An 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。
+ 具備完美轉送私密(PFS)的密碼套件，例如 DHE (Ephemeral Diffie-Hellman)或 ECDHE (Elliptic Curve Ephemeral Diffie-Hellman)。現代系統(如 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 搜尋 (**命令** \$1 **空格**)

1. 搜尋**鑰匙圈存取**

1. 選擇**系統鑰匙圈**之下的**系統根目錄**

1. 在憑證清單中尋找 **Amazon 根 CA 1**

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

**注意**  
由於 psql Windows 用戶端的已知問題，使用系統根憑證 (`sslrootcert=system`) 可能會傳回下列錯誤：`SSL error: unregistered scheme`。您可以遵循 [從 Windows 進行連線](#connect-windows) 作為使用 SSL 連線至叢集的替代方法。

如果您的作業系統並未安裝 **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>

 在設定 SSL/TLS 憑證以安全連線至 Aurora DSQL 叢集之前，請先確定您符合下列先決條件。
+ 已安裝 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 [資料庫連線控制功能](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/) 