

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

# Amazon Aurora DSQL 的安全性
<a name="security"></a>

的雲端安全性 AWS 是最高優先順序。身為 AWS 客戶，您可以受益於資料中心和網路架構，這些架構是為了滿足最安全敏感組織的需求而建置。

安全性是 AWS 與您之間的共同責任。[共同責任模式](https://aws.amazon.com/compliance/shared-responsibility-model/)將其描述為雲端*的*安全性，和雲端*中*的安全性：
+ **雲端的安全性** – AWS 負責保護在 中執行 AWS 服務的基礎設施 AWS 雲端。 AWS 也為您提供可安全使用的服務。作為[AWS 合規計畫](https://aws.amazon.com/compliance/programs/)的一部分，第三方稽核人員會定期測試和驗證我們安全的有效性。若要了解適用於 Amazon Aurora DSQL 的合規計劃，請參閱[AWS 合規計劃的 服務範圍](https://aws.amazon.com/compliance/services-in-scope/)。
+ **雲端的安全性** – 您的責任取決於您使用 AWS 的服務。您也必須對其他因素負責，包括資料的機密性、您公司的要求和適用法律和法規。

本文件有助於您瞭解如何在使用 Aurora DSQL 時套用共同責任模型。下列主題將示範如何設定 Aurora DSQL 以達到您的安全與合規目標。您也會了解如何使用其他 AWS 服務來協助您監控和保護 Aurora DSQL 資源。

**Topics**
+ [

# AWS Amazon Aurora DSQL 的 受管政策
](security-iam-awsmanpol.md)
+ [

# Amazon Aurora DSQL 中的資料保護
](data-protection.md)
+ [

# 適用於 Amazon Aurora DSQL 的資料加密
](data-encryption.md)
+ [

# Aurora DSQL 的身分與存取管理
](security-iam.md)
+ [

# Aurora DSQL 的資源型政策
](resource-based-policies.md)
+ [

# 在 Aurora DSQL 中使用服務連結角色
](working-with-service-linked-roles.md)
+ [

# 使用 IAM 條件索引鍵搭配 Amazon Aurora DSQL
](using-iam-condition-keys.md)
+ [

# Amazon Aurora DSQL 中的事件回應
](incident-response.md)
+ [

# Amazon Aurora DSQL 的合規驗證
](compliance-validation.md)
+ [

# Amazon Aurora DSQL 的恢復能力
](disaster-recovery-resiliency.md)
+ [

# Amazon Aurora DSQL 中的基礎結構安全性
](infrastructure-security.md)
+ [

# Amazon Aurora DSQL 中的組態與漏洞分析
](configuration-vulnerability.md)
+ [

# 預防跨服務混淆代理人
](cross-service-confused-deputy-prevention.md)
+ [

# Aurora DSQL 的安全最佳實務
](best-practices-security.md)

# AWS Amazon Aurora DSQL 的 受管政策
<a name="security-iam-awsmanpol"></a>



 AWS 受管政策是由 AWS AWS 受管政策建立和管理的獨立政策旨在為許多常用案例提供許可，以便您可以開始將許可指派給使用者、群組和角色。

請記住， AWS 受管政策可能不會授予特定使用案例的最低權限許可，因為這些許可可供所有 AWS 客戶使用。我們建議您定義特定於使用案例的[客戶管理政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#customer-managed-policies)，以便進一步減少許可。

您無法變更 AWS 受管政策中定義的許可。如果 AWS 更新受 AWS 管政策中定義的許可，則更新會影響政策連接的所有委託人身分 （使用者、群組和角色）。當新的 AWS 服務 啟動或新的 API 操作可供現有服務使用時， AWS 最有可能更新 AWS 受管政策。

如需詳細資訊，請參閱 *IAM 使用者指南*中的 [AWS 受管政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies)。

 





## AWS 受管政策：AmazonAuroraDSQLFullAccess
<a name="security-iam-awsmanpol-AmazonAuroraDSQLFullAccess"></a>



您可以將 `AmazonAuroraDSQLFullAccess` 連接至使用者、群組與角色。

此政策會授予許可權限，藉此提供 Aurora DSQL 完整的管理存取權限。具有這些許可權限的主體可以：
+ 建立、刪除和更新 Aurora DSQL 叢集 (包括多區域叢集)
+ 管理叢集內嵌政策 （建立、檢視、更新和刪除政策）
+ 從叢集新增和移除標籤
+ 列出叢集並檢視個別叢集的相關資訊
+ 請參閱連接到 Aurora DSQL 叢集的標籤
+ 以任何使用者身分 (包括管理員) 連線至資料庫
+ 執行 Aurora DSQL 叢集的備份和還原作業，包括啟動、停止和監控備份和還原作業
+ 使用客戶受管 AWS KMS 金鑰進行叢集加密
+ 從 CloudWatch 檢視其帳戶的任何指標
+ 使用 AWS Fault Injection Service (AWS FIS) 將故障注入 Aurora DSQL 叢集以進行容錯能力測試
+ 建立 `dsql.amazonaws.com` 服務的服務連結角色 (建立叢集所需的角色)



**許可詳細資訊**

此政策包含以下許可。


+ `dsql`：授予權限允許主體完整存取 Aurora DSQL。
+ `cloudwatch`：授予許可權限允許將指標資料點發佈至 Amazon CloudWatch。
+ `iam`：授予許可權限允許建立服務連結角色。
+ `backup and restore`：授予許可權限以允許啟動、停止和監控 Aurora DSQL 叢集的備份和還原作業。
+ `kms`：在建立、更新或連線至叢集時，授予必要許可權限以驗證存取用於 Aurora DSQL 叢集加密的客戶受管金鑰。
+ `fis`—授予使用 AWS Fault Injection Service (AWS FIS) 將失敗注入 Aurora DSQL 叢集以進行容錯能力測試的許可。

您可在 IAM 主控台和[AWS 受管政策參考指南](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonAuroraDSQLFullAccess.html)找到 `AmazonAuroraDSQLFullAccess` 政策。

## AWS 受管政策：AmazonAuroraDSQLReadOnlyAccess
<a name="security-iam-awsmanpol-AmazonAuroraDSQLReadOnlyAccess"></a>



您可以將 `AmazonAuroraDSQLReadOnlyAccess` 連接至使用者、群組與角色。

允許讀取存取 Aurora DSQL。具有這類許可權限的主體可以列出叢集，並檢視個別叢集的相關資訊。他們可以查看連接到 Aurora DSQL 叢集的標籤，並檢視叢集內嵌政策。他們可以擷取及查看 CloudWatch 監控您帳戶的任何指標。



**許可詳細資訊**

此政策包含以下許可。




+ `dsql`：授予 Aurora DSQL 中所有資源的唯讀許可權限。
+ `cloudwatch`：授予許可權限以允許批次擷取 CloudWatch 指標資料，並依據擷取資料執行指標數學運算。

您可在 IAM 主控台和[AWS 受管政策參考指南](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonAuroraDSQLReadOnlyAccess.html)找到 `AmazonAuroraDSQLReadOnlyAccess` 政策。

## AWS 受管政策：AmazonAuroraDSQLConsoleFullAccess
<a name="security-iam-awsmanpol-AmazonAuroraDSQLConsoleFullAccess"></a>



您可以將 `AmazonAuroraDSQLConsoleFullAccess` 連接至使用者、群組與角色。

允許透過 AWS 管理主控台對 Amazon Aurora DSQL 進行完整管理存取。具有這些許可權限的主體可以：
+ 使用主控台建立、刪除和更新 Aurora DSQL 叢集 (包括多區域叢集)
+ 透過主控台管理叢集內嵌政策 （建立、檢視、更新和刪除政策）
+ 列出叢集並檢視個別叢集的相關資訊
+ 查看您帳戶任何資源的標籤
+ 以任何使用者身分 (包括管理員) 連線至資料庫
+ 執行 Aurora DSQL 叢集的備份和還原作業，包括啟動、停止和監控備份和還原作業
+ 使用客戶受管 AWS KMS 金鑰進行叢集加密
+  AWS CloudShell 從 啟動 AWS 管理主控台
+ 從您帳戶的 CloudWatch 檢視任何指標
+ 使用 AWS Fault Injection Service (AWS FIS) 將故障注入 Aurora DSQL 叢集以進行容錯能力測試
+ 建立 `dsql.amazonaws.com` 服務的服務連結角色 (建立叢集所需的角色)

您可以在 IAM 主控台和《 AWS 受管`AmazonAuroraDSQLConsoleFullAccess`政策參考指南》中的 [AmazonAuroraDSQLConsoleFullAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonAuroraDSQLConsoleFullAccess.html) 中找到政策。



**許可詳細資訊**

此政策包含以下許可。




+ `dsql`：透過 AWS 管理主控台授予 Aurora DSQL 中所有資源的完整管理許可權限。
+ `cloudwatch`：授予許可權限以允許批次擷取 CloudWatch 指標資料，並依據擷取資料執行指標數學運算。
+ `tag`- 授予許可，以傳回目前在 AWS 區域 為呼叫帳戶指定的 中使用的標籤索引鍵和值。
+ `backup and restore`：授予許可權限以允許啟動、停止和監控 Aurora DSQL 叢集的備份和還原作業。
+ `kms`：在建立、更新或連線至叢集時，授予必要許可權限以驗證存取用於 Aurora DSQL 叢集加密的客戶受管金鑰。
+ `cloudshell`- 授予啟動 AWS CloudShell 以與 Aurora DSQL 互動的許可。
+ `ec2`：授予許可權限以允許檢視 Aurora DSQL 連線所需的 Amazon VPC 端點資訊。
+ `fis`- 授予許可，以使用 AWS FIS 將故障注入 Aurora DSQL 叢集以進行容錯能力測試。
+ `access-analyzer:ValidatePolicy` 在政策編輯器中授予 linter 的許可，該政策可提供目前政策中錯誤、警告和安全問題的即時意見回饋。
+ `fis`—授予使用 AWS Fault Injection Service (AWS FIS) 將失敗注入 Aurora DSQL 叢集以進行容錯能力測試的許可。

您可在 IAM 主控台和[AWS 受管政策參考指南](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonAuroraDSQLConsoleFullAccess.html)找到 `AmazonAuroraDSQLConsoleFullAccess` 政策。

## AWS 受管政策：AuroraDSQLServiceRolePolicy
<a name="security-iam-awsmanpol-AuroraDSQLServiceRolePolicy"></a>



您無法將 AuroraDSQLServiceRolePolicy 連接至 IAM 實體。此政策會連接至服務連結角色，可讓 Aurora DSQL 存取帳戶資源。

您可以在 IAM 主控台和 AWS 受管`AuroraDSQLServiceRolePolicy`政策參考指南中的 [AuroraDSQLServiceRolePolicy](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AuroraDSQLServiceRolePolicy.html) 中找到政策。





## AWS 受管政策的 Aurora DSQL 更新
<a name="security-iam-awsmanpol-updates"></a>



檢視自此服務開始追蹤這些變更以來，Aurora DSQL AWS 受管政策更新的詳細資訊。如需自動收到有關此頁面變更的提醒，請前往 Aurora DSQL 文件歷史記錄頁面上訂閱 RSS 摘要。




| 變更 | 描述 | Date | 
| --- | --- | --- | 
|  AmazonAuroraDSQLFullAccess 和 AmazonAuroraDSQLConsoleFullAccess 更新  |  新增對 AWS Fault Injection Service (AWS FIS) 與 Aurora DSQL 整合的支援。這可讓您將故障注入單一區域和多區域 Aurora DSQL 叢集，以測試應用程式的容錯能力。您可以在 AWS FIS 主控台中建立實驗範本，以定義故障案例並鎖定特定 Aurora DSQL 叢集進行測試。 如需這些政策的詳細資訊，請參閱 [AmazonAuroraDSQLFullAccess](https://docs.aws.amazon.com/aurora-dsql/latest/userguide/security-iam-awsmanpol.html#security-iam-awsmanpol-AmazonAuroraDSQLFullAccess) 和 [AmazonAuroraDSQLConsoleFullAccess](https://docs.aws.amazon.com/aurora-dsql/latest/userguide/security-iam-awsmanpol.html#security-iam-awsmanpol-AmazonAuroraDSQLConsoleFullAccess)。  | 2025 年 8 月 19 日 | 
|  AmazonAuroraDSQLFullAccess、AmazonAuroraDSQLReadOnlyAccess 和 AmazonAuroraDSQLConsoleFullAccess 更新  |  新增具有新許可的資源型政策 (RBP) 支援：`PutClusterPolicy`、 `GetClusterPolicy`和 `DeleteClusterPolicy`。這些許可允許管理連接到 Aurora DSQL 叢集的內嵌政策，以進行精細存取控制。 如需詳細資訊，請參閱 [AmazonAuroraDSQLFullAccess](https://docs.aws.amazon.com/aurora-dsql/latest/userguide/security-iam-awsmanpol.html#security-iam-awsmanpol-AmazonAuroraDSQLFullAccess)、[AmazonAuroraDSQLReadOnlyAccess](https://docs.aws.amazon.com/aurora-dsql/latest/userguide/security-iam-awsmanpol.html#security-iam-awsmanpol-AmazonAuroraDSQLReadOnlyAccess) 和 [AmazonAuroraDSQLConsoleFullAccess](https://docs.aws.amazon.com/aurora-dsql/latest/userguide/security-iam-awsmanpol.html#security-iam-awsmanpol-AmazonAuroraDSQLConsoleFullAccess)。  | 2025 年 10 月 15 日 | 
|  AmazonAuroraDSQLFullAccess 更新  |  新增可執行 Aurora DSQL 叢集備份和還原操作的功能，包括啟動、停止和監控任務。此外也新增可使用客戶受管 KMS 金鑰進行叢集加密的功能。 如需更多詳細資訊，請參閱 [AmazonAuroraDSQLFullAccess](https://docs.aws.amazon.com/aurora-dsql/latest/userguide/security-iam-awsmanpol.html#security-iam-awsmanpol-AmazonAuroraDSQLFullAccess) 及[在 Aurora DSQL 使用服務連結角色](https://docs.aws.amazon.com/aurora-dsql/latest/userguide/working-with-service-linked-roles.html)。  | 2025 年 5 月 21 日 | 
|  AmazonAuroraDSQLConsoleFullAccess 更新  |  新增透過 AWS Console Home執行 Aurora DSQL 叢集備份和還原操作的功能。其中包括啟動、停止和監控任務。此外還支援使用客戶受管 KMS 金鑰進行叢集加密和啟動 AWS CloudShell。 如需更多詳細資訊，請參閱 [AmazonAuroraDSQLConsoleFullAccess](https://docs.aws.amazon.com/aurora-dsql/latest/userguide/security-iam-awsmanpol.html#security-iam-awsmanpol-AmazonAuroraDSQLConsoleFullAccess) 及[在 Aurora DSQL 使用服務連結角色](https://docs.aws.amazon.com/aurora-dsql/latest/userguide/working-with-service-linked-roles.html)。  | 2025 年 5 月 21 日 | 
| AmazonAuroraDSQLFullAccess 更新 |  政策會新增四個新許可，以跨多個 建立和管理資料庫叢集 AWS 區域：`PutMultiRegionProperties`、`AddPeerCluster`、 `PutWitnessRegion`和 `RemovePeerCluster`。這些許可權限包括資源層級控制和條件索引鍵，讓您可以控制自己能夠修改的叢集使用者。 政策也新增了 `GetVpcEndpointServiceName` 許可權限，協助您透過 AWS PrivateLink連線至 Aurora DSQL 叢集。 如需更多詳細資訊，請參閱 [AmazonAuroraDSQLFullAccess](https://docs.aws.amazon.com/aurora-dsql/latest/userguide/security-iam-awsmanpol.html#security-iam-awsmanpol-AmazonAuroraDSQLFullAccess) 和[在 Aurora DSQL 中使用服務連結角色](https://docs.aws.amazon.com/aurora-dsql/latest/userguide/working-with-service-linked-roles.html)。  | 2025 年 5 月 13 日 | 
| AmazonAuroraDSQLReadOnlyAccess 更新 | 包括透過 Aurora DSQL 連線至 Aurora DSQL 叢集時判斷正確 VPC AWS PrivateLink 端點服務名稱的能力，可為每個儲存格建立唯一的端點，因此此 API 有助於確保您可以識別叢集的正確端點，並避免連線錯誤。如需更多詳細資訊，請參閱 [AmazonAuroraDSQLReadOnlyAccess](https://docs.aws.amazon.com/aurora-dsql/latest/userguide/security-iam-awsmanpol.html#security-iam-awsmanpol-AmazonAuroraDSQLReadOnlyAccess) 及[在 Aurora DSQL 使用服務連結角色](https://docs.aws.amazon.com/aurora-dsql/latest/userguide/working-with-service-linked-roles.html)。 | 2025 年 5 月 13 日 | 
| AmazonAuroraDSQLConsoleFullAccess 更新 | 將新許可權限新增至 Aurora DSQL，以支援多區域叢集管理和 VPC 端點連線。新的許可權限包括：PutMultiRegionProperties PutWitnessRegion AddPeerCluster RemovePeerCluster GetVpcEndpointServiceName如需更多詳細資訊，請參閱 [AmazonAuroraDSQLConsoleFullAccess](https://docs.aws.amazon.com/aurora-dsql/latest/userguide/security-iam-awsmanpol.html#security-iam-awsmanpol-AmazonAuroraDSQLConsoleFullAccess) 及[在 Aurora DSQL 使用服務連結角色](https://docs.aws.amazon.com/aurora-dsql/latest/userguide/working-with-service-linked-roles.html)。 | 2025 年 5 月 13 日 | 
| AuroraDsqlServiceLinkedRolePolicy 更新 | 新增將指標發佈至 AWS/AuroraDSQL 和 AWS/Usage CloudWatch 命名空間至政策的功能。這可讓相關聯的服務或角色，將更全面的使用和效能資料傳送到 CloudWatch 環境。如需更多詳細資訊，請參閱 [AuroraDsqlServiceLinkedRolePolicy](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AuroraDsqlServiceLinkedRolePolicy.html) 和[在 Aurora DSQL 中使用服務連結角色](https://docs.aws.amazon.com/aurora-dsql/latest/userguide/working-with-service-linked-roles.html)。 | 2025 年 5 月 8 日 | 
| 頁面已建立 | 開始追蹤與 Amazon Aurora DSQL 相關的 AWS 受管政策 | 2024 年 12 月 3 日 | 

# 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/) 

# 適用於 Amazon Aurora DSQL 的資料加密
<a name="data-encryption"></a>

Amazon Aurora DSQL 會加密所有使用者的靜態資料。為了增強安全性，此加密使用 AWS Key Management Service (AWS KMS)。此功能協助降低了保護敏感資料所涉及的操作負擔和複雜性。靜態加密可協助您：
+ 減少保護敏感資料的作業負擔
+ 建立對安全性要求甚高的應用程式，以符合嚴格的加密合規或管制需求。
+ 一律保護加密叢集中的資料，以增加多一層的資料保護
+ 遵守組織政策、產業或政府法規，以及合規要求

Aurora DSQL 可協助您建立對安全性要求甚高的應用程式，以符合嚴格加密合規和法規要求。下列各節說明如何為新的和現有 Aurora DSQL 資料庫設定加密，並管理您的加密金鑰。

**Topics**
+ [

## 適用於 Aurora DSQL 的 KMS 金鑰類型
](#kms-key-types)
+ [

## Aurora DSQL 的靜態加密
](#encryption-at-rest)
+ [

## 搭配 Aurora DSQL 使用 AWS KMS 和 資料金鑰
](#using-kms-and-data-keys)
+ [

## 授權使用 AWS KMS key 適用於 Aurora DSQL 的
](#authorizing-kms-key-use)
+ [

## Aurora DSQL 加密內容
](#dsql-encryption-context)
+ [

## 監控 Aurora DSQL 與 的互動 AWS KMS
](#monitoring-dsql-kms-interaction)
+ [

## 建立加密的 Aurora DSQL 叢集
](#creating-encrypted-cluster)
+ [

## 移除或更新 Aurora DSQL 叢集的金鑰
](#updating-encryption-key)
+ [

## 使用 Aurora DSQL 進行加密的考量事項
](#considerations-with-encryption)

## 適用於 Aurora DSQL 的 KMS 金鑰類型
<a name="kms-key-types"></a>

Aurora DSQL 與 整合 AWS KMS ，以管理叢集的加密金鑰。若要進一步瞭解金鑰類型和狀態，請參閱 *AWS Key Management Service 開發人員指南*中的[AWS Key Management Service 概念](https://docs.aws.amazon.com/kms/latest/developerguide/concepts-intro.html)。建立新叢集時，您可選擇以下列 KMS 金鑰類型加密叢集：

**AWS 擁有的金鑰**  
預設的加密類型。Aurora DSQL 擁有金鑰，您不需支付額外費用。您存取加密叢集時，Amazon Aurora DSQL 會透明地解密叢集資料。您不需要變更程式碼或應用程式以使用或管理加密叢集，而且所有 Aurora DSQL 查詢都適用於您的加密資料。

**客戶自管金鑰**  
您可以在 中建立、擁有和管理金鑰 AWS 帳戶。您可以完全控制 KMS 金鑰。需支付 AWS KMS 費用。

使用 AWS 擁有的金鑰 進行靜態加密無需額外費用。不過， AWS KMS 費用適用於客戶受管金鑰。如需詳細資訊，請參閱 [AWS KMS 定價](https://aws.amazon.com/kms/pricing/)頁面。

您可以隨時在這些金鑰類型之間切換。如需金鑰類型的詳細資訊，請參閱 *AWS Key Management Service 開發人員指南*中的[客戶自管金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)和 [AWS 擁有的金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk)。

**注意**  
Aurora DSQL 靜態加密可在可使用 Aurora DSQL 的所有 AWS 區域中使用。

## Aurora DSQL 的靜態加密
<a name="encryption-at-rest"></a>

Amazon Aurora DSQL 使用 256 位元進階加密標準 (AES-256) 加密您的靜態資料。此加密有助於保護您的資料免於未經授權存取基礎 storage。 會 AWS KMS 管理叢集的加密金鑰。您可以使用預設 [AWS 擁有的金鑰](#aws-owned-keys)，或選擇使用您自己的 AWS KMS [客戶自管金鑰](#customer-managed-keys)。若要進一步瞭解如何指定和管理 Aurora DSQL 叢集的金鑰，請參閱 [建立加密的 Aurora DSQL 叢集](#creating-encrypted-cluster) 和 [移除或更新 Aurora DSQL 叢集的金鑰](#updating-encryption-key)。

**Topics**
+ [

### AWS 擁有的金鑰
](#aws-owned-keys)
+ [

### 客戶自管金鑰
](#customer-managed-keys)

### AWS 擁有的金鑰
<a name="aws-owned-keys"></a>

Aurora DSQL 預設會使用 加密所有叢集 AWS 擁有的金鑰。這些金鑰可免費使用，並會每年輪換，以保護您的帳戶資源。您不需要檢視、管理、使用或稽核這些金鑰，因此不需採取任何動作進行資料保護。如需 的詳細資訊 AWS 擁有的金鑰，請參閱《 *AWS Key Management Service 開發人員指南*[AWS 擁有的金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk)》中的 。

### 客戶自管金鑰
<a name="customer-managed-keys"></a>

您可以在自己的 AWS 帳戶建立、擁有及管理客戶自管金鑰。您可以完全控制這些 KMS 金鑰，包括其政策、加密資料、標籤和別名。如需有關管理許可權限的詳細資訊，請參閱 *AWS Key Management Service 開發人員指南*中的[客戶自管金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)。

您指定客戶自管金鑰用於叢集層級加密時，Aurora DSQL 會使用該金鑰加密叢集及其所有區域資料。為了防止資料遺失和維護叢集存取，Aurora DSQL 需要存取您的加密金鑰。如果您停用客戶自管金鑰、排程刪除金鑰，或訂定政策以限制服務存取，叢集加密狀態會變更為 `KMS_KEY_INACCESSIBLE`。Aurora DSQL 無法存取金鑰時，使用者就無法連線至叢集，而叢集的加密狀態會變更為 `KMS_KEY_INACCESSIBLE`，且服務無法存取叢集資料。

對於多區域叢集，客戶可以分別設定每個區域的 AWS KMS 加密金鑰，而每個區域叢集會使用自己的叢集層級加密金鑰。如果 Aurora DSQL 無法存取多區域叢集中對等的加密金鑰，則對等狀態會變為 `KMS_KEY_INACCESSIBLE`，且無法用於進行讀取和寫入作業。其他對等會繼續正常作業。

**注意**  
如果 Aurora DSQL 無法存取您的客戶自管金鑰，您的叢集加密狀態會變更為 `KMS_KEY_INACCESSIBLE`。還原金鑰存取後，服務會在 15 分鐘內自動偵測還原。如需更多詳細資訊，請參閱叢集閒置。  
對於多區域叢集，如果長時間喪失金鑰存取，則叢集還原時間取決於無法存取金鑰期間寫入的資料量。

## 搭配 Aurora DSQL 使用 AWS KMS 和 資料金鑰
<a name="using-kms-and-data-keys"></a>

Aurora DSQL 靜態加密功能使用 AWS KMS key 和資料金鑰階層來保護您的叢集資料。

我們建議您先規劃加密策略，再於 Aurora DSQL 中實作叢集。如果您將敏感或機密資料儲存在 Aurora DSQL，請考慮在計劃中加入用戶端加密。如此一來，您就能盡量靠近資料來源進行加密，並確保資料在整個生命週期受到保護。

**Topics**
+ [

### AWS KMS key搭配 Aurora DSQL 使用
](#aws-kms-key)
+ [

### 使用叢集金鑰搭配 Aurora DSQL
](#cluster-keys)
+ [

### 叢集金鑰快取
](#cluster-key-caching)

### AWS KMS key搭配 Aurora DSQL 使用
<a name="aws-kms-key"></a>

靜態加密可保護 AWS KMS key之下的 Aurora DSQL 叢集。根據預設，Aurora DSQL 會使用 AWS 擁有的金鑰在 Aurora DSQL 服務帳戶中建立和管理的多租用戶加密金鑰。但您可在 AWS 帳戶中加密客戶自管金鑰之下的 Aurora DSQL 叢集。您可為每個叢集選取不同的 KMS 金鑰，即使叢集參與多區域設定也沒問題。

您在建立或更新叢集時，可以選取叢集的 KMS 金鑰。您可隨時在 Aurora DSQL 主控台或使用 `UpdateCluster` 操作變更叢集的 KMS 金鑰。切換金鑰的程序不需要停機時間或降低服務效能。

**重要**  
Aurora DSQL 僅支援對稱 KMS 金鑰。您無法使用非對稱 KMS 金鑰加密 Aurora DSQL 叢集。

客戶自管金鑰具有以下優點：
+ 您可以建立和管理 KMS 金鑰，包括設定金鑰政策和 IAM 政策以控制對 KMS 金鑰的存取。您可以啟用和停用 KMS 金鑰、啟用和停用自動金鑰輪換，以及於不再使用時刪除 KMS 金鑰。
+ 您可以搭配匯入的金鑰材料使用客戶自管金鑰，或是使用位於您所擁有及管理自訂金鑰存放區中的客戶自管金鑰。
+ 您可以在 AWS CloudTrail 日誌 AWS KMS 中檢查對 的 Aurora DSQL API 呼叫，以稽核 Aurora DSQL 叢集的加密和解密。

不過， AWS 擁有的金鑰 是免費的，其使用方式不會計入 AWS KMS 資源或請求配額。客戶自管金鑰會對每個 API 呼叫產生費用，且這些金鑰都適用 AWS KMS 配額。

### 使用叢集金鑰搭配 Aurora DSQL
<a name="cluster-keys"></a>

Aurora DSQL 使用叢集 AWS KMS key 的 來產生和加密叢集的唯一資料金鑰，稱為**叢集金鑰**。

叢集金鑰用作金鑰加密金鑰。Aurora DSQL 使用此叢集金鑰保護用於加密叢集資料的資料加密金鑰。Aurora DSQL 會為叢集中的每個基礎結構產生唯一的資料加密金鑰，但多個叢集項目可能是由相同的資料加密金鑰保護。

若要解密叢集金鑰，Aurora DSQL 會在您第一次存取加密的叢集 AWS KMS 時傳送請求至 。為了讓叢集保持可用，Aurora DSQL 會定期驗證對 KMS 金鑰的解密存取，即使您未主動存取叢集也一樣。

Aurora DSQL 會在 外部存放和使用叢集金鑰和資料加密金鑰 AWS KMS。它使用進階加密標準 (AES) 加密和 256 位元加密金鑰來保護所有金鑰。然後會將加密金鑰與加密資料儲存在一起，以便用來隨需解密叢集資料。

如果您變更叢集的 KMS 金鑰，Aurora DSQL 會使用新的 KMS 金鑰重新加密現有叢集金鑰。

### 叢集金鑰快取
<a name="cluster-key-caching"></a>

為了避免 AWS KMS 針對每個 Aurora DSQL 操作呼叫 ，Aurora DSQL 會快取記憶體中每個呼叫者的純文字叢集金鑰。如果 Aurora DSQL 在閒置 15 分鐘後收到快取叢集金鑰的請求，它會將新的請求傳送至 AWS KMS 以解密叢集金鑰。在上次請求解密叢集金鑰之後，此呼叫將擷取對 AWS KMS 或 AWS Identity and Access Management (IAM) AWS KMS key 中 存取政策所做的任何變更。

## 授權使用 AWS KMS key 適用於 Aurora DSQL 的
<a name="authorizing-kms-key-use"></a>

如果您在帳戶中使用客戶自管金鑰保護 Aurora DSQL 叢集，該金鑰的政策必須授予 Aurora DSQL 許可權限以代您使用該金鑰。

您可以完全控制客戶自管金鑰的政策。Aurora DSQL 不需要額外的授權，即可使用預設值 AWS 擁有的金鑰 來保護您 中的 Aurora DSQL 叢集 AWS 帳戶。

### 客戶自管金鑰的金鑰政策
<a name="key-policy-customer-managed-key"></a>

當您選取客戶受管金鑰來保護 Aurora DSQL 叢集時，Aurora DSQL 需要 AWS KMS key 代表進行選取之主體使用 的許可。該委託人、使用者或角色必須擁有 AWS KMS key Aurora DSQL 所需的 許可。您可以在金鑰政策或 IAM 政策中提供這些許可權限。

Aurora DSQL 在客戶自管金鑰至少需要具備下列許可權限：
+ `kms:Encrypt`
+ `kms:Decrypt`
+ `kms:ReEncrypt*` (適用於 kms:ReEncryptFrom 和 kms:ReEncryptTo)
+ `kms:GenerateDataKey`
+ `kms:DescribeKey`

例如，以下範例金鑰政策只會提供必要許可。政策具有下列效果：
+ 允許 Aurora DSQL 在密碼編譯操作 AWS KMS key 中使用 ，但僅限於代表帳戶中有權使用 Aurora DSQL 的主體時。如果政策陳述式中指定的主體沒有許可權限可以使用 Aurora DSQL，呼叫便會失敗，即使呼叫是來自 Aurora DSQL 服務也一樣。
+ `kms:ViaService` 條件索引鍵只會在請求來自 Aurora DSQL 且代表政策陳述式中列出的主體時，才會允許提供許可權限。這些主體無法直接呼叫這些操作。

使用範例金鑰政策之前，請將範例主體取代為來自您 的實際主體 AWS 帳戶。

```
{
  "Sid": "Enable dsql IAM User Permissions",
  "Effect": "Allow",
  "Principal": {
    "Service": "dsql.amazonaws.com"
  },
  "Action": [
    "kms:Decrypt",
    "kms:GenerateDataKey",
    "kms:Encrypt",
    "kms:ReEncryptFrom",
    "kms:ReEncryptTo"
  ],
  "Resource": "*",
  "Condition": {
    "StringLike": {
      "kms:EncryptionContext:aws:dsql:ClusterId": "w4abucpbwuxx",
      "aws:SourceArn": "arn:aws:dsql:us-east-2:111122223333:cluster/w4abucpbwuxx"
    }
  }
},
{
  "Sid": "Enable dsql IAM User Describe Permissions",
  "Effect": "Allow",
  "Principal": {
    "Service": "dsql.amazonaws.com"
  },
  "Action": "kms:DescribeKey",
  "Resource": "*",
  "Condition": {
    "StringLike": {
      "aws:SourceArn": "arn:aws:dsql:us-east-2:111122223333:cluster/w4abucpbwuxx"
    }
  }
}
```

## Aurora DSQL 加密內容
<a name="dsql-encryption-context"></a>

加密內容是一組金鑰/值對，其中包含任意非私密資料。當您在加密資料的請求中包含加密內容時， 會以 AWS KMS 加密方式將加密內容繫結至加密的資料。若要解密資料，您必須傳遞相同的加密內容。

Aurora DSQL 在所有 AWS KMS 密碼編譯操作中使用相同的加密內容。如果您使用客戶受管金鑰來保護 Aurora DSQL 叢集，您可以使用加密內容來識別在稽核記錄和日誌 AWS KMS key 中使用 。加密內容也會以純文字顯示在日誌中，例如 AWS CloudTrail中的加密內容。

加密內容也可以用作政策中的授權條件。

在對 的請求中 AWS KMS，Aurora DSQL 會使用具有金鑰/值對的加密內容：

```
"encryptionContext": {
  "aws:dsql:ClusterId": "w4abucpbwuxx"
},
```

鍵值對可用於識別 Aurora DSQL 加密的叢集。金鑰為 `aws:dsql:ClusterId`。值是叢集的識別符。

## 監控 Aurora DSQL 與 的互動 AWS KMS
<a name="monitoring-dsql-kms-interaction"></a>

如果您使用客戶受管金鑰來保護 Aurora DSQL 叢集，您可以使用 AWS CloudTrail 日誌來追蹤 Aurora DSQL 代表您傳送到 AWS KMS 的請求。

展開下列各節，以了解 Aurora DSQL 如何使用 AWS KMS 操作`GenerateDataKey`和 `Decrypt`。

### `GenerateDataKey`
<a name="GenerateDataKey"></a>

您在叢集上啟用靜態加密時，Aurora DSQL 會建立唯一的叢集金鑰。它會將`GenerateDataKey`請求傳送至 AWS KMS ，以指定叢集的 AWS KMS key 。

記錄 `GenerateDataKey` 操作的事件類似於以下範例事件。使用者是 Aurora DSQL 服務帳戶。參數包括 的 Amazon Resource Name (ARN) AWS KMS key、需要 256 位元金鑰的金鑰指標，以及識別叢集的加密內容。

```
{
    "eventVersion": "1.11",
    "userIdentity": {
        "type": "AWSService",
        "invokedBy": "dsql.amazonaws.com"
    },
    "eventTime": "2025-05-16T18:41:24Z",
    "eventSource": "kms.amazonaws.com",
    "eventName": "GenerateDataKey",
    "awsRegion": "us-east-1",
    "sourceIPAddress": "dsql.amazonaws.com",
    "userAgent": "dsql.amazonaws.com",
    "requestParameters": {
        "encryptionContext": {
            "aws:dsql:ClusterId": "w4abucpbwuxx"
        },
        "keySpec": "AES_256",
        "keyId": "arn:aws:kms:us-east-1:982127530226:key/8b60dd9f-2ff8-4b1f-8a9c-bf570cbfdb5e"
    },
    "responseElements": null,
    "requestID": "2da2dc32-d3f4-4d6c-8a41-aff27cd9a733",
    "eventID": "426df0a6-ba56-3244-9337-438411f826f4",
    "readOnly": true,
    "resources": [
        {
            "accountId": "AWS Internal",
            "type": "AWS::KMS::Key",
            "ARN": "arn:aws:kms:us-east-1:982127530226:key/8b60dd9f-2ff8-4b1f-8a9c-bf570cbfdb5e"
        }
    ],
    "eventType": "AwsApiCall",
    "managementEvent": true,
    "recipientAccountId": "111122223333",
    "sharedEventID": "f88e0dd8-6057-4ce0-b77d-800448426d4e",
    "vpcEndpointId": "AWS Internal",
    "vpcEndpointAccountId": "vpce-1a2b3c4d5e6f1a2b3",
    "eventCategory": "Management"
}
```

### 解密
<a name="Decrypt"></a>

您存取加密的 Aurora DSQL 叢集時，Aurora DSQL 需要解密叢集金鑰以便解密階層下方的金鑰。接著會解密叢集中的資料。若要解密叢集金鑰，Aurora DSQL 會傳送`Decrypt`請求至 AWS KMS ，以指定叢集 AWS KMS key 的 。

記錄 `Decrypt` 操作的事件類似於以下範例事件。使用者是 中存取叢集的委託 AWS 帳戶 人。這些參數包括加密的叢集金鑰 （做為加密文字 Blob) 和可識別叢集的加密內容。 會從加密文字 AWS KMS 衍生 的 AWS KMS key ID。

```
{
  "eventVersion": "1.05",
  "userIdentity": {
    "type": "AWSService",
    "invokedBy": "dsql.amazonaws.com"
  },
  "eventTime": "2018-02-14T16:42:39Z",
  "eventSource": "kms.amazonaws.com",
  "eventName": "Decrypt",
  "awsRegion": "us-east-1",
  "sourceIPAddress": "dsql.amazonaws.com",
  "userAgent": "dsql.amazonaws.com",
  "requestParameters": {
    "keyId": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
    "encryptionContext": {
      "aws:dsql:ClusterId": "w4abucpbwuxx"
    },
    "encryptionAlgorithm": "SYMMETRIC_DEFAULT"
  },
  "responseElements": null,
  "requestID": "11cab293-11a6-11e8-8386-13160d3e5db5",
  "eventID": "b7d16574-e887-4b5b-a064-bf92f8ec9ad3",
  "readOnly": true,
  "resources": [
    {
      "ARN": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
      "accountId": "AWS Internal",
      "type": "AWS::KMS::Key"
    }
  ],
  "eventType": "AwsApiCall",
  "managementEvent": true,
  "recipientAccountId": "111122223333",
  "sharedEventID": "d99f2dc5-b576-45b6-aa1d-3a3822edbeeb",
  "vpcEndpointId": "AWS Internal",
  "vpcEndpointAccountId": "vpce-1a2b3c4d5e6f1a2b3",
  "eventCategory": "Management"
}
```

## 建立加密的 Aurora DSQL 叢集
<a name="creating-encrypted-cluster"></a>

所有 Aurora DSQL 叢集都會靜態加密。根據預設，叢集 AWS 擁有的金鑰 可免費使用 ，或者您可以指定自訂 AWS KMS 金鑰。請依照下列步驟，從 AWS 管理主控台 或 建立您的加密叢集 AWS CLI。

------
#### [ Console ]

**在 中建立加密叢集 AWS 管理主控台**

1. 登入 AWS 管理主控台，並在 https：//[https://console.aws.amazon.com/dsql/](https://console.aws.amazon.com/dsql/) 開啟 Aurora DSQL 主控台。

1. 在主控台左側的導覽窗格中選擇**叢集**。

1. 選擇右上角的**建立叢集**，然後選取**單一區域**。

1. 在**叢集加密設定**中選擇下列其中一個選項。
   + 接受預設設定以使用 AWS 擁有的金鑰 加密，無需額外費用。
   + 選擇**自訂加密設定 (進階)** 以指定自訂 KMS 金鑰。然後請搜尋或輸入 KMS 金鑰的 ID 或別名。或者，選擇**建立 AWS KMS 金鑰**以在 AWS KMS 主控台中建立新的金鑰。

1. 選擇 **Create Cluster** (建立叢集)。

若要確認叢集的加密類型，請導覽至**叢集**頁面，然後選取叢集 ID 以檢視叢集詳細資訊。檢閱**叢集設定**索引標籤**，叢集 KMS 金鑰**設定會顯示 **Aurora DSQL 預設金鑰**，適用於使用 AWS 擁有的金鑰或其他加密類型的金鑰 ID 的叢集。

**注意**  
如果您選擇擁有和管理自己的金鑰，請確保已正確設定 KMS 金鑰政策。範例和詳細資訊請參閱 [客戶自管金鑰的金鑰政策](#key-policy-customer-managed-key)。

------
#### [ CLI ]

**建立使用預設 加密的叢集 AWS 擁有的金鑰**
+ 使用下列命令建立 Aurora DSQL 叢集。

  ```
  aws dsql create-cluster
  ```

如下列加密詳細資訊所示，叢集加密狀態預設為啟用，預設加密類型為 AWS 擁有的金鑰。叢集現在已使用 Aurora DSQL 服務帳戶中的預設 AWS 擁有金鑰進行加密。

```
"encryptionDetails": {
  "encryptionType" : "AWS_OWNED_KMS_KEY",
  "encryptionStatus" : "ENABLED"
}
```

**建立以客戶自管金鑰加密的叢集**
+ 使用下列命令建立 Aurora DSQL 叢集，以客戶自管金鑰 ID 取代紅色文字的金鑰 ID。

  ```
  aws dsql create-cluster \
  --kms-encryption-key d41d8cd98f00b204e9800998ecf8427e
  ```

如下列加密詳細資訊所示，叢集加密狀態預設為啟用，加密類型是客戶受管 KMS 金鑰。叢集現在已使用您的金鑰加密。

```
"encryptionDetails": {
  "encryptionType" : "CUSTOMER_MANAGED_KMS_KEY",
  "kmsKeyArn" : "arn:aws:kms:us-east-1:111122223333:key/d41d8cd98f00b204e9800998ecf8427e",
  "encryptionStatus" : "ENABLED"
}
```

------

## 移除或更新 Aurora DSQL 叢集的金鑰
<a name="updating-encryption-key"></a>

您可以使用 AWS 管理主控台 或 AWS CLI 來更新或移除 Amazon Aurora DSQL 中現有叢集上的加密金鑰。如果您在未取代金鑰的情況下移除金鑰，Aurora DSQL 會使用預設的 AWS 擁有的金鑰。請依照下列步驟從 Aurora DSQL 主控台或 AWS CLI更新現有叢集的加密金鑰。

------
#### [ Console ]

**若要更新或移除 中的加密金鑰 AWS 管理主控台**

1. 登入 AWS 管理主控台，並在 https：//[https://console.aws.amazon.com/dsql/](https://console.aws.amazon.com/dsql/) 開啟 Aurora DSQL 主控台。

1. 在主控台左側的導覽窗格中選擇**叢集**。

1. 從清單檢視中尋找並選取您要更新的叢集列。

1. 選擇**動作**功能表，然後選擇**修改**。

1. 在**叢集加密設定**中選擇下列其中一個選項以修改加密設定。
   + 如果您想要從自訂金鑰切換至 AWS 擁有的金鑰，請取消選取**自訂加密設定 （進階）** 選項。預設設定將 AWS 擁有的金鑰 免費套用和加密 叢集。
   + 如果您想要從自訂 KMS 金鑰切換到另一個金鑰，或從 AWS 擁有的金鑰 切換到 KMS 金鑰，請選取**自訂加密設定 (進階)** 選項 (如果尚未選取)。然後搜尋並選取您要使用的金鑰 ID 或別名。或者，選擇**建立 AWS KMS 金鑰**以在主控台中 AWS KMS 建立新的金鑰。

1. 選擇**儲存**。

------
#### [ CLI ]

下列範例示範如何使用 AWS CLI 更新加密的叢集。

使用預設值更新加密叢集 AWS 擁有的金鑰

```
aws dsql update-cluster \
--identifier aiabtx6icfp6d53snkhseduiqq \
--kms-encryption-key "AWS_OWNED_KMS_KEY"
```

叢集說明的 `EncryptionStatus` 狀態會設為 `ENABLED`，且 `EncryptionType` 為 `AWS_OWNED_KMS_KEY`。

```
"encryptionDetails": {
  "encryptionType" : "AWS_OWNED_KMS_KEY",
  "encryptionStatus" : "ENABLED"
}
```

此叢集現在已使用 AWS 擁有的金鑰 Aurora DSQL 服務帳戶中的預設值加密。

使用 Aurora DSQL 的客戶自管金鑰更新加密叢集

如下列範例所示更新加密叢集：

```
aws dsql update-cluster \
--identifier aiabtx6icfp6d53snkhseduiqq \
--kms-encryption-key arn:aws:kms:us-east-1:123456789012:key/abcd1234-abcd-1234-a123-ab1234a1b234
```

叢集說明的 `EncryptionStatus` 會轉換為 `UPDATING`，且 `EncryptionType` 為 `CUSTOMER_MANAGED_KMS_KEY`。Aurora DSQL 透過平台完成傳播新金鑰後，加密狀態將轉換為 `ENABLED`

```
"encryptionDetails": {
  "encryptionType" : "CUSTOMER_MANAGED_KMS_KEY",
  "kmsKeyArn" : "arn:aws:us-east-1:kms:key/abcd1234-abcd-1234-a123-ab1234a1b234",
  "encryptionStatus" : "ENABLED"
}
```

------

**注意**  
如果您選擇擁有和管理自己的金鑰，請確保已正確設定 KMS 金鑰政策。範例和詳細資訊請參閱 [客戶自管金鑰的金鑰政策](#key-policy-customer-managed-key)。

## 使用 Aurora DSQL 進行加密的考量事項
<a name="considerations-with-encryption"></a>
+ Aurora DSQL 會加密所有叢集靜態資料。您無法停用此加密或僅加密叢集中的部分項目。
+ AWS Backup 會加密您的備份，以及從這些備份還原的任何叢集。您可以使用 AWS 擁有 AWS Backup 的金鑰或客戶受管金鑰，在 中加密備份資料。
+ Aurora DSQL 已啟用下列資料保護狀態：
  + **靜態資料**：Aurora DSQL 會加密持久性儲存媒體上的所有靜態資料
  + **傳輸中的資料**：Aurora DSQL 預設使用 Transport Layer Security (TLS) 加密所有通訊
+ 當您轉換到不同的金鑰時，我們建議您保持啟用原始金鑰，直到轉換完成為止。 AWS 需要原始金鑰來解密資料，才能使用新的金鑰加密您的資料。叢集的 `encryptionStatus` 為 `ENABLED` 且您看到新客戶自管金鑰的 `kmsKeyArn` 時即代表流程完成。
+ 您停用客戶自管金鑰或撤銷 Aurora DSQL 使用金鑰的存取權限時，您的叢集將進入 `IDLE` 狀態。
+  AWS 管理主控台 和 Amazon Aurora DSQL API 對加密類型使用不同的術語：
  + AWS 主控台 – 在主控台中，您會`KMS`在使用客戶受管金鑰和使用 `DEFAULT`時看到 AWS 擁有的金鑰。
  + API：Amazon Aurora DSQL API 使用 `CUSTOMER_MANAGED_KMS_KEY` 用於客戶自管金鑰，並使用 `AWS_OWNED_KMS_KEY` 用於 AWS 擁有的金鑰。
+ 如果您在叢集建立期間未指定加密金鑰，Aurora DSQL 會使用 自動加密您的資料 AWS 擁有的金鑰。
+ 您可以隨時在 AWS 擁有的金鑰 和客戶受管金鑰之間切換。使用 AWS 管理主控台 AWS CLI或 Amazon Aurora DSQL API 進行此變更。

# Aurora DSQL 的身分與存取管理
<a name="security-iam"></a>

AWS Identity and Access Management (IAM) 是一種 AWS 服務 ，可協助管理員安全地控制對 AWS 資源的存取。IAM 管理員可以控制誰能*完成身分驗證* (登入) 和*獲得授權* (取得許可權限)，而得以使用 Aurora DSQL 資源。IAM 是 AWS 服務 您可以免費使用的 。

**Topics**
+ [

## 目標對象
](#security_iam_audience)
+ [

## 使用身分驗證
](#security_iam_authentication)
+ [

## 使用政策管理存取權
](#security_iam_access-manage)
+ [

# Amazon Aurora DSQL 如何搭配使用 IAM
](security_iam_service-with-iam.md)
+ [

# Amazon Aurora DSQL 的身分型政策範例
](security_iam_id-based-policy-examples.md)
+ [

# 對 Amazon Aurora DSQL 身分與存取進行故障診斷
](security_iam_troubleshoot.md)

## 目標對象
<a name="security_iam_audience"></a>

使用方式 AWS Identity and Access Management (IAM) 會根據您的角色而有所不同：
+ **服務使用者** — 若無法存取某些功能，請向管理員申請所需許可 (請參閱 [對 Amazon Aurora DSQL 身分與存取進行故障診斷](security_iam_troubleshoot.md))
+ **服務管理員** — 負責設定使用者存取權並提交相關許可請求 (請參閱 [Amazon Aurora DSQL 如何搭配使用 IAM](security_iam_service-with-iam.md))
+ **IAM 管理員** — 撰寫政策以管理存取控制 (請參閱 [Amazon Aurora DSQL 的身分型政策範例](security_iam_id-based-policy-examples.md))

## 使用身分驗證
<a name="security_iam_authentication"></a>

身分驗證是您 AWS 使用身分憑證登入 的方式。您必須以 AWS 帳戶根使用者、IAM 使用者或擔任 IAM 角色身分進行身分驗證。

您可以使用身分來源的登入資料，例如 AWS IAM Identity Center (IAM Identity Center)、單一登入身分驗證或 Google/Facebook 登入資料，以聯合身分的形式登入。如需有關登入的詳細資訊，請參閱《AWS 登入 使用者指南》**中的[如何登入您的 AWS 帳戶](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html)。

對於程式設計存取， AWS 提供 SDK 和 CLI 以密碼編譯方式簽署請求。如需詳細資訊，請參閱《IAM 使用者指南》**中的 [API 請求的AWS 第 4 版簽署程序](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_sigv.html)。

### AWS 帳戶 根使用者
<a name="security_iam_authentication-rootuser"></a>

 當您建立 時 AWS 帳戶，您會從一個名為 AWS 帳戶 *theroot 使用者的*登入身分開始，該身分可完整存取所有 AWS 服務 和 資源。強烈建議不要使用根使用者來執行日常任務。有關需要根使用者憑證的任務，請參閱《IAM 使用者指南》**中的[需要根使用者憑證的任務](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html#root-user-tasks)。

### 聯合身分
<a name="security_iam_authentication-federated"></a>

最佳實務是要求人類使用者使用聯合身分提供者，以 AWS 服務 使用臨時憑證存取 。

*聯合身分*是來自您企業目錄、Web 身分提供者的使用者，或使用來自身分來源的 AWS 服務 憑證存取 Directory Service 的使用者。聯合身分會擔任角色，而該角色會提供臨時憑證。

若需集中化管理存取權限，建議使用 AWS IAM Identity Center。如需詳細資訊，請參閱 *AWS IAM Identity Center 使用者指南*中的[什麼是 IAM Identity Center？](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html)。

### IAM 使用者和群組
<a name="security_iam_authentication-iamuser"></a>

*IAM 使用者*[https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users.html](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users.html)是一種身分具備單人或應用程式的特定許可權。建議以臨時憑證取代具備長期憑證的 IAM 使用者。如需詳細資訊，請參閱《*IAM 使用者指南*》中的[要求人類使用者使用聯合身分提供者來 AWS 使用臨時憑證存取](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#bp-users-federation-idp) 。

[IAM 群組](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html)**會指定 IAM 使用者集合，使管理大量使用者的許可權更加輕鬆。如需詳細資訊，請參閱《IAM 使用者指南》**中的 [IAM 使用者的使用案例](https://docs.aws.amazon.com/IAM/latest/UserGuide/gs-identities-iam-users.html)。

### IAM 角色
<a name="security_iam_authentication-iamrole"></a>

*IAM 角色*[https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)的身分具有特定許可權，其可以提供臨時憑證。您可以透過[從使用者切換到 IAM 角色 （主控台） ](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-console.html)或呼叫 AWS CLI 或 AWS API 操作來擔任角色。如需詳細資訊，請參閱《IAM 使用者指南》**中的[擔任角色的方法](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage-assume.html)。

IAM 角色適用於聯合身分使用者存取、臨時 IAM 使用者許可、跨帳戶存取權與跨服務存取，以及在 Amazon EC2 執行的應用程式。如需詳細資訊，請參閱《*IAM 使用者指南*》中的 [IAM 中的快帳戶資源存取](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-cross-account-resource-access.html)。

## 使用政策管理存取權
<a name="security_iam_access-manage"></a>

您可以透過建立政策並將其連接到身分或資源 AWS 來控制 AWS 中的存取。政策定義與身分或資源相關聯的許可。當委託人提出請求時 AWS ， 會評估這些政策。大多數政策會以 JSON 文件 AWS 形式存放在 中。如需進一步了解 JSON 政策文件，請參閱《*IAM 使用者指南*》中的 [JSON 政策概觀](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#access_policies-json)。

管理員會使用政策，透過定義哪些**主體**可在哪些**條件**下對哪些**資源**執行**動作**，以指定可存取的範圍。

預設情況下，使用者和角色沒有許可。IAM 管理員會建立 IAM 政策並將其新增至角色，供使用者後續擔任。IAM 政策定義動作的許可，無論採用何種方式執行。

### 身分型政策
<a name="security_iam_access-manage-id-based-policies"></a>

身分型政策是附加至身分 (使用者、使用者群組或角色) 的 JSON 許可政策文件。這類政策控制身分可對哪些資源執行哪些動作，以及適用的條件。如需了解如何建立身分型政策，請參閱《*IAM 使用者指南*》中的[透過客戶管理政策定義自訂 IAM 許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)。

身分型政策可分為*內嵌政策* (直接內嵌於單一身分) 與*受管政策* (可附加至多個身分的獨立政策)。如需了解如何在受管政策及內嵌政策之間做選擇，請參閱《IAM 使用者指南》**中的[在受管政策與內嵌政策之間選擇](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-choosing-managed-or-inline.html)。

### 資源型政策
<a name="security_iam_access-manage-resource-based-policies"></a>

資源型政策是附加到資源的 JSON 政策文件。範例包括 IAM *角色信任政策*與 Amazon S3 *儲存貯體政策*。在支援資源型政策的服務中，服務管理員可以使用它們來控制對特定資源的存取權限。您必須在資源型政策中[指定主體](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html)。

資源型政策是位於該服務中的內嵌政策。您無法在以資源為基礎的政策中使用來自 IAM 的 AWS 受管政策。

### 其他政策類型
<a name="security_iam_access-manage-other-policies"></a>

AWS 支援其他政策類型，可設定更多常見政策類型授予的最大許可：
+ **許可界限** — 設定身分型政策可授與 IAM 實體的最大許可。如需詳細資訊，請參閱《 IAM 使用者指南》**中的 [IAM 實體許可界限](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html)。
+ **服務控制政策 (SCP)** — 為 AWS Organizations中的組織或組織單位指定最大許可。如需詳細資訊，請參閱《AWS Organizations 使用者指南》**中的[服務控制政策](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html)。
+ **資源控制政策 (RCP)** — 設定您帳戶中資源可用許可的上限。如需詳細資訊，請參閱《AWS Organizations 使用者指南》**中的[資源控制政策 (RCP)](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_rcps.html)。
+ **工作階段政策** — 在以程式設計方式為角色或聯合身分使用者建立臨時工作階段時，以參數形式傳遞的進階政策。如需詳細資訊，請參《*IAM 使用者指南*》中的[工作階段政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session)。

### 多種政策類型
<a name="security_iam_access-manage-multiple-policies"></a>

當多種類型的政策套用到請求時，產生的許可會更複雜而無法理解。若要了解如何 AWS 在涉及多個政策類型時決定是否允許請求，請參閱《*IAM 使用者指南*》中的[政策評估邏輯](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html)。

# Amazon Aurora DSQL 如何搭配使用 IAM
<a name="security_iam_service-with-iam"></a>

在您使用 IAM 管理 Aurora DSQL 的存取權之前，請瞭解哪些 IAM 功能可搭配使用 Aurora DSQL。






**您可以搭配 Amazon Aurora DSQL 使用的 IAM 功能**  

| IAM 功能 | Aurora DSQL 支援 | 
| --- | --- | 
|  [身分型政策](#security_iam_service-with-iam-id-based-policies)  |   是  | 
|  [資源型政策](#security_iam_service-with-iam-resource-based-policies)  |   是  | 
|  [政策動作](#security_iam_service-with-iam-id-based-policies-actions)  |   是  | 
|  [政策資源](#security_iam_service-with-iam-id-based-policies-resources)  |   是  | 
|  [政策條件索引鍵](#security_iam_service-with-iam-id-based-policies-conditionkeys)  |   是  | 
|  [ACL](#security_iam_service-with-iam-acls)  |   否   | 
|  [ABAC (政策中的標籤)](#security_iam_service-with-iam-tags)  |   是  | 
|  [臨時憑證](#security_iam_service-with-iam-roles-tempcreds)  |   是  | 
|  [主體許可](#security_iam_service-with-iam-principal-permissions)  |   是  | 
|  [服務角色](#security_iam_service-with-iam-roles-service)  |   是  | 
|  [服務連結角色](#security_iam_service-with-iam-roles-service-linked)  |   是  | 

若要全面了解 Aurora DSQL 和其他 AWS 服務如何與大多數 IAM 功能搭配使用，請參閱《IAM *使用者指南*》中的[AWS 與 IAM 搭配使用的 服務](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html)。

## 適用於 Aurora DSQL 的身分型政策
<a name="security_iam_service-with-iam-id-based-policies"></a>

**支援身分型政策：**是

身分型政策是可以附加到身分 (例如 IAM 使用者、使用者群組或角色) 的 JSON 許可政策文件。這些政策可控制身分在何種條件下能對哪些資源執行哪些動作。如需了解如何建立身分型政策，請參閱《*IAM 使用者指南*》中的[透過客戶管理政策定義自訂 IAM 許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)。

使用 IAM 身分型政策，您可以指定允許或拒絕的動作和資源，以及在何種條件下允許或拒絕動作。如要了解您在 JSON 政策中使用的所有元素，請參閱 *IAM 使用者指南*中的 [IAM JSON 政策元素參考](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html)。

### Aurora DSQL 的身分型政策範例
<a name="security_iam_service-with-iam-id-based-policies-examples"></a>



如需檢視 Aurora DSQL 身分型政策範例，請參閱 [Amazon Aurora DSQL 的身分型政策範例](security_iam_id-based-policy-examples.md)。

## Aurora DSQL 內的資源型政策
<a name="security_iam_service-with-iam-resource-based-policies"></a>

**支援資源型政策：**是

資源型政策是附加到資源的 JSON 政策文件。資源型政策的最常見範例是 IAM 角色信任政策和 Amazon S3 儲存貯體政策。在支援資源型政策的服務中，服務管理員可以使用它們來控制對特定資源的存取權限。對於附加政策的資源，政策會定義指定的主體可以對該資源執行的動作以及在何種條件下執行的動作。您必須在資源型政策中[指定主體](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html)。主體可以包括帳戶、使用者、角色、聯合身分使用者或 AWS 服務。資源型政策是位於該服務中的內嵌政策。您無法在以資源為基礎的原則中使用 IAM 的 AWS 受管原則。

若要了解如何建立和管理 Aurora DSQL 叢集的資源型政策，請參閱 [Aurora DSQL 的資源型政策](https://docs.aws.amazon.com/aurora-dsql/latest/userguide/resource-based-policies.html)。

## Aurora DSQL 的政策動作
<a name="security_iam_service-with-iam-id-based-policies-actions"></a>

**支援政策動作：**是

管理員可以使用 AWS JSON 政策來指定誰可以存取內容。也就是說，哪個**主體**在什麼**條件**下可以對什麼**資源**執行哪些**動作**。

JSON 政策的 `Action` 元素描述您可以用來允許或拒絕政策中存取的動作。政策會使用動作來授予執行相關聯動作的許可。



如要查看 Aurora DSQL 動作清單，請參閱*服務授權參考*中的 [Amazon Aurora DSQL 定義動作](https://docs.aws.amazon.com/IAM/latest/UserGuide/list_your_service.html#your_service-actions-as-permissions)。

Aurora DSQL 中的政策動作會在動作之前使用以下字首：

```
dsql
```

若要在單一陳述式中指定多個動作，請用逗號分隔。

```
"Action": [
      "dsql:action1",
      "dsql:action2"
]
```





如需檢視 Aurora DSQL 身分型政策範例，請參閱 [Amazon Aurora DSQL 的身分型政策範例](security_iam_id-based-policy-examples.md)。

## Aurora DSQL 的政策資源
<a name="security_iam_service-with-iam-id-based-policies-resources"></a>

**支援政策資源：**是

管理員可以使用 AWS JSON 政策來指定誰可以存取內容。也就是說，哪個**主體**在什麼**條件**下可以對什麼**資源**執行哪些**動作**。

`Resource` JSON 政策元素可指定要套用動作的物件。最佳實務是使用其 [Amazon Resource Name (ARN)](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html) 來指定資源。若動作不支援資源層級許可，使用萬用字元 (\$1) 表示該陳述式適用於所有資源。

```
"Resource": "*"
```

若要查看 Aurora DSQL 資源類型清單及其 ARN，請參閱*服務授權參考*中的 [Amazon Aurora DSQL 定義資源](https://docs.aws.amazon.com/IAM/latest/UserGuide/list_your_service.html#your_service-resources-for-iam-policies)。若要瞭解您可以使用哪些動作指定每個資源的 ARN，請參閱 [Amazon Aurora DSQL 定義的動作](https://docs.aws.amazon.com/IAM/latest/UserGuide/list_your_service.html#your_service-actions-as-permissions)。





如需檢視 Aurora DSQL 身分型政策範例，請參閱 [Amazon Aurora DSQL 的身分型政策範例](security_iam_id-based-policy-examples.md)。

## Aurora DSQL 的政策條件索引鍵
<a name="security_iam_service-with-iam-id-based-policies-conditionkeys"></a>

**支援服務特定政策條件金鑰：**是

管理員可以使用 AWS JSON 政策來指定誰可以存取內容。也就是說，哪個**主體**在什麼**條件**下可以對什麼**資源**執行哪些**動作**。

`Condition` 元素會根據定義的條件，指定陳述式的執行時機。您可以建立使用[條件運算子](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html)的條件運算式 (例如等於或小於)，來比對政策中的條件和請求中的值。若要查看所有 AWS 全域條件索引鍵，請參閱《*IAM 使用者指南*》中的[AWS 全域條件內容索引鍵](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html)。

若要查看 Aurora DSQL 條件索引鍵清單，請參閱*服務授權參考*中的 [Amazon Aurora DSQL 條件索引鍵](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonauroradsql.html#amazonauroradsql-policy-keys)。若要瞭解哪些動作和資源可搭配使用條件索引鍵，請參閱 [Amazon Aurora DSQL 定義的動作](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonauroradsql.html#amazonauroradsql-actions-as-permissions)。

如需檢視 Aurora DSQL 身分型政策範例，請參閱 [Amazon Aurora DSQL 的身分型政策範例](security_iam_id-based-policy-examples.md)。

## Aurora DSQL 中的 ACL
<a name="security_iam_service-with-iam-acls"></a>

**支援 ACL：**否 

存取控制清單 (ACL) 可控制哪些主體 (帳戶成員、使用者或角色) 擁有存取某資源的許可。ACL 類似於資源型政策，但它們不使用 JSON 政策文件格式。

## ABAC 搭配 Aurora DSQL
<a name="security_iam_service-with-iam-tags"></a>

**支援 ABAC (政策中的標籤)：**是

屬性型存取控制 (ABAC) 是一種授權策略，依據稱為標籤的屬性來定義許可。您可以將標籤連接至 IAM 實體 AWS 和資源，然後設計 ABAC 政策，以便在委託人的標籤符合資源上的標籤時允許操作。

如需根據標籤控制存取，請使用 `aws:ResourceTag/key-name`、`aws:RequestTag/key-name` 或 `aws:TagKeys` 條件索引鍵，在政策的[條件元素](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html)中，提供標籤資訊。

如果服務支援每個資源類型的全部三個條件金鑰，則對該服務而言，值為 **Yes**。如果服務僅支援某些資源類型的全部三個條件金鑰，則值為 **Partial**。

如需 ABAC 的詳細資訊，請參閱《*IAM 使用者指南*》中的[使用 ABAC 授權定義許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_attribute-based-access-control.html)。如要查看含有設定 ABAC 步驟的教學課程，請參閱《*IAM 使用者指南*》中的[使用屬性型存取控制 (ABAC)](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_attribute-based-access-control.html)。

## 使用臨時憑證搭配 Aurora DSQL
<a name="security_iam_service-with-iam-roles-tempcreds"></a>

**支援臨時憑證：**是

臨時登入資料提供 AWS 資源的短期存取權，並在您使用聯合或切換角色時自動建立。 AWS 建議您動態產生臨時登入資料，而不是使用長期存取金鑰。如需詳細資訊，請參閱《*IAM 使用者指南*》中的 [IAM 中的臨時安全憑證](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html)與[可與 IAM 搭配運作的AWS 服務](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html)。

## Aurora DSQL 的跨服務主體許可權限
<a name="security_iam_service-with-iam-principal-permissions"></a>

**支援轉寄存取工作階段 (FAS)：**是

 轉送存取工作階段 (FAS) 使用呼叫 的委託人許可 AWS 服務，並結合 請求 AWS 服務 向下游服務提出請求。如需提出 FAS 請求時的政策詳細資訊，請參閱[轉發存取工作階段](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_forward_access_sessions.html)。

## Aurora DSQL 的服務角色
<a name="security_iam_service-with-iam-roles-service"></a>

**支援服務角色：**是

 服務角色是服務擔任的 [IAM 角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)，可代您執行動作。IAM 管理員可以從 IAM 內建立、修改和刪除服務角色。如需詳細資訊，請參閱 *IAM 使用者指南*中的[建立角色以委派許可權給 AWS 服務](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html)。

**警告**  
變更服務角色的許可權限有可能會讓 Aurora DSQL 功能出現故障。只有在 Aurora DSQL 提供指引時，才能編輯服務角色。

## 適用於 Aurora DSQL 的服務連結角色
<a name="security_iam_service-with-iam-roles-service-linked"></a>

**支援服務連結角色：**是

 服務連結角色是連結至 的一種服務角色 AWS 服務。服務可以擔任代表您執行動作的角色。服務連結角色會出現在您的 中 AWS 帳戶 ，並由服務擁有。IAM 管理員可以檢視，但不能編輯服務連結角色的許可。

如需建立或管理 Aurora DSQL 服務連結角色的詳細資訊，請參閱 [在 Aurora DSQL 中使用服務連結角色](working-with-service-linked-roles.md)。

# Amazon Aurora DSQL 的身分型政策範例
<a name="security_iam_id-based-policy-examples"></a>

根據預設，使用者和角色不具備建立或修改 Aurora DSQL 資源的許可權限。若要授予使用者對其所需資源執行動作的許可，IAM 管理員可以建立 IAM 政策。

如需了解如何使用這些範例 JSON 政策文件建立 IAM 身分型政策，請參閱 *IAM 使用者指南*中的[建立 IAM 政策 (主控台)](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html)。

如需 Aurora DSQL 所定義之動作和資源類型的詳細資訊，包括每種資源類型的 ARN 格式，請參閱*服務授權參考*的[適用於 Amazon Aurora DSQL 的動作、資源和條件索引鍵](https://docs.aws.amazon.com/IAM/latest/UserGuide/list_your_service.html)。

**Topics**
+ [

## 政策最佳實務
](#security_iam_service-with-iam-policy-best-practices)
+ [

## 使用 Aurora DSQL 主控台
](#security_iam_id-based-policy-examples-console)
+ [

## 允許使用者檢視他們自己的許可
](#security_iam_id-based-policy-examples-view-own-permissions)
+ [

## 允許叢集管理和資料庫連線
](#security_iam_id-based-policy-examples-cluster-management)
+ [

## 根據標籤的 Aurora DSQL 資源存取
](#security_iam_id-based-policy-examples-tag-based-access)

## 政策最佳實務
<a name="security_iam_service-with-iam-policy-best-practices"></a>

身分型政策會判斷您帳戶中的人員是否可以建立、存取或刪除 Aurora DSQL 資源。這些動作可能會讓您的 AWS 帳戶產生費用。當您建立或編輯身分型政策時，請遵循下列準則及建議事項：
+ **開始使用 AWS 受管政策並邁向最低權限許可** – 若要開始將許可授予您的使用者和工作負載，請使用將許可授予許多常見使用案例的 *AWS 受管政策*。它們可在您的 中使用 AWS 帳戶。我們建議您定義特定於使用案例 AWS 的客戶受管政策，進一步減少許可。如需更多資訊，請參閱《*IAM 使用者指南*》中的 [AWS 受管政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies)或[任務職能的AWS 受管政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_job-functions.html)。
+ **套用最低權限許可** – 設定 IAM 政策的許可時，請僅授予執行任務所需的許可。為實現此目的，您可以定義在特定條件下可以對特定資源採取的動作，這也稱為*最低權限許可*。如需使用 IAM 套用許可的更多相關資訊，請參閱《*IAM 使用者指南*》中的 [IAM 中的政策和許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html)。
+ **使用 IAM 政策中的條件進一步限制存取權** – 您可以將條件新增至政策，以限制動作和資源的存取。例如，您可以撰寫政策條件，指定必須使用 SSL 傳送所有請求。如果透過特定 例如 使用服務動作 AWS 服務，您也可以使用條件來授予其存取權 CloudFormation。如需詳細資訊，請參閱《*IAM 使用者指南*》中的 [IAM JSON 政策元素：條件](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html)。
+ **使用 IAM Access Analyzer 驗證 IAM 政策，確保許可安全且可正常運作** – IAM Access Analyzer 驗證新政策和現有政策，確保這些政策遵從 IAM 政策語言 (JSON) 和 IAM 最佳實務。IAM Access Analyzer 提供 100 多項政策檢查及切實可行的建議，可協助您撰寫安全且實用的政策。如需詳細資訊，請參閱《*IAM 使用者指南*》中的[使用 IAM Access Analyzer 驗證政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-policy-validation.html)。
+ **需要多重要素驗證 (MFA)** – 如果您的案例需要 IAM 使用者或 中的根使用者 AWS 帳戶，請開啟 MFA 以提高安全性。如需在呼叫 API 操作時請求 MFA，請將 MFA 條件新增至您的政策。如需詳細資訊，請參閱《*IAM 使用者指南*》中的[透過 MFA 的安全 API 存取](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa_configure-api-require.html)。

如需 IAM 中最佳實務的相關資訊，請參閱《*IAM 使用者指南*》中的 [IAM 安全最佳實務](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)。

## 使用 Aurora DSQL 主控台
<a name="security_iam_id-based-policy-examples-console"></a>

若要存取 Amazon Aurora DSQL 主控台，您必須擁有最基本的一組許可權限。這些許可必須允許您列出和檢視 中 Aurora DSQL 資源的詳細資訊 AWS 帳戶。如果您建立比最基本必要許可更嚴格的身分型政策，則對於具有該政策的實體 (使用者或角色) 而言，主控台就無法如預期運作。

對於僅呼叫 AWS CLI 或 AWS API 的使用者，您不需要允許最低主控台許可。反之，只需允許存取符合他們嘗試執行之 API 操作的動作就可以了。

為了確保使用者和角色仍然可以使用 Aurora DSQL 主控台，請將 Aurora DSQL `AmazonAuroraDSQLConsoleFullAccess`或 `AmazonAuroraDSQLReadOnlyAccess` AWS 受管政策連接到實體。如需詳細資訊，請參閱 *IAM 使用者指南*中的[新增許可到使用者](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_change-permissions.html#users_change_permissions-add-console)。

## 允許使用者檢視他們自己的許可
<a name="security_iam_id-based-policy-examples-view-own-permissions"></a>

此範例會示範如何建立政策，允許 IAM 使用者檢視附加到他們使用者身分的內嵌及受管政策。此政策包含在主控台或使用 或 AWS CLI AWS API 以程式設計方式完成此動作的許可。

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ViewOwnUserInfo",
            "Effect": "Allow",
            "Action": [
                "iam:GetUserPolicy",
                "iam:ListGroupsForUser",
                "iam:ListAttachedUserPolicies",
                "iam:ListUserPolicies",
                "iam:GetUser"
            ],
            "Resource": ["arn:aws:iam::*:user/${aws:username}"]
        },
        {
            "Sid": "NavigateInConsole",
            "Effect": "Allow",
            "Action": [
                "iam:GetGroupPolicy",
                "iam:GetPolicyVersion",
                "iam:GetPolicy",
                "iam:ListAttachedGroupPolicies",
                "iam:ListGroupPolicies",
                "iam:ListPolicyVersions",
                "iam:ListPolicies",
                "iam:ListUsers"
            ],
            "Resource": "*"
        }
    ]
}
```

## 允許叢集管理和資料庫連線
<a name="security_iam_id-based-policy-examples-cluster-management"></a>

下列政策會授予 IAM 使用者許可，以管理和連線至特定的 Aurora DSQL 叢集。政策會將叢集管理和連線動作範圍限定為單一叢集 Amazon Resource Name (ARN)，同時允許所有資源`dsql:ListClusters`，因為此動作不支援資源層級許可。

此範例使用 `dsql:DbConnectAdmin` 與 `admin`角色連線。若要改為使用自訂資料庫角色連線，請將 取代`dsql:DbConnectAdmin`為 `dsql:DbConnect`。如需詳細資訊，請參閱[Aurora DSQL 的身分驗證和授權](authentication-authorization.md)。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowClusterManagement",
            "Effect": "Allow",
            "Action": [
                "dsql:GetCluster",
                "dsql:UpdateCluster",
                "dsql:DeleteCluster",
                "dsql:DbConnectAdmin",
                "dsql:TagResource",
                "dsql:ListTagsForResource",
                "dsql:UntagResource"
            ],
            "Resource": "arn:aws:dsql:*:123456789012:cluster/my-cluster-id"
        },
        {
            "Sid": "AllowListClusters",
            "Effect": "Allow",
            "Action": "dsql:ListClusters",
            "Resource": "*"
        }
    ]
}
```

------

## 根據標籤的 Aurora DSQL 資源存取
<a name="security_iam_id-based-policy-examples-tag-based-access"></a>

您可以在身分型政策中使用條件，根據標籤控制對 Aurora DSQL 資源的存取。下列範例示範如何建立允許檢視叢集的政策。不過，只有在叢集標籤`Owner`具有該使用者名稱的值時，政策才會授予許可。此政策也會授予在主控台完成此動作的必要許可。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ListClustersInConsole",
            "Effect": "Allow",
            "Action": "dsql:ListClusters",
            "Resource": "*"
        },
        {
            "Sid": "ViewClusterIfOwner",
            "Effect": "Allow",
            "Action": "dsql:GetCluster",
            "Resource": "arn:aws:dsql:*:*:cluster/*",
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/Owner": "${aws:username}"
                }
            }
        }
    ]
}
```

------

您可以將此政策連接到您帳戶中的 IAM 使用者。如果名為 的使用者`richard-roe`嘗試檢視 Aurora DSQL 叢集，則叢集必須加上標籤 `Owner=richard-roe`或 `owner=richard-roe`。否則 IAM 會拒絕存取。條件標籤鍵 `Owner` 符合 `Owner` 和 `owner`，因為條件索引鍵名稱不區分大小寫。如需詳細資訊，請參閱《*IAM 使用者指南*》中的 [IAM JSON 政策元素：條件](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html)。

下列政策允許使用者建立叢集，前提是叢集使用自己的使用者名稱標記為 `Owner`。它也僅允許在使用者已擁有的叢集上進行標記。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowCreateTaggedCluster",
            "Effect": "Allow",
            "Action": "dsql:CreateCluster",
            "Resource": "arn:aws:dsql:*:123456789012:cluster/*",
            "Condition": {
                "StringEquals": {
                    "aws:RequestTag/Owner": "${aws:username}"
                }
            }
        },
        {
            "Sid": "AllowTagOwnedClusters",
            "Effect": "Allow",
            "Action": "dsql:TagResource",
            "Resource": "arn:aws:dsql:*:123456789012:cluster/*",
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/Owner": "${aws:username}"
                }
            }
        }
    ]
}
```

------







# 對 Amazon Aurora DSQL 身分與存取進行故障診斷
<a name="security_iam_troubleshoot"></a>

請使用以下資訊協助您診斷和修正使用 Aurora DSQL 和 IAM 時的常見問題。

**Topics**
+ [

## 我未獲授權，不得在 Aurora DSQL 中執行動作
](#security_iam_troubleshoot-no-permissions)
+ [

## 我未獲得執行 iam:PassRole 的授權
](#security_iam_troubleshoot-passrole)
+ [

## 我想要允許 以外的人員 AWS 帳戶 存取我的 Aurora DSQL 資源
](#security_iam_troubleshoot-cross-account-access)

## 我未獲授權，不得在 Aurora DSQL 中執行動作
<a name="security_iam_troubleshoot-no-permissions"></a>

如果您收到錯誤，告知您未獲授權執行動作，您的政策必須更新，允許您執行動作。

下列範例錯誤會在 `mateojackson` 嘗試使用主控台檢視 `my-dsql-cluster` 資源詳細資訊，但並無 `GetCluster` 許可權限時發生。

```
User: iam:::user/mateojackson is not authorized to perform: GetCluster on resource: my-dsql-cluster
```

在此情況下，必須更新 `mateojackson` 使用者的政策，允許使用 `GetCluster` 動作存取 `my-dsql-cluster` 資源。

如需任何協助，請聯絡您的 ​ 管理員。您的管理員提供您的簽署憑證。

## 我未獲得執行 iam:PassRole 的授權
<a name="security_iam_troubleshoot-passrole"></a>

如果錯誤訊息告知您未獲得授權，無法執行 `iam:PassRole` 動作，您的政策就必須更新，允許您將角色傳遞給 Aurora DSQL。

有些 AWS 服務 可讓您將現有角色傳遞給該服務，而不是建立新的服務角色或服務連結角色。如需執行此作業，您必須擁有將角色傳遞至該服務的許可。

名為 `marymajor` 的 IAM 使用者嘗試使用主控台在 Aurora DSQL 中執行動作時，發生下列範例錯誤。但是，動作請求服務具備服務角色授予的許可。Mary 沒有將角色傳遞給服務的許可。

```
User: arn:aws:iam::123456789012:user/marymajor is not authorized to perform: iam:PassRole
```

在這種情況下，Mary 的政策必須更新，允許她執行 `iam:PassRole` 動作。

如果您需要協助，請聯絡您的 AWS 管理員。您的管理員提供您的簽署憑證。

## 我想要允許 以外的人員 AWS 帳戶 存取我的 Aurora DSQL 資源
<a name="security_iam_troubleshoot-cross-account-access"></a>

您可以建立一個角色，讓其他帳戶中的使用者或您組織外部的人員存取您的資源。您可以指定要允許哪些信任物件取得該角色。針對支援基於資源的政策或存取控制清單 (ACL) 的服務，您可以使用那些政策來授予人員存取您的資源的許可。

如需進一步了解，請參閱以下內容：
+ 若要瞭解 Aurora DSQL 是否支援這些功能，請參閱 [Amazon Aurora DSQL 如何搭配使用 IAM](security_iam_service-with-iam.md)。
+ 若要了解如何提供您擁有 AWS 帳戶 的資源存取權，請參閱《[IAM 使用者指南》中的在您擁有 AWS 帳戶 的另一個 中為 IAM 使用者提供存取權](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_aws-accounts.html)。 **
+ 若要了解如何將資源的存取權提供給第三方 AWS 帳戶，請參閱《*IAM 使用者指南*》中的[將存取權提供給第三方 AWS 帳戶 擁有](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_third-party.html)。
+ 如需了解如何透過聯合身分提供存取權，請參閱《*IAM 使用者指南*》中的[將存取權提供給在外部進行身分驗證的使用者 (聯合身分)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_federated-users.html)。
+ 如需了解使用角色和資源型政策進行跨帳戶存取之間的差異，請參閱《*IAM 使用者指南*》中的 [IAM 中的跨帳戶資源存取](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-cross-account-resource-access.html)。

# Aurora DSQL 的資源型政策
<a name="resource-based-policies"></a>

使用 Aurora DSQL 的資源型政策，透過直接連接到叢集資源的 JSON 政策文件來限制或授予對叢集的存取。這些政策可精細控制誰可以存取您的叢集，以及在哪些條件下存取您的叢集。

預設可從公有網際網路存取 Aurora DSQL 叢集，並以 IAM 身分驗證做為主要安全控制。以資源為基礎的政策可讓您新增存取限制，尤其是封鎖來自公有網際網路的存取。

以資源為基礎的政策可與 IAM 身分為基礎的政策搭配使用。 會 AWS 評估這兩種類型的政策，以判斷對叢集的任何存取請求的最終許可。根據預設，可在 帳戶中存取 Aurora DSQL 叢集。如果 IAM 使用者或角色具有 Aurora DSQL 許可，他們可以存取未連接資源型政策的叢集。

**注意**  
資源型政策的變更最終會一致，且通常會在一分鐘內生效。

如需身分型政策與資源型政策之間差異的詳細資訊，請參閱《*IAM 使用者指南*》中的[身分型政策和資源型政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_identity-vs-resource.html)。

## 何時使用資源型政策
<a name="rbp-when-to-use"></a>

以資源為基礎的政策在這些案例中特別有用：
+ *網路型存取控制* — 根據請求來源的 VPC 或 IP 地址來限制存取，或完全封鎖公有網際網路存取。使用 `aws:SourceVpc`和 等條件金鑰`aws:SourceIp`來控制網路存取。
+ *多個團隊或應用程式* — 授予多個團隊或應用程式的相同叢集存取權。您可以在叢集上定義存取規則一次，而不是管理每個委託人的個別 IAM 政策。
+ *複雜條件式存取* — 根據多個因素控制存取，例如網路屬性、請求內容和使用者屬性。您可以在單一政策中結合多個條件。
+ *集中式安全控管* — 讓叢集擁有者使用與現有安全實務整合的熟悉 AWS 政策語法來控制存取。

**注意**  
Aurora DSQL 資源型政策尚未支援跨帳戶存取，但將在未來版本中提供。

當有人嘗試連線到您的 Aurora DSQL 叢集時， 會 AWS 評估您的資源型政策，做為授權內容的一部分，以及任何相關的 IAM 政策，以判斷是否應允許或拒絕請求。

以資源為基礎的政策可以將存取權授予與叢集相同 AWS 帳戶內的主體。對於多區域叢集，每個區域叢集都有自己的資源型政策，允許在需要時進行區域特定的存取控制。

**注意**  
條件內容索引鍵可能因區域 （例如 VPC IDs) 而異。

**Topics**
+ [何時使用](#rbp-when-to-use)
+ [使用 政策建立](rbp-create-cluster.md)
+ [新增和編輯政策](rbp-attach-policy.md)
+ [檢視政策](rbp-view-policy.md)
+ [移除政策](rbp-remove-policy.md)
+ [政策範例](rbp-examples.md)
+ [封鎖公有存取權](rbp-block-public-access.md)
+ [API 操作](rbp-api-operations.md)

# 使用資源型政策建立叢集
<a name="rbp-create-cluster"></a>

您可以在建立新叢集時連接資源型政策，以確保存取控制從一開始就就緒。每個叢集可以有一個直接連接到叢集的內嵌政策。

## AWS 管理主控台
<a name="rbp-create-cluster-console"></a>

**在叢集建立期間新增資源型政策**

1. 登入 AWS 管理主控台，並在 https：//[https://console.aws.amazon.com/dsql/](https://console.aws.amazon.com/dsql) 開啟 Aurora DSQL 主控台。

1. 選擇 **Create Cluster** (建立叢集)。

1. 視需要設定叢集名稱、標籤和多區域設定。

1. 在**叢集設定**區段中，找到以**資源為基礎的政策**選項。

1. 開啟**新增以資源為基礎的政策**。

1. 在 JSON 編輯器中輸入您的政策文件。例如，若要封鎖公有網際網路存取：

   ```
   {
     "Version": "2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Deny",
         "Principal": {
           "AWS": "*"
         },
         "Resource": "*",
         "Action": [
           "dsql:DbConnect",
           "dsql:DbConnectAdmin"
         ],
         "Condition": {
           "Null": {
             "aws:SourceVpc": "true"
           }
         }
       }
     ]
   }
   ```

1. 您可以使用**編輯陳述式**或**新增陳述式**來建置您的政策。

1. 完成剩餘的叢集組態，然後選擇**建立叢集**。

## AWS CLI
<a name="rbp-create-cluster-cli"></a>

建立叢集時，請使用 `--policy` 參數來連接內嵌政策：

```
aws dsql create-cluster --policy '{
    "Version": "2012-10-17",		 	 	 
    "Statement": [{
        "Effect": "Deny",
        "Principal": {"AWS": "*"},
        "Resource": "*",
        "Action": ["dsql:DbConnect", "dsql:DbConnectAdmin"],
        "Condition": { 
            "StringNotEquals": { "aws:SourceVpc": "vpc-123456" } 
        }
    }]
}'
```

## AWS SDKs
<a name="rbp-create-cluster-sdk"></a>

------
#### [ Python ]

```
import boto3
import json

client = boto3.client('dsql')

policy = {
    "Version": "2012-10-17",		 	 	 
    "Statement": [{
        "Effect": "Deny",
        "Principal": {"AWS": "*"},
        "Resource": "*",
        "Action": ["dsql:DbConnect", "dsql:DbConnectAdmin"],
        "Condition": { 
            "StringNotEquals": { "aws:SourceVpc": "vpc-123456" } 
        }
    }]
}

response = client.create_cluster(
    policy=json.dumps(policy)
)

print(f"Cluster created: {response['identifier']}")
```

------
#### [ Java ]

```
import software.amazon.awssdk.services.dsql.DsqlClient;
import software.amazon.awssdk.services.dsql.model.CreateClusterRequest;
import software.amazon.awssdk.services.dsql.model.CreateClusterResponse;

DsqlClient client = DsqlClient.create();

String policy = """
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [{
    "Effect": "Deny",
    "Principal": {"AWS": "*"},
    "Resource": "*",
    "Action": ["dsql:DbConnect", "dsql:DbConnectAdmin"],
    "Condition": { 
      "StringNotEquals": { "aws:SourceVpc": "vpc-123456" } 
    }
  }]
}
""";

CreateClusterRequest request = CreateClusterRequest.builder()
    .policy(policy)
    .build();

CreateClusterResponse response = client.createCluster(request);
System.out.println("Cluster created: " + response.identifier());
```

------

# 新增和編輯叢集的資源型政策
<a name="rbp-attach-policy"></a>

## AWS 管理主控台
<a name="rbp-attach-console"></a>

**將資源型政策新增至現有叢集**

1. 登入 AWS 管理主控台，並在 https：//[https://console.aws.amazon.com/dsql/](https://console.aws.amazon.com/dsql) 開啟 Aurora DSQL 主控台。

1. 從叢集清單中選擇叢集，以開啟叢集詳細資訊頁面。

1. 選擇**許可**索引標籤。

1. 在**資源型政策**區段中，選擇**新增政策**。

1. 在 JSON 編輯器中輸入您的政策文件。您可以使用**編輯陳述式**或**新增陳述式**來建置您的政策。

1. 選擇 **Add Policy (新增政策)**。

**編輯現有的資源型政策**

1. 登入 AWS 管理主控台，並在 https：//[https://console.aws.amazon.com/dsql/](https://console.aws.amazon.com/dsql) 開啟 Aurora DSQL 主控台。

1. 從叢集清單中選擇叢集，以開啟叢集詳細資訊頁面。

1. 選擇**許可**索引標籤。

1. 在**資源型政策**區段中，選擇**編輯**。

1. 在 JSON 編輯器中修改政策文件。您可以使用**編輯陳述式**或**新增陳述式**來更新您的政策。

1. 選擇**儲存變更**。

## AWS CLI
<a name="rbp-attach-cli"></a>

使用 `put-cluster-policy`命令來連接新政策或更新叢集上的現有政策：

```
aws dsql put-cluster-policy --identifier your_cluster_id --policy '{
    "Version": "2012-10-17",		 	 	 
    "Statement": [{
        "Effect": "Deny",
        "Principal": {"AWS": "*"},
        "Resource": "*",
        "Action": ["dsql:DbConnect", "dsql:DbConnectAdmin"],
        "Condition": { 
            "Null": { "aws:SourceVpc": "true" } 
        }
    }]
}'
```

## AWS SDKs
<a name="rbp-attach-sdk"></a>

------
#### [ Python ]

```
import boto3
import json

client = boto3.client('dsql')

policy = {
    "Version": "2012-10-17",		 	 	 
    "Statement": [{
        "Effect": "Deny",
        "Principal": {"AWS": "*"},
        "Resource": "*",
        "Action": ["dsql:DbConnect", "dsql:DbConnectAdmin"],
        "Condition": {
            "Null": {"aws:SourceVpc": "true"}
        }
    }]
}

response = client.put_cluster_policy(
    identifier='your_cluster_id',
    policy=json.dumps(policy)
)
```

------
#### [ Java ]

```
import software.amazon.awssdk.services.dsql.DsqlClient;
import software.amazon.awssdk.services.dsql.model.PutClusterPolicyRequest;

DsqlClient client = DsqlClient.create();

String policy = """
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [{
    "Effect": "Deny",
    "Principal": {"AWS": "*"},
    "Resource": "*",
    "Action": ["dsql:DbConnect", "dsql:DbConnectAdmin"],
    "Condition": {
      "Null": {"aws:SourceVpc": "true"}
    }
  }]
}
""";

PutClusterPolicyRequest request = PutClusterPolicyRequest.builder()
    .identifier("your_cluster_id")
    .policy(policy)
    .build();

client.putClusterPolicy(request);
```

------

# 檢視資源型政策
<a name="rbp-view-policy"></a>

您可以檢視連接至叢集的資源型政策，以了解目前的存取控制。

## AWS 管理主控台
<a name="rbp-view-console"></a>

**檢視資源型政策**

1. 登入 AWS 管理主控台，並在 https：//[https://console.aws.amazon.com/dsql/](https://console.aws.amazon.com/dsql) 開啟 Aurora DSQL 主控台。

1. 從叢集清單中選擇叢集，以開啟叢集詳細資訊頁面。

1. 選擇**許可**索引標籤。

1. 在以**資源為基礎的政策區段中檢視附加的政策**。

## AWS CLI
<a name="rbp-view-cli"></a>

使用 `get-cluster-policy`命令來檢視叢集的資源型政策：

```
aws dsql get-cluster-policy --identifier your_cluster_id
```

## AWS SDKs
<a name="rbp-view-sdk"></a>

------
#### [ Python ]

```
import boto3
import json

client = boto3.client('dsql')

response = client.get_cluster_policy(
    identifier='your_cluster_id'
)

# Parse and pretty-print the policy
policy = json.loads(response['policy'])
print(json.dumps(policy, indent=2))
```

------
#### [ Java ]

```
import software.amazon.awssdk.services.dsql.DsqlClient;
import software.amazon.awssdk.services.dsql.model.GetClusterPolicyRequest;
import software.amazon.awssdk.services.dsql.model.GetClusterPolicyResponse;

DsqlClient client = DsqlClient.create();

GetClusterPolicyRequest request = GetClusterPolicyRequest.builder()
    .identifier("your_cluster_id")
    .build();

GetClusterPolicyResponse response = client.getClusterPolicy(request);
System.out.println("Policy: " + response.policy());
```

------

# 移除資源型政策
<a name="rbp-remove-policy"></a>

您可以從叢集移除資源型政策，以變更存取控制。

**重要**  
當您從叢集移除所有資源型政策時，存取權將完全由 IAM 身分型政策控制。

## AWS 管理主控台
<a name="rbp-remove-console"></a>

**移除以資源為基礎的政策**

1. 登入 AWS 管理主控台，並在 https：//[https://console.aws.amazon.com/dsql/](https://console.aws.amazon.com/dsql) 開啟 Aurora DSQL 主控台。

1. 從叢集清單中選擇叢集，以開啟叢集詳細資訊頁面。

1. 選擇**許可**索引標籤。

1. 在**資源型政策**區段中，選擇**刪除**。

1. 在確認對話方塊中，輸入 **confirm** 以確認刪除。

1. 選擇 **刪除**。

## AWS CLI
<a name="rbp-remove-cli"></a>

使用 `delete-cluster-policy`命令從叢集中移除政策：

```
aws dsql delete-cluster-policy --identifier your_cluster_id
```

## AWS SDKs
<a name="rbp-remove-sdk"></a>

------
#### [ Python ]

```
import boto3

client = boto3.client('dsql')

response = client.delete_cluster_policy(
    identifier='your_cluster_id'
)

print("Policy deleted successfully")
```

------
#### [ Java ]

```
import software.amazon.awssdk.services.dsql.DsqlClient;
import software.amazon.awssdk.services.dsql.model.DeleteClusterPolicyRequest;

DsqlClient client = DsqlClient.create();

DeleteClusterPolicyRequest request = DeleteClusterPolicyRequest.builder()
    .identifier("your_cluster_id")
    .build();

client.deleteClusterPolicy(request);
System.out.println("Policy deleted successfully");
```

------

# 常見的資源型政策範例
<a name="rbp-examples"></a>

這些範例顯示控制 Aurora DSQL 叢集存取的常見模式。您可以結合和修改這些模式，以符合您的特定存取需求。

## 封鎖公有網際網路存取
<a name="rbp-example-block-public"></a>

此政策會封鎖從公有網際網路 （非 VPC) 連線至 Aurora DSQL 叢集。政策不會指定客戶可以從哪些 VPC 連線，只有他們必須從 VPC 連線。若要限制對特定 VPC 的存取，請使用 `aws:SourceVpc`搭配 `StringEquals`條件運算子。

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Deny",
      "Principal": {
        "AWS": "*"
      },
      "Resource": "*",
      "Action": [
        "dsql:DbConnect",
        "dsql:DbConnectAdmin"
      ],
      "Condition": {
        "Null": {
          "aws:SourceVpc": "true"
        }
      }
    }
  ]
}
```

**注意**  
此範例僅使用 `aws:SourceVpc` 來檢查 VPC 連線。`aws:VpcSourceIp` 和 `aws:SourceVpce`條件金鑰提供額外的精細度，但對於僅限 VPC 的基本存取控制則不需要。

若要為特定角色提供例外狀況，請改用此政策：

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "DenyAccessFromOutsideVPC",
      "Effect": "Deny",
      "Principal": {
        "AWS": "*"
      },
      "Resource": "*",
      "Action": [
        "dsql:DbConnect",
        "dsql:DbConnectAdmin"
      ],
      "Condition": {
        "Null": {
          "aws:SourceVpc": "true"
        },
        "StringNotEquals": {
          "aws:PrincipalArn": [
            "arn:aws:iam::123456789012:role/ExceptionRole",
            "arn:aws:iam::123456789012:role/AnotherExceptionRole"
          ]
        }
      }
    }
  ]
}
```

## 限制對 AWS Organization 的存取
<a name="rbp-example-org-access"></a>

此政策限制對 AWS 組織內主體的存取：

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Deny",
      "Principal": {
        "AWS": "*"
      },
      "Action": [
        "dsql:DbConnect",
        "dsql:DbConnectAdmin"
      ],
      "Resource": "arn:aws:dsql:us-east-1:123456789012:cluster/mydsqlclusterid0123456789a",
      "Condition": {
        "StringNotEquals": {
          "aws:PrincipalOrgID": "o-exampleorgid"
        }
      }
    }
  ]
}
```

## 限制對特定組織單位的存取
<a name="rbp-example-ou-access"></a>

此政策限制對 AWS 組織中特定組織單位 (OU) 內主體的存取，提供比整個組織更精細的控制：

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Deny",
      "Principal": {
        "AWS": "*"
      },
      "Action": [
        "dsql:DbConnect"
      ],
      "Resource": "arn:aws:dsql:us-east-1:123456789012:cluster/mydsqlclusterid0123456789a",
      "Condition": {
        "StringNotLike": {
          "aws:PrincipalOrgPaths": "o-exampleorgid/r-examplerootid/ou-exampleouid/*"
        }
      }
    }
  ]
}
```

## 多區域叢集政策
<a name="rbp-example-multi-region"></a>

對於多區域叢集，每個區域叢集會維護自己的資源政策，允許區域特定的控制項。以下是每個區域具有不同政策的範例：

*us-east-1 政策：*

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Deny",
      "Principal": {
        "AWS": "*"
      },
      "Resource": "*",
      "Action": [
        "dsql:DbConnect"
      ],
      "Condition": {
        "StringNotEquals": {
          "aws:SourceVpc": "vpc-east1-id"
        },
        "Null": {
          "aws:SourceVpc": "true"
        }
      }
    }
  ]
}
```

*us-east-2 政策：*

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "*"
      },
      "Resource": "*",
      "Action": [
        "dsql:DbConnect"
      ],
      "Condition": {
        "StringEquals": {
          "aws:SourceVpc": "vpc-east2-id"
        }
      }
    }
  ]
}
```

**注意**  
條件內容索引鍵可能不同 AWS 區域 （例如 VPC IDs)。

# 使用 Aurora DSQL 中的資源型政策封鎖公開存取
<a name="rbp-block-public-access"></a>

封鎖公開存取 (BPA) 是一種功能，可識別和防止連接以資源為基礎的政策，以授予您 AWS 帳戶間 Aurora DSQL 叢集的公開存取權。使用 BPA，您可以防止公開存取您的 Aurora DSQL 資源。BPA 會在建立或修改資源型政策期間執行檢查，並協助改善 Aurora DSQL 的安全狀態。

BPA 會使用[自動推理](https://aws.amazon.com/what-is/automated-reasoning/)技術分析資源型政策授予的存取權，若在管理政策時偵測到此類權限，系統會發出警示通知。分析會驗證所有以資源為基礎的政策陳述、動作，以及您政策中所使用的條件金鑰集合的存取權限。

**重要**  
BPA 可防止透過直接連接到叢集等 Aurora DSQL 資源的資源型政策授予公開存取，以協助保護您的資源。除了使用 BPA 外，請仔細檢查下列政策，確認這些政策未授予公開存取權：  
連接到相關聯 AWS 主體的身分型政策 （例如 IAM 角色）
連接至相關聯 AWS 資源的資源型政策 （例如 AWS ，Key Management Service (KMS) 金鑰）

您必須確保[主體](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html)不包含 `*` 項目，或由指定的條件金鑰之一限制主體對資源的存取。如果以資源為基礎的政策跨 AWS 帳戶授予對叢集的公有存取權，Aurora DSQL 會阻止您建立或修改政策，直到政策中的規格更正並視為非公有。

您可以在 `Principal` 區塊內指定一個或多個主體，將政策設為非公開。下列資源型政策範例透過指定兩個主體來阻止公開存取。

```
{
  "Effect": "Allow",
  "Principal": {
    "AWS": [
      "123456789012",
      "111122223333"
    ]
  },
  "Action": "dsql:*",
  "Resource": "arn:aws:dsql:us-east-1:123456789012:cluster/cluster-id"
}
```

指定特定條件金鑰以限制存取的政策，也不會被視為公開。除了評估資源型政策中指定的主體外，下列[受信任條件金鑰](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html)也用於完成非公開存取的政策評估。
+ `aws:PrincipalAccount`
+ `aws:PrincipalArn`
+ `aws:PrincipalOrgID`
+ `aws:PrincipalOrgPaths`
+ `aws:SourceAccount`
+ `aws:SourceArn`
+ `aws:SourceVpc`
+ `aws:SourceVpce`
+ `aws:UserId`
+ `aws:PrincipalServiceName`
+ `aws:PrincipalServiceNamesList`
+ `aws:PrincipalIsAWSService`
+ `aws:Ec2InstanceSourceVpc`
+ `aws:SourceOrgID`
+ `aws:SourceOrgPaths`

此外，若要使資源型政策為非公開，Amazon Resource Name (ARN) 與字串金鑰的值不得包含萬用字元或變數。若您的資源型政策使用 `aws:PrincipalIsAWSService` 金鑰，您必須確保已將該金鑰值設為 true。

下列政策限制指定帳戶中使用者 `Ben` 的存取權。該條件使 `Principal` 受限，因此不被視為公開。

```
{
  "Effect": "Allow",
  "Principal": {
    "AWS": "*"
  },
  "Action": "dsql:*",
  "Resource": "arn:aws:dsql:us-east-1:123456789012:cluster/cluster-id",
  "Condition": {
    "StringEquals": {
      "aws:PrincipalArn": "arn:aws:iam::123456789012:user/Ben"
    }
  }
}
```

下列非公開的資源型政策範例使用 `StringEquals` 運算子來限制 `sourceVPC`。

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "*"
      },
      "Action": "dsql:*",
      "Resource": "arn:aws:dsql:us-east-1:123456789012:cluster/cluster-id",
      "Condition": {
        "StringEquals": {
          "aws:SourceVpc": [
            "vpc-91237329"
          ]
        }
      }
    }
  ]
}
```

# Aurora DSQL API 操作和資源型政策
<a name="rbp-api-operations"></a>

Aurora DSQL 中的資源型政策會控制對特定 API 操作的存取。下列各節會列出依類別組織的所有 Aurora DSQL API 操作，並指出哪些操作支援以資源為基礎的政策。

*支援 RBP* 欄指出當政策連接到叢集時，API 操作是否受限於資源型政策評估。

## 標籤 APIs
<a name="rbp-tag-apis"></a>


| API 作業 | Description | 支援 RBP | 
| --- | --- | --- | 
| [ListTagsForResource](https://docs.aws.amazon.com/aurora-dsql/latest/APIReference/API_ListTagsForResource.html) | 列出 Aurora DSQL 資源的標籤 | 是 | 
| [TagResource](https://docs.aws.amazon.com/aurora-dsql/latest/APIReference/API_TagResource.html) | 將標籤新增至 Aurora DSQL 資源 | 是 | 
| [UntagResource](https://docs.aws.amazon.com/aurora-dsql/latest/APIReference/API_UntagResource.html) | 從 Aurora DSQL 資源移除標籤 | 是 | 

## 叢集管理 APIs
<a name="rbp-cluster-management-apis"></a>


| API 作業 | Description | 支援 RBP | 
| --- | --- | --- | 
| [CreateCluster](https://docs.aws.amazon.com/aurora-dsql/latest/APIReference/API_CreateCluster.html) | 建立新叢集 | 否 | 
| [DeleteCluster](https://docs.aws.amazon.com/aurora-dsql/latest/APIReference/API_DeleteCluster.html) | 刪除叢集 | 是 | 
| [GetCluster](https://docs.aws.amazon.com/aurora-dsql/latest/APIReference/API_GetCluster.html) | 擷取叢集的相關資訊 | 是 | 
| [GetVpcEndpointServiceName](https://docs.aws.amazon.com/aurora-dsql/latest/APIReference/API_GetVpcEndpointServiceName.html) | 擷取叢集的 VPC 端點服務名稱 | 是 | 
| [ListClusters](https://docs.aws.amazon.com/aurora-dsql/latest/APIReference/API_ListClusters.html) | 列出您帳戶中的叢集 | 否 | 
| [UpdateCluster](https://docs.aws.amazon.com/aurora-dsql/latest/APIReference/API_UpdateCluster.html) | 更新叢集的組態 | 是 | 

## 多區域屬性 APIs
<a name="rbp-multi-region-apis"></a>


| API 作業 | Description | 支援 RBP | 
| --- | --- | --- | 
| [AddPeerCluster](https://docs.aws.amazon.com/aurora-dsql/latest/APIReference/API_AddPeerCluster.html) | 將對等叢集新增至多區域組態 | 是 | 
| [PutMultiRegionProperties](https://docs.aws.amazon.com/aurora-dsql/latest/APIReference/API_PutMultiRegionProperties.html) | 設定叢集的多區域屬性 | 是 | 
| [PutWitnessRegion](https://docs.aws.amazon.com/aurora-dsql/latest/APIReference/API_PutWitnessRegion.html) | 設定多區域叢集的見證區域 | 是 | 

## 資源型政策 API
<a name="rbp-policy-apis"></a>


| API 作業 | Description | 支援 RBP | 
| --- | --- | --- | 
| [DeleteClusterPolicy](https://docs.aws.amazon.com/aurora-dsql/latest/APIReference/API_DeleteClusterPolicy.html) | 從叢集刪除資源型政策 | 是 | 
| [GetClusterPolicy](https://docs.aws.amazon.com/aurora-dsql/latest/APIReference/API_GetClusterPolicy.html) | 擷取叢集的資源型政策 | 是 | 
| [PutClusterPolicy](https://docs.aws.amazon.com/aurora-dsql/latest/APIReference/API_PutClusterPolicy.html) | 建立或更新叢集的資源型政策 | 是 | 

## AWS Fault Injection Service APIs
<a name="rbp-fis-apis"></a>


| API 作業 | Description | 支援 RBP | 
| --- | --- | --- | 
| [InjectError](https://docs.aws.amazon.com/aurora-dsql/latest/APIReference/API_InjectError.html) | 注入錯誤以進行錯誤注入測試 | 否 | 

## 備份和還原 APIs
<a name="rbp-backup-restore-apis"></a>


| API 作業 | Description | 支援 RBP | 
| --- | --- | --- | 
| [GetBackupJob](https://docs.aws.amazon.com/aurora-dsql/latest/APIReference/API_GetBackupJob.html) | 擷取備份任務的相關資訊 | 否 | 
| [GetRestoreJob](https://docs.aws.amazon.com/aurora-dsql/latest/APIReference/API_GetRestoreJob.html) | 擷取還原任務的相關資訊 | 否 | 
| [StartBackupJob](https://docs.aws.amazon.com/aurora-dsql/latest/APIReference/API_StartBackupJob.html) | 啟動叢集的備份任務 | 是 | 
| [StartRestoreJob](https://docs.aws.amazon.com/aurora-dsql/latest/APIReference/API_StartRestoreJob.html) | 從備份啟動還原任務 | 否 | 
| [StopBackupJob](https://docs.aws.amazon.com/aurora-dsql/latest/APIReference/API_StopBackupJob.html) | 停止執行中的備份任務 | 否 | 
| [StopRestoreJob](https://docs.aws.amazon.com/aurora-dsql/latest/APIReference/API_StopRestoreJob.html) | 停止執行中的還原任務 | 否 | 

# 在 Aurora DSQL 中使用服務連結角色
<a name="working-with-service-linked-roles"></a>

 Aurora DSQL 使用 AWS Identity and Access Management (IAM) [ 服務連結角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html#id_roles_terms-and-concepts)。服務連結角色是直接連結至 Aurora DSQL 的一種特殊 IAM 角色類型。服務連結角色由 Aurora DSQL 預先定義，並包含服務 AWS 服務 代表 Aurora DSQL 叢集呼叫 所需的所有許可。

服務連結角色可簡化設定流程，因為您不必手動新增必要的許可權限以使用 Aurora DSQL。您建立叢集時，Aurora DSQL 會自動為您建立服務連結角色。只有在刪除所有叢集後，您才可以刪除服務連結角色。這樣您就不會不小心移除存取資源所需的許可權限，以保護您的 Aurora DSQL 資源。

如需關於支援服務連結角色的其他服務資訊，請參閱[可搭配 IAM 運作的AWS 服務](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html)，尋找 **Service-Linked Role** (服務連結角色) 欄中顯示為 **Yes** (是) 的服務。選擇具有連結的**是**，以檢視該服務的服務連結角色文件。

服務連結角色可在所有支援的 Aurora DSQL 區域中使用。

## Aurora DSQL 的服務連結角色許可權限
<a name="working-with-service-linked-roles-permissions"></a>

Aurora DSQL 使用名為 的服務連結角色 `AWSServiceRoleForAuroraDsql` – 允許 Amazon Aurora DSQL 代表您建立和管理 AWS 資源。此服務連結角色連接至下列受管政策：[AuroraDsqlServiceLinkedRolePolicy](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AuroraDsqlServiceLinkedRolePolicy.html)。

**注意**  
您必須設定許可，IAM 實體 (如使用者、群組或角色) 才可建立、編輯或刪除服務連結角色。您可能會遇到下列錯誤訊息：`You don't have the permissions to create an Amazon Aurora DSQL service-linked role`。如果您看到此訊息，請確認您已啟用以下許可：  

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "CreateDsqlServiceLinkedRole",
            "Effect": "Allow",
            "Action": "iam:CreateServiceLinkedRole",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "iam:AWSServiceName": "dsql.amazonaws.com"
                }
            }
        }
    ]
}
```
如需更多資訊，請參閱[服務連結角色許可權限](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create-service-linked-role.html#service-linked-role-permissions.html)。

## 建立服務連結角色
<a name="working-with-service-linked-roles-create"></a>

您不需要手動建立 AuroraDSQLServiceLinkedRolePolicy 服務連結角色。Aurora DSQL 會為您建立服務連結角色。如果已從您的帳戶刪除 AuroraDSQLServiceLinkedRolePolicy 服務連結角色，Aurora DSQL 會在您建立新的 Aurora DSQL 叢集時建立角色。

## 編輯服務連結角色
<a name="working-with-service-linked-roles-edit"></a>

 Aurora DSQL 不允許您編輯 AuroraDSQLServiceLinkedRolePolicy 服務連結角色。因為可能有各種實體會參考服務連結角色，所以您無法在建立角色之後變更其名稱。不過，您可以使用 IAM 主控台、 AWS Command Line Interface (AWS CLI) 或 IAM API 編輯角色的描述。

## 刪除服務連結角色
<a name="working-with-service-linked-roles-delete"></a>

若您不再使用需要服務連結角色的功能或服務，我們建議您刪除該角色。如此一來，您就沒有未主動監控或維護的未使用實體。

您必須先刪除帳戶中的任何叢集，才能刪除帳戶的服務連結角色。

您可以使用 IAM 主控台 AWS CLI、 或 IAM API 來刪除服務連結角色。如需詳細資訊，請參閱《IAM 使用者指南》中的[建立服務連結角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create-service-linked-role.html#delete-service-linked-role)。

## Aurora DSQL 服務連結角色的支援區域
<a name="working-with-service-linked-role-regions"></a>

Aurora DSQL 支援在所有提供服務的區域中使用服務連結角色。如需詳細資訊，請參閱[AWS 區域與端點](https://docs.aws.amazon.com/general/latest/gr/rande.html)。

# 使用 IAM 條件索引鍵搭配 Amazon Aurora DSQL
<a name="using-iam-condition-keys"></a>

您在 Aurora DSQL 中授予許可權限時，可以指定條件以決定許可權限政策的生效方式。以下是如何在 Aurora DSQL 許可權限政策中使用條件索引鍵的範例。

## 範例 1：授予在特定 中建立叢集的許可 AWS 區域
<a name="using-iam-condition-keys-create-cluster"></a>

下列政策授予許可權限在美國東部 (維吉尼亞北部) 和美國東部 (俄亥俄) 區域中建立叢集。此政策使用資源 ARN 限制允許的區域，因此 Aurora DSQL 只有在政策 `Resource` 區段中指定該 ARN 時才能建立叢集。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": ["dsql:CreateCluster"], 
            "Resource": [
                "arn:aws:dsql:us-east-1:*:cluster/*",
                "arn:aws:dsql:us-east-2:*:cluster/*"
            ],
            "Effect": "Allow"
        }
    ]
}
```

------

## 範例 2：授予在特定 AWS 區域中建立多區域叢集的許可
<a name="using-iam-condition-keys-create-mr-cluster"></a>

下列政策授予許可權限在美國東部 (維吉尼亞北部) 和美國東部 (俄亥俄) 區域中建立多區域叢集。此政策使用資源 ARN 限制允許的區域，因此 Aurora DSQL 只有在政策 `Resource` 區段中指定此 ARN 時才能建立多區域叢集。請注意，建立多區域叢集也需要在每個指定區域中具備 `PutMultiRegionProperties`、`PutWitnessRegion` 和 `AddPeerCluster` 許可權限。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
        "Effect": "Allow",
        "Action": [
          "dsql:CreateCluster",
          "dsql:PutMultiRegionProperties",
          "dsql:PutWitnessRegion",
          "dsql:AddPeerCluster"
        ],
        "Resource": [
           "arn:aws:dsql:us-east-1:123456789012:cluster/*",
           "arn:aws:dsql:us-east-2:123456789012:cluster/*"
        ]
      }
    ]
}
```

------

## 範例 3：授予許可權限以建立具有特定見證區域的多區域叢集
<a name="using-iam-condition-keys-create-mr-cluster-witness"></a>

下列政策使用 Aurora DSQL `dsql:WitnessRegion` 條件索引鍵，可讓使用者在美國西部 (奧勒岡) 建立包含見證區域的多區域叢集。如果您未指定 `dsql:WitnessRegion` 條件，您可以使用任何區域做為見證區域。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "dsql:CreateCluster",
                "dsql:PutMultiRegionProperties",
                "dsql:AddPeerCluster"
            ],
            "Resource": "arn:aws:dsql:*:123456789012:cluster/*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "dsql:PutWitnessRegion"
            ],
            "Resource": "arn:aws:dsql:*:123456789012:cluster/*",
            "Condition": {
                "StringEquals": {
                    "dsql:WitnessRegion": [
                        "us-west-2"
                    ]
                }
            }
        }
    ]
}
```

------

# Amazon Aurora DSQL 中的事件回應
<a name="incident-response"></a>

安全是 AWS最重視的一環。作為 AWS 雲端共同責任模型的一部分， 會 AWS 管理符合最安全敏感組織需求的資料中心、網路和軟體架構。 AWS 負責任何與 Amazon Aurora DSQL 服務本身相關的事件回應。此外，身為 AWS 客戶，您需共同負責維護雲端的安全性。這表示您可以從可存取的 AWS 工具和功能控制您選擇實作的安全性。此外您也需要負責處理自己這部分的共同責任模型事件回應。

建立安全基準以達到讓應用程式在雲端中執行的目標，您就可以偵測偏差並加以回應。為了協助您瞭解事件回應和您的選擇對公司目標的影響，建議您檢閱下列資源：
+ [AWS 安全事件回應指南](https://docs.aws.amazon.com/whitepapers/latest/aws-security-incident-response-guide/aws-security-incident-response-guide.html)
+ [AWS 安全性、身分和合規的最佳實務](https://aws.amazon.com/architecture/security-identity-compliance/)
+ [AWS 雲端採用架構 (CAF) 的安全觀點白皮書](https://docs.aws.amazon.com/whitepapers/latest/overview-aws-cloud-adoption-framework/security-perspective.html)

[Amazon GuardDuty](https://aws.amazon.com/guardduty/) 是一種受管威脅偵測服務，會持續監控惡意或未經授權的行為，以協助客戶保護 AWS 帳戶 和工作負載，並在可疑活動可能升級到事件之前識別。此服務會監控活動，例如異常 API 呼叫或可能未經授權的部署，指出帳戶或資源可能遭惡意行為者入侵或偵察。例如 Amazon GuardDuty 能夠偵測 Amazon Aurora DSQL API 中的可疑活動，例如使用者從新位置登入和建立新叢集。

# Amazon Aurora DSQL 的合規驗證
<a name="compliance-validation"></a>

若要了解 是否 AWS 服務 在特定合規計劃範圍內，請參閱[AWS 服務 合規計劃範圍內](https://aws.amazon.com/compliance/services-in-scope/)然後選擇您感興趣的合規計劃。如需一般資訊，請參閱[AWS 合規計劃](https://aws.amazon.com/compliance/programs/)。

您可以使用 下載第三方稽核報告 AWS Artifact。如需詳細資訊，請參閱[在 中下載報告 AWS Artifact](https://docs.aws.amazon.com/artifact/latest/ug/downloading-documents.html)。

您使用 時的合規責任 AWS 服務 取決於資料的敏感度、您公司的合規目標，以及適用的法律和法規。如需使用 時合規責任的詳細資訊 AWS 服務，請參閱 [AWS 安全文件](https://docs.aws.amazon.com/security/)。

# Amazon Aurora DSQL 的恢復能力
<a name="disaster-recovery-resiliency"></a>

 AWS 全球基礎設施是以 AWS 區域 和可用區域 (AZ) 為基礎建置。 AWS 區域 提供多個實體隔離和隔離的可用區域，這些可用區域以低延遲、高輸送量和高備援聯網連接。透過可用區域，您可以設計與操作的應用程式和資料庫，在可用區域之間自動容錯移轉而不會發生中斷。可用區域的可用性、容錯能力和擴展能力，均較單一或多個資料中心的傳統基礎設施還高。Aurora DSQL 旨在讓您充分利用 AWS 區域基礎設施，同時提供最高的資料庫可用性。根據預設，Aurora DSQL 中的單一區域叢集具有多可用區域可用性，能夠容忍可能影響完整可用區域存取的主要元件故障和基礎結構中斷。多區域叢集提供多可用區域恢復能力的所有優點，同時仍提供高度一致的資料庫可用性，即使應用程式用戶端無法存取 AWS 區域 也一樣。

如需 AWS 區域 和可用區域的詳細資訊，請參閱 [AWS 全球基礎設施](https://aws.amazon.com/about-aws/global-infrastructure/)。

除了 AWS 全球基礎設施之外，Aurora DSQL 還提供數種功能，以協助支援您的資料彈性和備份需求。

## 備份與還原
<a name="disaster-recovery-resiliency-backup-and-restore"></a>

Aurora DSQL 支援使用 備份和還原 AWS Backup 主控台。您可為單一區域和多區域叢集執行完整備份和還原。如需詳細資訊，請參閱[Amazon Aurora DSQL 的備份與還原備份和還原](backup-aurora-dsql.md)。

## 複寫
<a name="disaster-recovery-resiliency-replication"></a>

Aurora DSQL 的設計是將所有寫入交易遞交至分散式交易日誌，並將所有遞交的日誌資料同步複寫至三個 AZ 中的使用者儲存複本。多區域叢集可在讀取和寫入區域之間提供完整的跨區域複寫功能。

指定的見證區域可支援僅交易日誌寫入，不會耗用儲存。見證區域沒有端點。這表示見證區域只會儲存加密的交易日誌，不需要管理或設定，而且使用者無法存取。如果見證區域受損，則不會影響叢集可用性。在見證區域復原之前，寫入交易的延遲可能會小幅增加。

Aurora DSQL 交易日誌和使用者儲存會與呈現給 Aurora DSQL 查詢處理器的所有資料一起發佈，做為單一邏輯磁碟區。Aurora DSQL 會根據資料庫主索引鍵範圍和存取模式自動分割、合併和複寫資料。Aurora DSQL 會根據讀取存取頻率自動擴展和縮減讀取複本。

叢集儲存複本會分散在多租用戶儲存機群中。如果元件或可用區域受損，Aurora DSQL 會自動將存取重新導向至仍在運作的元件，並以非同步方式修復遺失的複本。Aurora DSQL 修正受損複本後，就會自動將複本新增回到儲存仲裁，並將其提供給叢集。

## 高可用性
<a name="disaster-recovery-resiliency-high-availability"></a>

根據預設，Aurora DSQL 中的單一區域和多區域叢集為雙主動設計，您不需要手動佈建、設定或重新設定任何叢集。Aurora DSQL 可完全自動化叢集復原，無須傳統的主要次要容錯移轉作業。複寫一律是同步的，並在多個可用區域完成，因此在故障復原期間，不會因為複寫延遲或容錯移轉至非同步次要資料庫而導致資料遺失。

單一區域叢集提供多可用區域備援端點，可自動啟用並行存取，並跨三個可用區域提供強大的資料一致性。這表示這三個可用區域的使用者儲存複本，都會將相同的結果傳回給一或多個讀取器，並且永遠可用於接收寫入。Aurora DSQL 多區域叢集的所有區域都可享有這種強大的一致性和多可用區域恢復能力。這表示多區域叢集提供兩個高度一致的區域端點，因此用戶端可以無差別地讀取或寫入至任一區域，且遞交時沒有複寫延遲。

Aurora DSQL 為單一區域叢集提供 99.99% 的可用性，多區域叢集則為 99.999% 的可用性。

## 故障注入測試
<a name="fault-injection-testing"></a>

Amazon Aurora DSQL 與 AWS Fault Injection Service (AWS FIS) 整合，這是一種全受管服務，用於執行受控故障注入實驗，以改善應用程式的彈性。使用 AWS FIS，您可以：
+ 建立可定義特定故障情境的實驗範本
+ 注入故障 (提升叢集連線錯誤率) 以驗證應用程式錯誤的處理和復原機制
+ 測試多區域應用程式行為，以驗證應用程式流量在 AWS 區域 發生高連線錯誤率 AWS 區域 之間的轉移

 例如在跨越美國東部 (維吉尼亞北部) 和美國東部 (俄亥俄) 的多區域叢集中，您可以在美國東部 (俄亥俄) 執行實驗以測試故障，同時美國東部 (維吉尼亞北部) 則繼續正常運作。此項受控測試可協助您事先識別和解決潛在問題，以免影響正式作業工作負載。

如需 AWS FIS 支援[動作的完整清單，請參閱 使用者指南中的動作目標](https://docs.aws.amazon.com/fis/latest/userguide/action-sequence.html#action-targets)。 *AWS FIS *

如需 中可用 Amazon Aurora DSQL 動作的相關資訊 AWS FIS，請參閱*AWS FIS 《 使用者指南*》中的 [Aurora DSQL 動作參考](https://docs.aws.amazon.com/fis/latest/userguide/fis-actions-reference.html#dsql-actions-reference)。

若要開始執行故障注入實驗，請參閱 *AWS FIS 使用者指南*中的[規劃 AWS FIS 實驗](https://docs.aws.amazon.com/fis/latest/userguide/getting-started-planning.html)。

# Amazon Aurora DSQL 中的基礎結構安全性
<a name="infrastructure-security"></a>

Amazon Aurora DSQL 是受管服務，受到[安全性、身分和合規最佳實務](https://aws.amazon.com/architecture/security-identity-compliance)中所述的 AWS 全球網路安全程序的保護。

您可以使用 AWS 發佈的 API 呼叫，透過網路存取 Aurora DSQL。用戶端必須支援 Transport Layer Security (TLS) 1.2 或更新版本。用戶端也必須支援具備完美轉送私密 (PFS) 的密碼套件，例如臨時 Diffie-Hellman (DHE) 或橢圓曲線臨時 Diffie-Hellman (ECDHE)。現代系統(如 Java 7 和更新版本)大多會支援這些模式。

此外，請求必須使用存取金鑰 ID 和與 IAM 主體相關聯的私密存取金鑰來簽署。或者，您可以透過 [AWS Security Token Service](https://docs.aws.amazon.com/STS/latest/APIReference/Welcome.html) (AWS STS) 來產生暫時安全憑證來簽署請求。

# 使用 管理和連線至 Amazon Aurora DSQL 叢集 AWS PrivateLink
<a name="privatelink-managing-clusters"></a>

使用 AWS PrivateLink for Amazon Aurora DSQL，您可以在 Amazon Virtual Private Cloud 中佈建界面 Amazon VPC 端點 （界面端點）。這些端點可直接透過 Amazon VPC 和 內部部署的應用程式存取 Direct Connect，或 AWS 區域 是透過 Amazon VPC 對等互連在不同的 中存取。使用 AWS PrivateLink 和 介面端點，您可以簡化從應用程式到 Aurora DSQL 的私有網路連線。

Amazon VPC 內的應用程式可以使用 Amazon VPC 介面端點存取 Aurora DSQL，不需要使用公共 IP 位址。

介面端點是由一個或多個彈性網路介面 (ENI) 表示；這些介面是從 Amazon VPC 子網路所指派的私有 IP 位址。透過介面端點對 Aurora DSQL 的請求會保留在 AWS 網路上。如需如何將 Amazon VPC 與內部部署網路連線的詳細資訊，請參閱 [Direct Connect 使用者指南](https://docs.aws.amazon.com/directconnect/latest/UserGuide/)和[AWS Site-to-Site VPN VPN 使用者指南](https://docs.aws.amazon.com/vpn/latest/s2svpn/VPC_VPN.html)。

如需介面端點的一般資訊，請參閱[AWS PrivateLink](https://docs.aws.amazon.com/vpc/latest/privatelink/what-is-privatelink)《 使用者指南》中的[使用介面 Amazon VPC 端點存取 AWS 服務](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html)。

## 適用於 Aurora DSQL 的 Amazon VPC 端點類型
<a name="endpoint-types-dsql"></a>

 Aurora DSQL 需要兩種不同類型的 AWS PrivateLink 端點。

1. *管理端點* — 此端點用於管理作業，例如 Aurora DSQL 叢集上的 `get`、`create`、`update`、`delete` 和 `list`。請參閱 [使用 管理 Aurora DSQL 叢集 AWS PrivateLink](#managing-dsql-clusters-using-privatelink)。

1. *連線端點* — 此端點用於透過 PostgreSQL 用戶端連線至 Aurora DSQL 叢集。請參閱 [使用 連線至 Aurora DSQL 叢集 AWS PrivateLink](#privatelink-connecting-clusters)。

## 使用 AWS PrivateLink for Aurora DSQL 時的考量事項
<a name="privatelink-dsql-considerations"></a>

Amazon VPC 考量適用於 Aurora DSQL AWS PrivateLink 的 。如需詳細資訊，請參閱《 AWS PrivateLink 指南》中的[使用介面 VPC 端點和配額存取 AWS 服務](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html#vpce-interface-limitations)。 [AWS PrivateLink](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-limits-endpoints.html)

## 使用 管理 Aurora DSQL 叢集 AWS PrivateLink
<a name="managing-dsql-clusters-using-privatelink"></a>

您可以使用 AWS Command Line Interface 或 AWS 軟體開發套件 (SDKs) 透過 Aurora DSQL 介面端點管理 Aurora DSQL 叢集。

### 建立 Amazon VPC 端點
<a name="create-vpc-endpoint"></a>

若要建立 Amazon VPC 介面端點，請參閱《 AWS PrivateLink 指南》中的[建立 Amazon VPC 端點](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html#create-interface-endpoint-aws)。

```
aws ec2 create-vpc-endpoint \
--region region \
--service-name com.amazonaws.region.dsql \
--vpc-id your-vpc-id \
--subnet-ids your-subnet-id \
--vpc-endpoint-type Interface \
--security-group-ids client-sg-id \
```

若要使用 Aurora DSQL API 請求的預設區域 DNS 名稱，請勿在建立 Aurora DSQL 介面端點時停用私有 DNS。啟用私有 DNS 時，從 Amazon VPC 內部對 Aurora DSQL 服務提出的請求，會自動解析至 Amazon VPC 端點的私有 IP 位址，而不是公共 DNS 名稱。啟用私有 DNS 時，Amazon VPC 內部提出的 Aurora DSQL 請求會自動解析至您的 Amazon VPC 端點。

如果未啟用私有 DNS，請使用 `--region`和 `--endpoint-url` 參數搭配 AWS CLI 命令，透過 Aurora DSQL 介面端點管理 Aurora DSQL 叢集。

### 使用端點 URL 列出叢集
<a name="list-clusters-endpoint-url"></a>

在下列範例中，將 AWS 區域 `us-east-1`和 Amazon VPC 端點 ID 的 DNS 名稱取代`vpce-1a2b3c4d-5e6f.dsql.us-east-1.vpce.amazonaws.com`為您自己的資訊。

```
aws dsql --region us-east-1 --endpoint-url https://vpce-1a2b3c4d-5e6f.dsql.us-east-1.vpce.amazonaws.com list-clusters
```

### API 操作
<a name="api-operations"></a>

如需在 Aurora DSQL 中管理資源的文件，請參閱 [Aurora DSQL API 參考](CHAP_api_reference.md)。

### 管理端點政策
<a name="managing-endpoint-policies"></a>

透過徹底測試和設定 Amazon VPC 端點政策，您可以協助確保 Aurora DSQL 叢集安全、合規，並符合組織的特定存取控制和控管要求。

**範例：完整 Aurora DSQL 存取政策**

下列政策會透過指定的 Amazon VPC 端點，授予所有 Aurora DSQL 動作和資源的完整存取權限。

```
aws ec2 modify-vpc-endpoint \
    --vpc-endpoint-id vpce-xxxxxxxxxxxxxxxxx \
    --region region \
    --policy-document '{
      "Version": "2012-10-17",		 	 	 
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": "*",
          "Action": "dsql:*",
          "Resource": "*"
        }
      ]
    }'
```

**範例：受限制的 Aurora DSQL 存取政策**

下列政策僅允許這些 Aurora DSQL 動作。
+ `CreateCluster`
+ `GetCluster`
+ `ListClusters`

所有其他 Aurora DSQL 動作都會遭到拒絕。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": "*",
      "Action": [
        "dsql:CreateCluster",
        "dsql:GetCluster",
        "dsql:ListClusters"
      ],
      "Resource": "*"
    }
  ]
}
```

------

## 使用 連線至 Aurora DSQL 叢集 AWS PrivateLink
<a name="privatelink-connecting-clusters"></a>

設定並啟用 AWS PrivateLink 端點後，您可以使用 PostgreSQL 用戶端連線至 Aurora DSQL 叢集。以下連線指示概述建構適當的主機名稱以透過 AWS PrivateLink 端點連線的步驟。

### 設定 AWS PrivateLink 連線端點
<a name="setting-up-privatelink-endpoint"></a>

******步驟 1：取得叢集的服務名稱**

建立端點以 AWS PrivateLink 連線至叢集時，您必須先擷取叢集特定的服務名稱。

------
#### [ AWS CLI ]

```
aws dsql get-vpc-endpoint-service-name \
--region us-east-1 \
--identifier your-cluster-id
```

回應範例

```
{
    "serviceName": "com.amazonaws.us-east-1.dsql-fnh4"
}
```

服務名稱包含識別符，例如範例中的 `dsql-fnh4`。建構主機名稱以連線至叢集時，也需要此識別符。

------
#### [ AWS SDK for Python (Boto3) ]

```
import boto3

dsql_client = boto3.client('dsql', region_name='us-east-1')
response = dsql_client.get_vpc_endpoint_service_name(
    identifier='your-cluster-id'
)
service_name = response['serviceName']
print(f"Service Name: {service_name}")
```

------
#### [ AWS SDK for Java 2.x ]

```
import software.amazon.awssdk.auth.credentials.DefaultCredentialsProvider;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.dsql.DsqlClient;
import software.amazon.awssdk.services.dsql.model.GetVpcEndpointServiceNameRequest;
import software.amazon.awssdk.services.dsql.model.GetVpcEndpointServiceNameResponse;

String region = "us-east-1";
String clusterId = "your-cluster-id";

DsqlClient dsqlClient = DsqlClient.builder()
    .region(Region.of(region))
    .credentialsProvider(DefaultCredentialsProvider.create())
    .build();

GetVpcEndpointServiceNameResponse response = dsqlClient.getVpcEndpointServiceName(
    GetVpcEndpointServiceNameRequest.builder()
        .identifier(clusterId)
        .build()
);
String serviceName = response.serviceName();
System.out.println("Service Name: " + serviceName);
```

------<a name="create-vpc-endpoint"></a>

**步驟 2：建立 Amazon VPC 端點**

使用上一個步驟中取得的服務名稱建立 Amazon VPC 端點。

**重要**  
以下連線指示僅適用於在啟用私有 DNS 時連線至叢集。建立端點時請勿使用 `--no-private-dns-enabled` 旗標，因為這會使下列連線指示無法正常運作。如果您停用私有 DNS，則需要建立自己的萬用字元私有 DNS 記錄指向建立的端點。

------
#### [ AWS CLI ]

```
aws ec2 create-vpc-endpoint \
    --region us-east-1 \
    --service-name service-name-for-your-cluster \
    --vpc-id your-vpc-id \
    --subnet-ids subnet-id-1 subnet-id-2  \
    --vpc-endpoint-type Interface \
    --security-group-ids security-group-id
```

**回應範例**

```
{
    "VpcEndpoint": {
        "VpcEndpointId": "vpce-0123456789abcdef0",
        "VpcEndpointType": "Interface",
        "VpcId": "vpc-0123456789abcdef0",
        "ServiceName": "com.amazonaws.us-east-1.dsql-fnh4",
        "State": "pending",
        "RouteTableIds": [],
        "SubnetIds": [
            "subnet-0123456789abcdef0",
            "subnet-0123456789abcdef1"
        ],
        "Groups": [
            {
                "GroupId": "sg-0123456789abcdef0",
                "GroupName": "default"
            }
        ],
        "PrivateDnsEnabled": true,
        "RequesterManaged": false,
        "NetworkInterfaceIds": [
            "eni-0123456789abcdef0",
            "eni-0123456789abcdef1"
        ],
        "DnsEntries": [
            {
                "DnsName": "*.dsql-fnh4.us-east-1.vpce.amazonaws.com",
                "HostedZoneId": "Z7HUB22UULQXV"
            }
        ],
        "CreationTimestamp": "2025-01-01T00:00:00.000Z"
    }
}
```

------
#### [ SDK for Python ]

```
import boto3

ec2_client = boto3.client('ec2', region_name='us-east-1')
response = ec2_client.create_vpc_endpoint(
    VpcEndpointType='Interface',
    VpcId='your-vpc-id',
    ServiceName='com.amazonaws.us-east-1.dsql-fnh4',  # Use the service name from previous step
    SubnetIds=[
        'subnet-id-1',
        'subnet-id-2'
    ],
    SecurityGroupIds=[
        'security-group-id'
    ]
)

vpc_endpoint_id = response['VpcEndpoint']['VpcEndpointId']
print(f"VPC Endpoint created with ID: {vpc_endpoint_id}")
```

------
#### [ SDK for Java 2.x ]

使用適用於 Aurora DSQL API 的端點 URL

```
import software.amazon.awssdk.auth.credentials.DefaultCredentialsProvider;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.ec2.Ec2Client;
import software.amazon.awssdk.services.ec2.model.CreateVpcEndpointRequest;
import software.amazon.awssdk.services.ec2.model.CreateVpcEndpointResponse;
import software.amazon.awssdk.services.ec2.model.VpcEndpointType;

String region = "us-east-1";
String serviceName = "com.amazonaws.us-east-1.dsql-fnh4";  // Use the service name from previous step
String vpcId = "your-vpc-id";

Ec2Client ec2Client = Ec2Client.builder()
    .region(Region.of(region))
    .credentialsProvider(DefaultCredentialsProvider.create())
    .build();

CreateVpcEndpointRequest request = CreateVpcEndpointRequest.builder()
    .vpcId(vpcId)
    .serviceName(serviceName)
    .vpcEndpointType(VpcEndpointType.INTERFACE)
    .subnetIds("subnet-id-1", "subnet-id-2")
    .securityGroupIds("security-group-id")
    .build();

CreateVpcEndpointResponse response = ec2Client.createVpcEndpoint(request);
String vpcEndpointId = response.vpcEndpoint().vpcEndpointId();
System.out.println("VPC Endpoint created with ID: " + vpcEndpointId);
```

------<a name="additional-setup-for-peering"></a>

**透過 Direct Connect 或 Amazon VPC 對等互連連線時的其他設定**

使用來自內部部署裝置的 AWS PrivateLink 連線端點，透過 Amazon VPC 對等互連或 連線到 Aurora DSQL 叢集時，可能需要一些額外的設定 Direct Connect。如果您的應用程式在與 AWS PrivateLink 端點相同的 Amazon VPC 中執行，則不需要此設定。上述建立的私有 DNS 項目無法在端點的 Amazon VPC 之外正確解析，但您可以建立自己的私有 DNS 記錄，以解析至您的 AWS PrivateLink 連線端點。

建立指向 AWS PrivateLink 端點完整網域名稱的私有 CNAME DNS 記錄。所建立 DNS 記錄的網域名稱應該從下列元件建構：

1. 服務名稱的服務識別符。例如：`dsql-fnh4`

1. 的 AWS 區域

使用下列格式的網域名稱建立 CNAME DNS 記錄： `*.service-identifier.region.on.aws`

網域名稱的格式很重要的原因有兩個：

1. 使用 `verify-full` SSL 模式時，用於連線至 Aurora DSQL 的主機名稱必須符合 Aurora DSQL 的伺服器憑證。這可確保最高層級的連線安全性。

1. Aurora DSQL 會使用用於連線至 Aurora DSQL 之主機名稱的叢集 ID 部分來識別連線叢集。

如果無法建立私有 DNS 記錄，您仍然可以連線到 Aurora DSQL。請參閱 [使用不含私有 DNS 的 AWS PrivateLink 端點連線至 Aurora DSQL 叢集](#connecting-cluster-id-option)。

### 使用連線 AWS PrivateLink 端點連線至 Aurora DSQL 叢集
<a name="connecting-endpoints"></a>

設定 AWS PrivateLink 端點並處於作用中狀態 （檢查 `State`是否為 `available`) 之後，您可以使用 PostgreSQL 用戶端連線至 Aurora DSQL 叢集。如需有關使用 AWS SDK 的說明，您可以遵循[使用 Aurora DSQL 進行程式設計](https://docs.aws.amazon.com/aurora-dsql/latest/userguide/programming-with.html)中的指南。您必須變更叢集端點以符合主機名稱格式。

#### 建構主機名稱
<a name="construct-hostname"></a>

透過 連線的主機名稱與公有 DNS 主機名稱 AWS PrivateLink 不同。您需要使用下列元件建構該主機名稱。

1. `Your-cluster-id`

1. 服務名稱的服務識別符。例如：`dsql-fnh4`

1.  AWS 區域。例如：`us-east-1`

使用下列格式：`cluster-id.service-identifier.region.on.aws`

**範例：使用 PostgreSQL 進行連線**

```
# Set environment variables
export CLUSTERID=your-cluster-id
export REGION=us-east-1
export SERVICE_IDENTIFIER=dsql-fnh4  # This should match the identifier in your service name

# Construct the hostname
export HOSTNAME="$CLUSTERID.$SERVICE_IDENTIFIER.$REGION.on.aws"

# Generate authentication token
export PGPASSWORD=$(aws dsql --region $REGION generate-db-connect-admin-auth-token --hostname $HOSTNAME)

# Connect using psql
psql -d postgres -h $HOSTNAME -U admin
```

#### 使用不含私有 DNS 的 AWS PrivateLink 端點連線至 Aurora DSQL 叢集
<a name="connecting-cluster-id-option"></a>

上述連線指示依賴私有 DNS 記錄。如果您的應用程式在與 AWS PrivateLink 端點相同的 Amazon VPC 中執行，則會為您建立 DNS 記錄。或者，如果您透過 Amazon VPC 對等互連從內部部署裝置連線 Direct Connect，則可以建立自己的私有 DNS 記錄。不過，由於安全團隊實施的網路限制，DNS 記錄設定並非總是可行的。如果您的應用程式必須使用對等 Amazon VPC Direct Connect 或從對等 Amazon VPC 連線，且無法進行 DNS 記錄設定，您仍然可以連線至 Aurora DSQL。

 Aurora DSQL 會使用您主機名稱的叢集 ID 部分來識別連線叢集，但如果無法設定 DNS 記錄，Aurora DSQL 支援使用`amzn-cluster-id`連線選項指定目標叢集。透過此選項，您可以在連線時使用 AWS PrivateLink 端點的完整網域名稱做為主機名稱。

**重要**  
連線至 AWS PrivateLink 端點的完整網域名稱或 IP 地址時，不支援 `verify-full` SSL 模式。因此，偏好設定私有 DNS。

**範例：使用 PostgreSQL 指定叢集 ID 連線選項**

```
# Set environment variables
export CLUSTERID=your-cluster-id
export REGION=us-east-1
export HOSTNAME=vpce-04037adb76c111221-d849uc2p.dsql-fnh4.us-east-1.vpce.amazonaws.com # This should match your endpoint's fully-qualified domain name

# Construct the hostname used to generate the authentication token
export AUTH_HOSTNAME="$CLUSTERID.dsql.$REGION.on.aws"

# Generate authentication token
export PGPASSWORD=$(aws dsql --region $REGION generate-db-connect-admin-auth-token --hostname $AUTH_HOSTNAME)

# Specify the amzn-cluster-id connection option
export PGOPTIONS="-c amzn-cluster-id=$CLUSTERID"

# Connect using psql
psql -d postgres -h $HOSTNAME -U admin
```

### 對 的問題進行故障診斷 AWS PrivateLink
<a name="troubleshooting-privatelink"></a>

#### 常見問題與解決方案
<a name="common-issues"></a>

下表列出有關 AWS PrivateLink 搭配 Aurora DSQL 時的常見問題和解決方案。


| 問題 | 可能原因 | 解決方案 | 
| --- | --- | --- | 
|  連線逾時  |  安全群組未正確設定  |  使用 Amazon VPC Reachability Analyzer 確保您的聯網設定允許連接埠 5432 的流量。  | 
|  DNS 解析失敗  |  未啟用私有 DNS  |  確認在啟用私有 DNS 的情況下建立 Amazon VPC 端點。  | 
|  身分驗證失敗  |  憑證不正確或記號過期  |  產生新的身分驗證記號並驗證使用者名稱。  | 
|  找不到服務名稱  |  不正確的叢集 ID  |  擷取服務名稱 AWS 區域 時，請再次檢查您的叢集 ID 和 。  | 

### 相關資源
<a name="related-resources"></a>

如需詳細資訊，請參閱下列資源：
+ [Amazon Aurora DSQL 使用者指南](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-dsql.html)
+ [AWS PrivateLink 文件](https://docs.aws.amazon.com/vpc/latest/privatelink/what-is-privatelink.html)
+ [透過 存取 AWS 服務 AWS PrivateLink](https://docs.aws.amazon.com/vpc/latest/privatelink/privatelink-access-aws-services.html)

# Amazon Aurora DSQL 中的組態與漏洞分析
<a name="configuration-vulnerability"></a>

AWS 處理基本安全任務，例如訪客作業系統 (OS) 和資料庫修補、防火牆組態和災難復原。這些程序已由適當的第三方進行檢閱並認證。如需詳細資訊，請參閱以下資源：
+ [共同責任模型](https://aws.amazon.com/compliance/shared-responsibility-model/)
+ [Amazon Web Services：安全程序概觀](https://d0.awsstatic.com/whitepapers/Security/AWS_Security_Whitepaper.pdf) (白皮書)

# 預防跨服務混淆代理人
<a name="cross-service-confused-deputy-prevention"></a>

混淆代理人問題屬於安全性問題，其中沒有執行動作許可的實體可以強制具有更多許可的實體執行該動作。在 中 AWS，跨服務模擬可能會導致混淆代理人問題。在某個服務 (*呼叫服務*) 呼叫另一個服務 (*被呼叫服務*) 時，可能會發生跨服務模擬。可以操縱呼叫服務來使用其許可，以其不應有存取許可的方式對其他客戶的資源採取動作。為了預防這種情況， AWS 提供的工具可協助您保護所有服務的資料，而這些服務主體已獲得您帳戶中資源的存取權。

若要限制 Amazon Aurora DSQL 為資源提供另一項服務的許可權限，我們建議在資源政策中使用 [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn) 和 [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount) 全域條件內容索引鍵。如果您想要僅允許一個資源與跨服務存取相關聯，則請使用 `aws:SourceArn`。如果您想要允許該帳戶中的任何資源與跨服務使用相關聯，請使用 `aws:SourceAccount`。

防範混淆代理人問題的最有效方法是使用 `aws:SourceArn` 全域條件內容索引鍵，以及資源的完整 ARN。如果不知道資源的完整 ARN，或者如果您指定了多個資源，請使用 `aws:SourceArn` 全域內容條件索引鍵搭配萬用字元 (`*`) 來表示 ARN 的未知部分。例如 `arn:aws:dsql:*:123456789012:*`。

如果 `aws:SourceArn` 值不包含帳戶 ID (例如 Amazon S3 儲存貯體 ARN)，您必須使用這兩個全域條件內容索引鍵來限制許可。

`aws:SourceArn` 的值必須是 ResourceDescription。

下列範例示範如何使用 Aurora DSQL 中的 `aws:SourceArn` 和 `aws:SourceAccount` 全域條件內容索引鍵，以預防混淆代理人問題。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Sid": "ConfusedDeputyPreventionExamplePolicy",
    "Effect": "Allow",
    "Principal": {
      "Service": "backup.amazonaws.com"
    },
    "Action": "dsql:GetCluster",
    "Resource": [
      "arn:aws:dsql:*:123456789012:cluster/*"
    ],
    "Condition": {
      "ArnLike": {
        "aws:SourceArn": "arn:aws:backup:*:123456789012:*"
      },
      "StringEquals": {
        "aws:SourceAccount": "123456789012"
      }
    }
  }
}
```

------

# Aurora DSQL 的安全最佳實務
<a name="best-practices-security"></a>

開發和實作自己的安全性政策時，不妨考慮使用 Aurora DSQL 提供的多種安全性功能。以下最佳實務為一般準則，並不代表完整的安全解決方案。這些最佳實務可能不適用或無法滿足您的環境需求，因此請將其視為實用建議就好，而不要當作是指示。

**Topics**
+ [

# Aurora DSQL 的偵測性安全最佳實務
](best-practices-security-detective.md)
+ [

# Aurora DSQL 預防性安全最佳實務
](best-practices-security-preventative.md)

# Aurora DSQL 的偵測性安全最佳實務
<a name="best-practices-security-detective"></a>

除了下列安全使用 Aurora DSQL 的方式之外，請參閱 中的[安全性](https://docs.aws.amazon.com/wellarchitected/latest/framework/security.html) AWS Well-Architected Tool ，以了解雲端技術如何改善您的安全性。

**Amazon CloudWatch 警示**  
使用 Amazon CloudWatch 警示，您可在自己指定的一段時間內監看單一指標。如果指標超過指定的閾值，則會傳送通知至 Amazon SNS 主題或 AWS Auto Scaling 政策。CloudWatch 警示不會因為處於特定狀態而調用動作。必須是狀態已變更並維持了所指定的時間長度，才會呼叫動作。

**為 Aurora DSQL 資源加上標籤，以便進行識別和自動化**  
您可以將中繼資料以標籤形式指派給 AWS 資源。每個標記都是由客戶定義金鑰和選用值組成的簡單標籤，能夠更輕鬆地管理、搜尋和篩選資源。  
標記允許實現分組控制。雖然標籤不具固有類型，但能讓您依用途、擁有者、環境或其他條件分類資源。下列是一些範例：  
+ 安全性：用於確定加密等需求。
+ 機密性：資源支援的特定資料機密等級識別符。
+ 環境：用來區分開發、測試和正式作業基礎結構。
您可以將中繼資料以標籤形式指派給 AWS 資源。每個標記都是由客戶定義金鑰和選用值組成的簡單標籤，能夠更輕鬆地管理、搜尋和篩選資源。  
標記允許實現分組控制。雖然標籤不具固有類型，但能讓您依用途、擁有者、環境或其他條件分類資源。下列是一些範例。  
+ 安全性：用於確定加密等需求。
+ 機密性：資源支援的特定資料機密等級識別符。
+ 環境：用來區分開發、測試和正式作業基礎結構。
如需詳細資訊，請參閱[標記 AWS 資源的最佳實務](https://docs.aws.amazon.com/whitepapers/latest/tagging-best-practices/tagging-best-practices.html)。

# Aurora DSQL 預防性安全最佳實務
<a name="best-practices-security-preventative"></a>

除了下列安全使用 Aurora DSQL 的方式之外，請參閱 中的[安全性](https://docs.aws.amazon.com/wellarchitected/latest/framework/security.html) AWS Well-Architected Tool ，以了解雲端技術如何改善您的安全性。

**使用 IAM 角色驗證對 Aurora DSQL 的存取權限。**  
存取 Aurora DSQL 的使用者、應用程式和其他 AWS 服務 必須在 AWS API 和 AWS CLI 請求中包含有效的 AWS 登入資料。您不應將 AWS 登入資料直接存放在應用程式或 EC2 執行個體中。這些是不會自動輪換的長期憑證。如果這些憑證遭到入侵，會對業務產生重大影響。IAM 角色可讓您取得可用來存取 AWS 服務 和資源的臨時存取金鑰。  
如需詳細資訊，請參閱[Aurora DSQL 的身分驗證和授權](authentication-authorization.md)。

**使用 IAM 政策進行 Aurora DSQL 基礎授權。**  
您在授予許可權限時會決定誰可以取得許可權限、可以取得哪些 Aurora DSQL API 的許可權限，以及可以對這些資源進行的特定動作。對降低錯誤或惡意意圖所引起的安全風險和影響而言，實作最低權限是其中關鍵。  
將許可權限政策連接至 IAM 角色，並授予許可權限在 Aurora DSQL 資源上執行作業。也提供 [IAM 實體的許可界限](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html)，可讓您設定身分型政策可授予 IAM 實體的最大許可權限。  
與 [ 的根使用者最佳實務 AWS 帳戶](https://docs.aws.amazon.com/IAM/latest/UserGuide/root-user-best-practices.html)類似，請勿使用 Aurora DSQL 中的 `admin`角色來執行日常操作。反之，我們建議您建立自訂資料庫角色以管理和連線至您的叢集。如需詳細資訊，請參閱[存取 Aurora DSQL](https://docs.aws.amazon.com/aurora-dsql/latest/userguide/accessing.html) 和[瞭解 Aurora DSQL 的身分驗證和授權](https://docs.aws.amazon.com/aurora-dsql/latest/userguide/accessing.html)。

**在正式作業環境中使用 `verify-full`。**  
此設定會驗證伺服器憑證是否由信任的憑證認證機構簽署，以及伺服器主機名稱是否與憑證相符。

**更新 PostgreSQL 用戶端**  
定期將 PostgreSQL 用戶端更新為最新版本，以享有提升安全性的效益。我們建議使用 PostgreSQL 17 版。