

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

# Amazon RDS 的安全性
<a name="UsingWithRDS"></a>

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

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

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

您可以管理對 Amazon RDS 資源以及資料庫執行個體上資料庫的存取權限。您用來管理存取權限的方法取決於使用者需要利用 Amazon RDS 執行何種類型的任務：
+ 在以 Amazon VPC 服務為基礎的 virtual private cloud (VPC) 中執行您的資料庫執行個體，以盡可能地取得最大的網路存取控制能力。如需在 VPC 中建立資料庫執行個體的詳細資訊，請參閱 [Amazon VPC 和 Amazon RDS](USER_VPC.md)。
+ 使用 AWS Identity and Access Management (IAM) 政策來指派許可，以決定允許誰管理 Amazon RDS 資源。例如，您可以使用 IAM 來決定誰可以建立、描述、修改和刪除資料庫執行個體、標記資源，或修改安全群組。
+ 使用安全群組來控制哪些 IP 位址或 Amazon EC2 執行個體可以連線至資料庫執行個體上的資料庫。當您第一次建立資料庫執行個體時，其防火牆會防止任何資料庫存取，但透過相關聯的安全群組所指定規則進行的資料庫存取除外。
+  對執行 Db2、MySQL、MariaDB、PostgreSQL、Oracle 或 Microsoft SQL Server 資料庫引擎的資料庫執行個體使用 Secure Socket Layer (SSL) 或 Transport Layer Security (TLS) 連線。如需搭配資料庫執行個體使用 SSL/TLS 的詳細資訊，請參閱 [使用 SSL/TLS 加密與資料庫執行個體或叢集的連線](UsingWithRDS.SSL.md)。
+ 使用 Amazon RDS 加密來保護資料庫執行個體和靜態快照。Amazon RDS 加密資料庫執行個體叢集會使用業界標準 AES-256 加密演算法，來加密託管資料庫執行個體伺服器上的資料。如需詳細資訊，請參閱 [加密 Amazon RDS 資源](Overview.Encryption.md)。
+ 使用網路加密和透明資料加密與 Oracle 資料庫執行個體搭配；如需詳細資訊，請參閱 [Oracle 原生網路加密](Appendix.Oracle.Options.NetworkEncryption.md) 和 [Oracle 透明資料加密](Appendix.Oracle.Options.AdvSecurity.md) 
+ 使用資料庫引擎的安全功能，來控制誰可以登入資料庫執行個體上的資料庫。這項功能的運作方式就好像資料庫位在您的本機網路上。

**注意**  
您只須針對您的使用案例設定安全。您不需要為 Amazon RDS 管理的程序設定安全存取。這些包括建立備份、在主要資料庫執行個體和僅供讀取複本間複寫資料，以及其他程序。

如需管理對 Amazon RDS 資源及在您資料庫執行個體上資料庫存取權限的詳細資訊，請參閱下列主題。

**Topics**
+ [

# 使用 Amazon RDS 進行資料庫身分驗證
](database-authentication.md)
+ [

# 使用 Amazon RDS 和 進行密碼管理 AWS Secrets Manager
](rds-secrets-manager.md)
+ [

# Amazon RDS 中的資料保護
](DataDurability.md)
+ [

# Amazon RDS 的 Identity and access management
](UsingWithRDS.IAM.md)
+ [

# 在 Amazon RDS 中記錄和監控
](Overview.LoggingAndMonitoring.md)
+ [

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

# Amazon RDS 的復原功能
](disaster-recovery-resiliency.md)
+ [

# Amazon RDS 中的基礎設施安全
](infrastructure-security.md)
+ [

# Amazon RDS API 和界面 VPC 端點 (AWS PrivateLink)
](vpc-interface-endpoints.md)
+ [

# Amazon RDS 的安全最佳實務
](CHAP_BestPractices.Security.md)
+ [

# 使用安全群組控制存取
](Overview.RDSSecurityGroups.md)
+ [

# 主要使用者帳戶權限
](UsingWithRDS.MasterAccounts.md)
+ [

# 使用 Amazon RDS 的服務連結角色
](UsingWithRDS.IAM.ServiceLinkedRoles.md)
+ [

# Amazon VPC 和 Amazon RDS
](USER_VPC.md)

# 使用 Amazon RDS 進行資料庫身分驗證
<a name="database-authentication"></a>

 Amazon RDS 支援驗證資料庫使用者的數種方式。

密碼、Kerberos 和 IAM 資料庫身分驗證會對資料庫使用不同的身分驗證方法。因此，特定使用者只能使用一種身分驗證方法登入資料庫。

對於 PostgreSQL，請僅針對特定資料庫的使用者使用下列其中一個角色設定：
+ 若要使用 IAM 資料庫身分驗證，請將 `rds_iam` 角色指派給使用者。
+ 若要使用 Kerberos 身分驗證，請將 `rds_ad` 角色指派給使用者。
+ 若要使用密碼身分驗證，請勿指派 `rds_iam` 或 `rds_ad` 角色給使用者。

不要同時將 `rds_iam` 和 `rds_ad` 角色指派給 PostgreSQL 資料庫的使用者，無論是直接或間接透過巢狀授權存取。如果 `rds_iam` 角色新增至主要使用者，則 IAM 身分驗證優先於密碼身分驗證，因此主要使用者必須以 IAM 使用者身分登入。

**重要**  
我們強烈建議您不要直接在您的應用程式中使用主要使用者。而是遵循最佳實務，使用以應用程式所需的最低權限建立的資料庫使用者。

**Topics**
+ [

## 密碼身分驗證
](#password-authentication)
+ [

## IAM 資料庫身分驗證
](#iam-database-authentication)
+ [

## Kerberos 身分驗證
](#kerberos-authentication)

## 密碼身分驗證
<a name="password-authentication"></a>

使用*密碼身分驗證*，您的資料庫會執行使用者帳戶的所有管理。您可以使用 SQL 陳述式 (例如 `CREATE USER`) 搭配資料庫引擎指定密碼所需的適當子句，來建立使用者。例如，在 MySQL 中，陳述式為 `CREATE USER` *name* `IDENTIFIED BY` *password*，而在 PostgreSQL 中，陳述式為 `CREATE USER` *name* `WITH PASSWORD` *password*。

透過密碼身分驗證，您的資料庫可控制並驗證使用者帳戶。如果資料庫引擎具有強大的密碼管理功能，它們可以增強安全性。當您擁有較小的使用者社群時，使用密碼身分驗證來管理資料庫身分驗證可能會更容易。由於在此情況下會產生純文字密碼，因此與 整合 AWS Secrets Manager 可以增強安全性。

如需有關將 Secrets Manager 與 Amazon RDS 搭配使用的詳細資訊，請參閱 《AWS Secrets Manager 使用者指南》**中的[建立基本秘密](https://docs.aws.amazon.com/secretsmanager/latest/userguide/manage_create-basic-secret.html)和[輪換支援 Amazon RDS 資料庫的秘密](https://docs.aws.amazon.com/secretsmanager/latest/userguide/rotating-secrets-rds.html)。如需以程式設計方式擷取自訂應用程式中的密碼的相關資訊，請參閱 *AWS Secrets Manager 使用者指南*中的[擷取密碼值](https://docs.aws.amazon.com/secretsmanager/latest/userguide/manage_retrieve-secret.html)。

## IAM 資料庫身分驗證
<a name="iam-database-authentication"></a>

您可以使用 AWS Identity and Access Management (IAM) 資料庫身分驗證來驗證資料庫執行個體。透過此身分驗證方法，您在連接至資料庫執行個體時就不需要使用密碼。而是改用身分驗證字符。

如需有關 IAM 資料庫身分驗證的詳細資訊，包括特定資料庫引擎可用性的相關資訊，請參閱[適用於 MariaDB、MySQL 和 PostgreSQL 的 IAM 資料庫身分驗證](UsingWithRDS.IAMDBAuth.md)。

## Kerberos 身分驗證
<a name="kerberos-authentication"></a>

 Amazon RDS 支援透過 Kerberos 和 Microsoft Active Directory 對資料庫使用者進行外部身分驗證。Kerberos 是網路身分驗證通訊協定，使用票證和對稱式金鑰加密技術，免除透過網路傳輸密碼的需要。Kerberos 已內建至 Active Directory，旨在驗證網路資源 (例如資料庫) 的使用者身分。

 Amazon RDS 對 Kerberos 和 Active Directory 的支援，提供了資料庫使用者的單一登入和集中式身分驗證優點。您可以在 Active Directory 中保留您的使用者登入資料。Active Directory 提供集中位置，可存放及管理多個資料庫執行個體的憑證。

若要使用自我管理 Active Directory 中的登入資料，您需要設定與加入資料庫執行個體之 Directory Service Microsoft Active Directory 的信任關係。

 RDS for PostgreSQL 和 RDS for MySQL 支援使用整個樹系身分驗證或選擇性身分驗證的單向和雙向樹系信任關係。

在某些情況下，您可以透過外部信任關係設定 Kerberos 身分驗證。這需要自我管理的 Active Directory 具有其他設定。這包括但不限於 [Kerberos 樹系搜尋順序](https://learn.microsoft.com/en-us/troubleshoot/windows-server/active-directory/kfso-not-work-in-external-trust-event-is-17)。

Microsoft SQL Server 和 PostgreSQL 資料庫執行個體支援單向和雙向的樹系信任關係。Oracle 資料庫執行個體支援單向和雙向的外部和樹系信任關係。如需詳細資訊，請參閱《Directory Service 管理指南》**中的[建立信任關係的時機](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/setup_trust.html)。

如需使用特定資料庫引擎進行 Kerberos 身分驗證的相關資訊，請參閱下列內容：
+  [使用具有 RDS for SQL Server 的 AWS 受管 Active Directory](USER_SQLServerWinAuth.md) 
+  [對 Amazon RDS for MySQL 使用 Kerberos 身分驗證](mysql-kerberos.md) 
+  [為 Amazon RDS for Oracle 設定 Kerberos 身分驗證](oracle-kerberos.md) 
+  [搭配 Amazon RDS for PostgreSQL 使用 Kerberos 身分驗證](postgresql-kerberos.md) 
+  [使用 Amazon RDS for Db2 的 Kerberos 身分驗證](db2-kerberos.md) .

**注意**  
目前，MariaDB 資料庫執行個體不支援 Kerberos 身分驗證。

# 使用 Amazon RDS 和 進行密碼管理 AWS Secrets Manager
<a name="rds-secrets-manager"></a>

Amazon RDS 與 Secrets Manager 整合，以管理資料庫執行個體和多可用區域資料庫叢集的主要使用者密碼。

**Topics**
+ [

## Secrets Manager 與 Amazon RDS 整合的限制
](#rds-secrets-manager-limitations)
+ [

## 使用 管理主要使用者密碼的概觀 AWS Secrets Manager
](#rds-secrets-manager-overview)
+ [

## 使用 Secrets Manager 管理主要使用者密碼的優點
](#rds-secrets-manager-benefits)
+ [

## Secrets Manager 整合所需的許可
](#rds-secrets-manager-permissions)
+ [

## 在 中強制執行主要使用者密碼的 RDS Aurora管理 AWS Secrets Manager
](#rds-secrets-manager-auth)
+ [

## 使用 Secrets Manager 管理資料庫執行個體的主要使用者密碼
](#rds-secrets-manager-db-instance)
+ [

## 使用 Secrets Manager 管理 RDS for Oracle 租用戶資料庫的主要使用者密碼
](#rds-secrets-manager-tenant)
+ [

## 使用 Secrets Manager 管理多可用區域資料庫叢集的主要使用者密碼
](#rds-secrets-manager-db-cluster)
+ [

## 輪換資料庫執行個體的主要使用者密碼機密
](#rds-secrets-manager-rotate-db-instance)
+ [

## 輪換多可用區域資料庫叢集的主要使用者密碼秘密
](#rds-secrets-manager-rotate-db-cluster)
+ [

## 檢視資料庫執行個體機密的詳細資訊
](#rds-secrets-manager-view-db-instance)
+ [

## 檢視多可用區域資料庫叢集秘密的詳細資訊
](#rds-secrets-manager-view-db-cluster)
+ [

## 檢視租用戶資料庫秘密的詳細資訊
](#rds-secrets-manager-view-tenant)
+ [

## 區域和版本可用性
](#rds-secrets-manager-availability)

## Secrets Manager 與 Amazon RDS 整合的限制
<a name="rds-secrets-manager-limitations"></a>

下列功能不支援使用 Secrets Manager 管理主要使用者密碼：
+ 當來源資料庫或資料庫叢集使用 Secrets Manager 管理憑證時，建立僅供讀取複本。這適用於所有資料庫引擎，RDS for SQL Server 除外。
+ Amazon RDS 藍/綠部署
+ Amazon RDS Custom
+ Oracle Data Guard 切換

## 使用 管理主要使用者密碼的概觀 AWS Secrets Manager
<a name="rds-secrets-manager-overview"></a>

使用 AWS Secrets Manager時，您可以使用 API 呼叫 Secrets Manager 以程式設計方式擷取秘密，取代程式碼中的硬式編碼登入資料，包括資料庫密碼。如需 Secrets Manager 的詳細資訊，請參閱 [AWS Secrets Manager 使用者指南](https://docs.aws.amazon.com/secretsmanager/latest/userguide/)。

當您將資料庫秘密存放在 Secrets Manager 時， AWS 帳戶 會產生費用。如需關於定價的資訊，請參閱[AWS Secrets Manager 定價](https://aws.amazon.com/secrets-manager/pricing)。

當您執行下列其中一項操作時，您可以指定 RDS，在 Secrets Manager 中管理 Amazon RDS 資料庫執行個體或多可用區域資料庫叢集的主要使用者密碼：
+ 建立資料庫執行個體
+ 建立多可用區域資料庫叢集
+ 在 RDS for Oracle CDB 中建立租用戶資料庫
+ 修改資料庫執行個體
+ 修改多可用區域資料庫叢集
+ 修改租用戶資料庫 (僅限 RDS for Oracle)
+ 從 Amazon S3 還原資料庫執行個體
+ 從快照還原資料庫執行個體或還原至或時間點 (僅限 RDS for Oracle)

當您指定 RDS 在 Secrets Manager 中管理主要使用者密碼時，RDS 會產生密碼並將其存放在 Secrets Manager 中。您可以直接與機密互動，以擷取主要使用者的憑證。您也可以指定客戶受管金鑰來加密機密，或使用 Secrets Manager 提供的 KMS 金鑰。

RDS 會管理機密的設定，並依預設每七天輪換一次密碼。您可以修改某些設定，例如輪換排程。如果您刪除在 Secrets Manager 中管理密碼的資料庫執行個體，秘密及其相關聯的中繼資料也會一併刪除。

若要使用機密中的憑證連線至資料庫執行個體或多可用區域資料庫叢集，您可以從 Secrets Manager 擷取機密。如需詳細資訊，請參閱*AWS Secrets Manager 《 使用者指南*》中的[從 擷取秘密 AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/retrieving-secrets.html)[，並使用 AWS Secrets Manager 秘密中的登入資料連線至 SQL 資料庫](https://docs.aws.amazon.com/secretsmanager/latest/userguide/retrieving-secrets_jdbc.html)。

## 使用 Secrets Manager 管理主要使用者密碼的優點
<a name="rds-secrets-manager-benefits"></a>

使用 Secrets Manager 管理 RDS 主要使用者密碼可提供下列優點：
+ RDS 會自動產生資料庫憑證。
+ RDS Aurora會自動在其中存放和管理資料庫登入資料 AWS Secrets Manager。
+ RDS 會定期輪換資料庫憑證，而無需變更應用程式。
+ Secrets Manager 會保護資料庫憑證免於人類存取和純文字檢視。
+ Secrets Manager 允許擷取機密中用於資料庫連線的資料庫憑證。
+ Secrets Manager 允許使用 IAM 對機密中資料庫憑證的存取進行細微控制。
+ 您可以選擇性地使用不同 KMS 金鑰將資料庫加密與憑證加密分開。
+ 您可以消除資料庫憑證的手動管理和輪換。
+ 您可以使用 AWS CloudTrail 和 Amazon CloudWatch 輕鬆監控資料庫登入資料。

如需 Secrets Manager 優點的詳細資訊，請參閱《AWS Secrets Manager 使用者指南》[https://docs.aws.amazon.com/secretsmanager/latest/userguide/](https://docs.aws.amazon.com/secretsmanager/latest/userguide/)。

## Secrets Manager 整合所需的許可
<a name="rds-secrets-manager-permissions"></a>

使用者必須具有必要的權限，才能執行與 Secrets Manager 整合相關的操作。您可以建立 IAM 政策，授與對其需要的指定資源執行特定 API 操作的許可。然後，您可以將這些政策連接至需要這些許可的 IAM 許可集或角色。如需詳細資訊，請參閱[Amazon RDS 的 Identity and access management](UsingWithRDS.IAM.md)。

對於建立、修改或還原操作，指定 Amazon RDS 在 Secrets Manager 中管理主要使用者密碼的使用者必須具有執行下列操作的許可：
+ `kms:DescribeKey`
+ `secretsmanager:CreateSecret`
+ `secretsmanager:TagResource`

需要 `kms:DescribeKey` 許可才能存取 `MasterUserSecretKmsKeyId` 的客戶受管金鑰，並描述 `aws/secretsmanager`。

對於建立、修改或還原操作，指定客戶受管金鑰以加密 Secrets Manager 中機密的使用者必須具有執行下列操作的許可：
+ `kms:Decrypt`
+ `kms:GenerateDataKey`
+ `kms:CreateGrant`

對於修改操作，在 Secrets Manager 中輪換主要使用者密碼的使用者必須具有執行下列操作的許可：
+ `secretsmanager:RotateSecret`

## 在 中強制執行主要使用者密碼的 RDS Aurora管理 AWS Secrets Manager
<a name="rds-secrets-manager-auth"></a>

您可以使用 IAM 條件金鑰，在 AWS Secrets Manager中強制執行主要使用者密碼的 RDS 管理。除非主要使用者密碼是在 Secrets Manager 中由 RDS 管理，否則下列政策不允許使用者建立或還原資料庫執行個體或資料庫叢集，或者建立或修改租用戶資料庫。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Deny",
            "Action": ["rds:CreateDBInstance", "rds:CreateDBCluster", "rds:RestoreDBInstanceFromS3", "rds:RestoreDBClusterFromS3",
                       "rds:RestoreDBInstanceFromDBSnapshot", "rds:RestoreDBInstanceToPointInTime", "rds:CreateTenantDatabase",
                       "rds:ModifyTenantDatabase"],
            "Resource": "*",
            "Condition": {
                "Bool": {
                    "rds:ManageMasterUserPassword": false
                }
            }
        }
    ]
}
```

------

**注意**  
此政策會在建立 AWS Secrets Manager 時強制執行 中的密碼管理。不過，您仍然可以停用 Secrets Manager 整合，並透過修改執行個體手動設定主要密碼。  
為了防止這種情況，請在政策的動作區塊中包含 `rds:ModifyDBInstance`、`rds:ModifyDBCluster`。請注意，這可防止使用者對未啟用 Secrets Manager 整合的現有執行個體套用任何進一步的修改。

如需在 IAM 政策中使用條件金鑰的詳細資訊，請參閱 [Amazon RDS 的政策條件金鑰](security_iam_service-with-iam.md#UsingWithRDS.IAM.Conditions) 和 [範例政策：使用條件金鑰](UsingWithRDS.IAM.Conditions.Examples.md)。

## 使用 Secrets Manager 管理資料庫執行個體的主要使用者密碼
<a name="rds-secrets-manager-db-instance"></a>

執行下列動作時，您可以在 Secrets Manager 中設定主要使用者密碼的 RDS 管理：
+ [建立 Amazon RDS 資料庫執行個體](USER_CreateDBInstance.md)
+ [修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)
+ [將備份還原至 Amazon RDS for MySQL 資料庫執行個體](MySQL.Procedural.Importing.md)
+ [還原至資料庫執行個體](USER_RestoreFromSnapshot.md) (僅限 RDS for Oracle)
+ [將 Amazon RDS 的資料庫執行個體還原至指定時間](USER_PIT.md) (僅限 RDS for Oracle)

您可以使用 RDS 主控台、 AWS CLI或 RDS API 執行上述操作。

### 主控台
<a name="rds-secrets-manager-db-instance-console"></a>

請遵循使用 RDS 主控台建立或修改資料庫執行個體的指示：
+ [建立資料庫執行個體](USER_CreateDBInstance.md#USER_CreateDBInstance.Creating)
+ [修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)
+ [將資料從 Amazon S3 匯入新的 MySQL 資料庫執行個體](MySQL.Procedural.Importing.md#MySQL.Procedural.Importing.PerformingImport)

當使用 RDS 主控台來執行其中一項操作時，您可以指定主要使用者密碼是由 Secrets Manager 中的 RDS 管理。在建立或還原資料庫執行個體時，請在**憑證設定**中選取**在 AWS Secrets Manager中管理主要憑證**。修改資料庫執行個體時，請在 **設定**中選取**在 AWS Secrets Manager中管理主要憑證**。

以下影像是建立或還原資料庫執行個體時，**Manage master credentials in AWS Secrets Manager** (在 AWS Secrets Manager中管理主要憑證) 設定的範例。

![\[在 中管理主登入資料 AWS Secrets Manager\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/secrets-manager-credential-settings-db-instance.png)


當您選取此選項時，RDS 會產生主要使用者密碼，並在 Secrets Manager 中於整個生命週期管理該密碼。

![\[在 AWS Secrets Manager 選取的 中管理主登入資料\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/secrets-manager-integration-create-db-instance.png)


您可以選擇使用 Secrets Manager 提供的 KMS 金鑰，或您建立的客戶受管金鑰來加密機密。在 RDS 管理資料庫執行個體的資料庫憑證之後，您就無法變更用來加密機密的 KMS 金鑰。

您可以選擇其他設定來符合您的需求。如需您建立資料庫執行個體時可用設定的詳細資訊，請參閱 [資料庫執行個體的設定](USER_CreateDBInstance.Settings.md)。如需您修改資料庫執行個體時可用設定的詳細資訊，請參閱 [資料庫執行個體的設定](USER_ModifyInstance.Settings.md)。

### AWS CLI
<a name="rds-secrets-manager-db-instance-cli"></a>

若要在 Secrets Manager 中使用 RDS 管理主要使用者密碼，請在下列其中一個 AWS CLI 命令中指定 `--manage-master-user-password`選項：
+ [create-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html)
+ [modify-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html)
+ [restore-db-instance-from-s3](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-s3.html)
+ [restore-db-instance-from-db-snapshot](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-db-snapshot.html) (僅限 RDS for Oracle)
+ [restore-db-instance-to-point-in-time](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-to-point-in-time.html) (僅限 RDS for Oracle)

當您在這些命令中指定 `--manage-master-user-password` 選項時，RDS 會產生主要使用者密碼，並在 Secrets Manager 中於整個生命週期管理該密碼。

若要加密機密，您可以指定客戶受管金鑰或使用 Secrets Manager 提供的預設 KMS 金鑰。使用 `--master-user-secret-kms-key-id` 選項來指定客戶受管金鑰。 AWS KMS 金鑰識別符是 KMS 金鑰的金鑰 ARN、金鑰 ID、別名 ARN 或別名名稱。若要在不同的 中使用 KMS 金鑰 AWS 帳戶，請指定金鑰 ARN 或別名 ARN。在 RDS 管理資料庫執行個體的資料庫憑證之後，您就無法變更用來加密機密的 KMS 金鑰。

您可以選擇其他設定來符合您的需求。如需您建立資料庫執行個體時可用設定的詳細資訊，請參閱 [資料庫執行個體的設定](USER_CreateDBInstance.Settings.md)。如需您修改資料庫執行個體時可用設定的詳細資訊，請參閱 [資料庫執行個體的設定](USER_ModifyInstance.Settings.md)。

下列範例會建立資料庫執行個體，並指定 RDS 在 Secrets Manager 中管理主要使用者密碼。機密會使用 Secrets Manager 所提供的 KMS 金鑰進行加密。

**Example**  
針對 Linux、macOS 或 Unix：  

```
1. aws rds create-db-instance \
2.     --db-instance-identifier mydbinstance \
3.     --engine mysql \
4.     --engine-version 8.0.39 \
5.     --db-instance-class db.r5b.large \
6.     --allocated-storage 200 \
7.     --master-username testUser \
8.     --manage-master-user-password
```
在 Windows 中：  

```
1. aws rds create-db-instance ^
2.     --db-instance-identifier mydbinstance ^
3.     --engine mysql ^
4.     --engine-version 8.0.39 ^
5.     --db-instance-class db.r5b.large ^
6.     --allocated-storage 200 ^
7.     --master-username testUser ^
8.     --manage-master-user-password
```

### RDS API
<a name="rds-secrets-manager-db-instance-api"></a>

若要指定 RDS 在 Secrets Manager 中管理主要使用者密碼，請在下列其中一個 RDS API 操作中將 `ManageMasterUserPassword` 參數設為 `true`：
+ [CreateDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html)
+ [ModifyDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html)
+ [RestoreDBInstanceFromS3](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceFromS3.html)
+ [RestoreDBInstanceFromSnapshot](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceFromSnapshot.html) (僅限 RDS for Oracle)
+ [RestoreDBInstanceToPointInTime](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceToPointInTime.html) (僅限 RDS for Oracle)

當您在其中一個操作中將 `ManageMasterUserPassword` 參數設為 `true` 時，RDS 會產生主要使用者密碼，並在 Secrets Manager 中於整個生命週期管理該密碼。

若要加密機密，您可以指定客戶受管金鑰或使用 Secrets Manager 提供的預設 KMS 金鑰。使用 `MasterUserSecretKmsKeyId` 參數指定客戶受管金鑰。 AWS KMS 金鑰識別符是 KMS 金鑰的金鑰 ARN、金鑰 ID、別名 ARN 或別名名稱。若要在不同的 AWS 帳戶中使用 KMS 金鑰，請指定金鑰 ARN 或別名 ARN。在 RDS 管理資料庫執行個體的資料庫憑證之後，您就無法變更用來加密機密的 KMS 金鑰。

## 使用 Secrets Manager 管理 RDS for Oracle 租用戶資料庫的主要使用者密碼
<a name="rds-secrets-manager-tenant"></a>

執行下列動作時，您可以在 Secrets Manager 中設定主要使用者密碼的 RDS 管理：
+ [將 RDS for Oracle 租戶資料庫新增至 CDB 執行個體](oracle-cdb-configuring.adding.pdb.md)
+ [修改 RDS for Oracle 租戶資料庫](oracle-cdb-configuring.modifying.pdb.md)

您可以使用 RDS 主控台 AWS CLI、 或 RDS API 來執行上述動作。

### 主控台
<a name="rds-secrets-manager-tenant-console"></a>

請遵循使用 RDS 主控台建立或修改 RDS for Oracle 租用戶資料庫的指示：
+ [將 RDS for Oracle 租戶資料庫新增至 CDB 執行個體](oracle-cdb-configuring.adding.pdb.md)
+ [修改 RDS for Oracle 租戶資料庫](oracle-cdb-configuring.modifying.pdb.md)

當您使用 RDS 主控台來執行上述其中一項操作時，可以指定 RDS 在 Secrets Manager 中管理主要密碼。當您建立租用戶資料庫時，請在**憑證設定**中選取**在 AWS Secrets Manager中管理主要憑證**。修改租用戶資料庫時，請在 **設定**中選取**在 AWS Secrets Manager中管理主要憑證**。

以下影像是建立租用戶資料庫時，**在 AWS Secrets Manager中管理主要憑證**設定的範例。

![\[在 中管理主登入資料 AWS Secrets Manager\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/secrets-manager-credential-settings-db-instance.png)


當您選取此選項時，RDS 會產生主要使用者密碼，並在 Secrets Manager 中於整個生命週期管理該密碼。

![\[在 AWS Secrets Manager 選取的 中管理主登入資料\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/secrets-manager-integration-create-db-instance.png)


您可以選擇使用 Secrets Manager 提供的 KMS 金鑰，或您建立的客戶受管金鑰來加密機密。在 RDS 管理租用戶資料庫的資料庫憑證之後，您就無法變更用來加密機密的 KMS 金鑰。

您可以選擇其他設定來符合您的需求。如需當您建立租用戶資料庫時可用設定的詳細資訊，請參閱 [資料庫執行個體的設定](USER_CreateDBInstance.Settings.md)。如需當您修改租用戶資料庫時可用設定的詳細資訊，請參閱 [資料庫執行個體的設定](USER_ModifyInstance.Settings.md)。

### AWS CLI
<a name="rds-secrets-manager-db-instance-cli"></a>

若要在 Secrets Manager 中使用 RDS 管理主要使用者密碼，請在下列其中一個 AWS CLI 命令中指定 `--manage-master-user-password` 選項：
+ [create-tenant-database](https://docs.aws.amazon.com/cli/latest/reference/rds/create-tenant-database.html)
+ [modify-tenant-database](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-tenant-database.html)

當您在上述命令中指定 `--manage-master-user-password` 選項時，RDS 會產生主要使用者密碼，並在 Secrets Manager 中於整個生命週期管理該密碼。

若要加密機密，您可以指定客戶受管金鑰或使用 Secrets Manager 提供的預設 KMS 金鑰。使用 `--master-user-secret-kms-key-id` 選項來指定客戶受管金鑰。 AWS KMS 金鑰識別符是 KMS 金鑰的金鑰 ARN、金鑰 ID、別名 ARN 或別名名稱。若要在不同的 中使用 KMS 金鑰 AWS 帳戶，請指定金鑰 ARN 或別名 ARN。在 RDS 管理租用戶資料庫的資料庫憑證之後，您就無法變更用來加密機密的 KMS 金鑰。

您可以選擇其他設定來符合您的需求。如需當您建立租用戶資料庫時可用設定的詳細資訊，請參閱 [create-tenant-database](https://docs.aws.amazon.com/cli/latest/reference/rds/create-tenant-database.html)。如需當您修改租用戶資料庫時可用設定的詳細資訊，請參閱 [modify-tenant-database](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-tenant-database.html)。

下列範例會建立 RDS for Oracle 租用戶資料庫，並指定 RDS 在 Secrets Manager 中管理主要使用者密碼。機密會使用 Secrets Manager 所提供的 KMS 金鑰進行加密。

**Example**  
針對 Linux、macOS 或 Unix：  

```
1. aws rds create-tenant-database --region us-east-1 \
2.     --db-instance-identifier my-cdb-inst \
3.     --tenant-db-name mypdb2 \
4.     --master-username mypdb2-admin \
5.     --character-set-name UTF-16 \
6.     --manage-master-user-password
```
在 Windows 中：  

```
1. aws rds create-tenant-database --region us-east-1 ^
2.     --db-instance-identifier my-cdb-inst ^
3.     --tenant-db-name mypdb2 ^
4.     --master-username mypdb2-admin ^
5.     --character-set-name UTF-16 ^
6.     --manage-master-user-password
```

### RDS API
<a name="rds-secrets-manager-db-instance-api"></a>

若要指定 RDS 在 Secrets Manager 中管理主要使用者密碼，請在下列其中一個 RDS API 操作中將 `ManageMasterUserPassword` 參數設為 `true`：
+ [CreateTenantDatabase](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateTenantDatabase.html)
+ [ModifyTenantDatabase](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyTenantDatabase.html)

當您在其中一個操作中將 `ManageMasterUserPassword` 參數設為 `true` 時，RDS 會產生主要使用者密碼，並在 Secrets Manager 中於整個生命週期管理該密碼。

若要加密機密，您可以指定客戶受管金鑰或使用 Secrets Manager 提供的預設 KMS 金鑰。使用 `MasterUserSecretKmsKeyId` 參數指定客戶受管金鑰。 AWS KMS 金鑰識別碼是 KMS 金鑰的金鑰 ARN、金鑰 ID、別名 ARN 或別名名稱。若要在不同的 中使用 KMS 金鑰 AWS 帳戶，請指定金鑰 ARN 或別名 ARN。在 RDS 管理租用戶資料庫的資料庫憑證之後，您就無法變更用來加密機密的 KMS 金鑰。

## 使用 Secrets Manager 管理多可用區域資料庫叢集的主要使用者密碼
<a name="rds-secrets-manager-db-cluster"></a>

執行下列動作時，您可以在 Secrets Manager 中設定主要使用者密碼的 RDS 管理：
+ [為 Amazon RDS 建立多可用區域資料庫叢集](create-multi-az-db-cluster.md)
+ [使用 Amazon RDS 修改多可用區域資料庫叢集](modify-multi-az-db-cluster.md)

您可以使用 RDS 主控台 AWS CLI、 或 RDS API 來執行這些動作。

### 主控台
<a name="rds-secrets-manager-db-cluster-console"></a>

請遵循使用 RDS 主控台建立或修改多可用區域資料庫叢集的指示：
+ [建立資料庫叢集](create-multi-az-db-cluster.md#create-multi-az-db-cluster-creating)
+ [使用 Amazon RDS 修改多可用區域資料庫叢集](modify-multi-az-db-cluster.md)

當使用 RDS 主控台來執行其中一項操作時，您可以指定主要使用者密碼是由 Secrets Manager 中的 RDS 管理。若要在建立資料庫叢集時這樣做，請在 **Credential settings** (憑證設定) 中選取 **Manage master credentials in AWS Secrets Manager** (在 AWS Secrets Manager中管理主要憑證)。修改資料庫叢集時，請在 **Settings** (設定) 中選取 **Manage master credentials in AWS Secrets Manager** (在 AWS Secrets Manager中管理主要憑證)。

以下影像是建立資料庫叢集時，**Manage master credentials in AWS Secrets Manager** (在 AWS Secrets Manager中管理主要憑證) 設定的範例。

![\[在 中管理主登入資料 AWS Secrets Manager\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/secrets-manager-credential-settings.png)


當您選取此選項時，RDS 會產生主要使用者密碼，並在 Secrets Manager 中於整個生命週期管理該密碼。

![\[在 AWS Secrets Manager 選取的 中管理主登入資料\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/secrets-manager-integration-create.png)


您可以選擇使用 Secrets Manager 提供的 KMS 金鑰，或您建立的客戶受管金鑰來加密機密。在 RDS 管理資料庫叢集的資料庫憑證之後，您就無法變更用來加密機密的 KMS 金鑰。

您可以選擇其他設定來符合您的需求。

如需當您建立多可用區域資料庫叢集時可用設定的詳細資訊，請參閱 [建立多可用區域資料庫叢集的設定](create-multi-az-db-cluster.md#create-multi-az-db-cluster-settings)。如需當您修改多可用區域資料庫叢集時可用設定的詳細資訊，請參閱 [修改多可用區域資料庫叢集的設定](modify-multi-az-db-cluster.md#modify-multi-az-db-cluster-settings)。

### AWS CLI
<a name="rds-secrets-manager-db-cluster-cli"></a>

若要指定 RDS 在 Secrets Manager 中管理主要使用者密碼，請在下列其中一個命令中指定 `--manage-master-user-password` 選項：
+ [create-db-cluster](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-cluster.html)
+ [modify-db-cluster](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-cluster.html)

當您在這些命令中指定 `--manage-master-user-password` 選項時，RDS 會產生主要使用者密碼，並在 Secrets Manager 中於整個生命週期管理該密碼。

若要加密機密，您可以指定客戶受管金鑰或使用 Secrets Manager 提供的預設 KMS 金鑰。使用 `--master-user-secret-kms-key-id` 選項來指定客戶受管金鑰。 AWS KMS 金鑰識別符是 KMS 金鑰的金鑰 ARN、金鑰 ID、別名 ARN 或別名名稱。若要在不同的 中使用 KMS 金鑰 AWS 帳戶，請指定金鑰 ARN 或別名 ARN。在 RDS 管理資料庫叢集的資料庫認證之後，您無法變更用來加密機密的 KMS 金鑰。

您可以選擇其他設定來符合您的需求。

如需當您建立多可用區域資料庫叢集時可用設定的詳細資訊，請參閱 [建立多可用區域資料庫叢集的設定](create-multi-az-db-cluster.md#create-multi-az-db-cluster-settings)。如需當您修改多可用區域資料庫叢集時可用設定的詳細資訊，請參閱 [修改多可用區域資料庫叢集的設定](modify-multi-az-db-cluster.md#modify-multi-az-db-cluster-settings)。

此範例會建立多可用區域資料庫叢集，並指定 RDS 在 Secrets Manager 中管理密碼。機密會使用 Secrets Manager 所提供的 KMS 金鑰進行加密。

**Example**  
針對 Linux、macOS 或 Unix：  

```
 1. aws rds create-db-cluster \
 2.    --db-cluster-identifier mysql-multi-az-db-cluster \
 3.    --engine mysql \
 4.    --engine-version 8.0.39  \
 5.    --backup-retention-period 1  \
 6.    --allocated-storage 4000 \
 7.    --storage-type io1 \
 8.    --iops 10000 \
 9.    --db-cluster-instance-class db.r6gd.xlarge \
10.    --master-username testUser \
11.    --manage-master-user-password
```
在 Windows 中：  

```
 1. aws rds create-db-cluster ^
 2.    --db-cluster-identifier mysql-multi-az-db-cluster ^
 3.    --engine mysql ^
 4.    --engine-version 8.0.39 ^
 5.    --backup-retention-period 1 ^
 6.    --allocated-storage 4000 ^
 7.    --storage-type io1 ^
 8.    --iops 10000 ^
 9.    --db-cluster-instance-class db.r6gd.xlarge ^
10.    --master-username testUser ^
11.    --manage-master-user-password
```

### RDS API
<a name="rds-secrets-manager-db-cluster-api"></a>

若要指定 RDS 在 Secrets Manager 中管理主要使用者密碼，請在下列其中一個操作中將 `ManageMasterUserPassword` 參數設為 `true`：
+ [CreateDBCluster](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBCluster.html)
+ [ModifyDBCluster](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBCluster.html)

當您在其中一個操作中將 `ManageMasterUserPassword` 參數設為 `true` 時，RDS 會產生主要使用者密碼，並在 Secrets Manager 中於整個生命週期管理該密碼。

若要加密機密，您可以指定客戶受管金鑰或使用 Secrets Manager 提供的預設 KMS 金鑰。使用 `MasterUserSecretKmsKeyId` 參數指定客戶受管金鑰。 AWS KMS 金鑰識別符是 KMS 金鑰的金鑰 ARN、金鑰 ID、別名 ARN 或別名名稱。若要在不同的 AWS 帳戶中使用 KMS 金鑰，請指定金鑰 ARN 或別名 ARN。在 RDS 管理資料庫叢集的資料庫認證之後，您無法變更用來加密機密的 KMS 金鑰。

## 輪換資料庫執行個體的主要使用者密碼機密
<a name="rds-secrets-manager-rotate-db-instance"></a>

當 RDS 輪換主要使用者密碼機密時，Secrets Manager 會針對現有機密產生新的機密版本。新版本的機密包含新的主要使用者密碼。Amazon RDS 會變更資料庫執行個體的主要使用者密碼，以符合新機密版本的密碼。

您可以立即輪換機密，而無需等待排程的輪換。若要在 Secrets Manager 中輪換主要使用者密碼機密，請修改資料庫執行個體。如需修改資料庫執行個體的相關資訊，請參閱 [修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。

您可以使用 RDS 主控台 AWS CLI、 或 RDS API 立即輪換主要使用者密碼秘密。新密碼長度一律為 28 個字元，且至少包含一個大寫和小寫字元、一個數字和一個標點符號。

### 主控台
<a name="rds-secrets-manager-rotate-db-instance-console"></a>

若要使用 RDS 主控台輪換主要使用者密碼機密，請修改資料庫執行個體，然後在 **Settings** (設定) 中選取 **Rotate secret immediately** (立即輪換秘密)。

![\[立即輪換主使用者密碼機密\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/secrets-manager-integration-rotate.png)


請遵循使用 [修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md) 中的 RDS 主控台修改資料庫執行個體的指示。您必須在確認頁面上選擇 **Apply immediately** (立即套用)。

### AWS CLI
<a name="rds-secrets-manager-rotate-db-instance-cli"></a>

若要使用 輪換主要使用者密碼秘密 AWS CLI，請使用 [modify-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) 命令並指定 `--rotate-master-user-password`選項。您必須在輪換主要密碼時指定 `--apply-immediately` 選項。

此範例會輪換主要使用者密碼機密。

**Example**  
針對 Linux、macOS 或 Unix：  

```
1. aws rds modify-db-instance \
2.     --db-instance-identifier mydbinstance \
3.     --rotate-master-user-password \
4.     --apply-immediately
```
在 Windows 中：  

```
1. aws rds modify-db-instance ^
2.     --db-instance-identifier mydbinstance ^
3.     --rotate-master-user-password ^
4.     --apply-immediately
```

### RDS API
<a name="rds-secrets-manager-rotate-db-instance-api"></a>

您可以使用 [ModifyDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html) 操作，並將 `RotateMasterUserPassword` 參數設為 `true`，來輪換主要使用者密碼機密。輪換主要密碼時，必須將 `ApplyImmediately` 參數設為 `true`。

## 輪換多可用區域資料庫叢集的主要使用者密碼秘密
<a name="rds-secrets-manager-rotate-db-cluster"></a>

當 RDS 輪換主要使用者密碼機密時，Secrets Manager 會針對現有機密產生新的機密版本。新版本的機密包含新的主要使用者密碼。Amazon RDS 會變更多可用區域資料庫叢集的主要使用者密碼，以符合新秘密版本的密碼。

您可以立即輪換機密，而無需等待排程的輪換。若要在 Secrets Manager 中輪換主要使用者密碼機密，請修改多可用區域資料庫叢集。如需修改多可用區域資料庫叢集的詳細資訊，請參閱 [使用 Amazon RDS 修改多可用區域資料庫叢集](modify-multi-az-db-cluster.md)。

您可以使用 RDS 主控台 AWS CLI、 或 RDS API 立即輪換主要使用者密碼秘密。新密碼長度一律為 28 個字元，且至少包含一個大寫和小寫字元、一個數字和一個標點符號。

### 主控台
<a name="rds-secrets-manager-rotate-db-instance-console"></a>

若要使用 RDS 主控台輪換主要使用者密碼機密，請修改多可用區域資料庫叢集，然後在 **Settings** (設定) 中選取 **Rotate secret immediately** (立即輪換機密)。

![\[立即輪換主使用者密碼機密\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/secrets-manager-integration-rotate-taz-cluster.png)


遵循使用 [使用 Amazon RDS 修改多可用區域資料庫叢集](modify-multi-az-db-cluster.md) 中的 RDS 主控台修改多可用區域資料庫叢集的指示。您必須在確認頁面上選擇 **Apply immediately** (立即套用)。

### AWS CLI
<a name="rds-secrets-manager-rotate-db-instance-cli"></a>

若要使用 輪換主要使用者密碼秘密 AWS CLI，請使用 [modify-db-cluster](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-cluster.html) 命令並指定 `--rotate-master-user-password`選項。您必須在輪換主要密碼時指定 `--apply-immediately` 選項。

此範例會輪換主要使用者密碼機密。

**Example**  
針對 Linux、macOS 或 Unix：  

```
1. aws rds modify-db-cluster \
2.     --db-cluster-identifier mydbcluster \
3.     --rotate-master-user-password \
4.     --apply-immediately
```
在 Windows 中：  

```
1. aws rds modify-db-cluster ^
2.     --db-cluster-identifier mydbcluster ^
3.     --rotate-master-user-password ^
4.     --apply-immediately
```

### RDS API
<a name="rds-secrets-manager-rotate-db-instance-api"></a>

您可以使用 [ModifyDBCluster](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBCluster.html) 操作，並將 `RotateMasterUserPassword` 參數設為 `true`，來輪換主要使用者密碼機密。輪換主要密碼時，必須將 `ApplyImmediately` 參數設為 `true`。

## 檢視資料庫執行個體機密的詳細資訊
<a name="rds-secrets-manager-view-db-instance"></a>

您可以使用 主控台 ([https://console.aws.amazon.com/secretsmanager/](https://console.aws.amazon.com/secretsmanager/)：//) 或 AWS CLI ([get-secret-value](https://docs.aws.amazon.com/cli/latest/reference/secretsmanager/get-secret-value.html) Secrets Manager 命令） 擷取秘密。

您可以使用 RDS 主控台 AWS CLI、 或 RDS API，在 Secrets Manager 中找到由 RDS 管理的秘密的 Amazon Resource Name (ARN)。

### 主控台
<a name="rds-secrets-manager-view-db-instance-console"></a>

**檢視 Secrets Manager 中由 RDS 管理之機密的詳細資訊**

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

1. 在導覽窗格中，選擇 **Databases** (資料庫)。

1. 選擇資料庫執行個體的名稱，以顯示其詳細資訊。

1. 選擇 **Configuration** (組態) 索引標籤。

   在 **Master Credentials ARN** (主要憑證 ARN) 中，您可以檢視機密 ARN。  
![\[檢視 Secrets Manager 中由 RDS 管理之機密的詳細資訊\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/secrets-manager-integration-view-instance.png)

   您可以遵循 **Manage in Secrets Manager** (在 Secrets Manager 中管理) 連結，在 Secret Manager 主控台中檢視和管理機密。

### AWS CLI
<a name="rds-secrets-manager-view-db-instance-cli"></a>

您可以使用 [describe-db-instances](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html) RDS CLI 命令，尋找 Secrets Manager 中由 RDS 管理之機密的下列相關資訊：
+ `SecretArn` – 機密的 ARN
+ `SecretStatus` – 機密的狀態

  可能的狀態值包括下列項目：
  + `creating` – 正在建立機密。
  + `active` – 機密可供正常使用和輪換。
  + `rotating` – 正在輪換機密。
  + `impaired` – 機密可以用來存取資料庫憑證，但無法將其輪換。例如，如果變更許可，以便 RDS 再也無法取機密或秘密的 KMS 金鑰，則秘密可能會具有此狀態。

    當密碼具有此狀態時，您可以更正導致狀態的條件。如果您更正了導致狀態的條件，則狀態仍會保留 `impaired`，直到下一次輪換為止。或者，您可以修改資料庫執行個體，以關閉資料庫憑證的自動管理，然後再次修改資料庫執行個體，以開啟資料庫憑證的自動管理。若要修改資料庫執行個體，請在 [modify-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) 命令中使用 `--manage-master-user-password` 選項。
+ `KmsKeyId` – 用來加密機密之 KMS 金鑰的 ARN

指定 `--db-instance-identifier` 選項來顯示特定資料庫執行個體的輸出。此範例顯示資料庫執行個體所使用之機密的輸出。

**Example**  

```
1. aws rds describe-db-instances --db-instance-identifier mydbinstance
```
以下是機密的範例輸出：  

```
"MasterUserSecret": {
                "SecretArn": "arn:aws:secretsmanager:eu-west-1:123456789012:secret:rds!db-033d7456-2c96-450d-9d48-f5de3025e51c-xmJRDx",
                "SecretStatus": "active",
                "KmsKeyId": "arn:aws:kms:eu-west-1:123456789012:key/0987dcba-09fe-87dc-65ba-ab0987654321"
            }
```

具有機密 ARN 時，您可以使用 [get-secret-value](https://docs.aws.amazon.com/cli/latest/reference/secretsmanager/get-secret-value.html) Secrets Manager CLI 命令，檢視機密的詳細資訊。

此範例顯示前一個範例輸出中機密的詳細資訊。

**Example**  
針對 Linux、macOS 或 Unix：  

```
aws secretsmanager get-secret-value \
    --secret-id 'arn:aws:secretsmanager:eu-west-1:123456789012:secret:rds!db-033d7456-2c96-450d-9d48-f5de3025e51c-xmJRDx'
```
在 Windows 中：  

```
aws secretsmanager get-secret-value ^
    --secret-id 'arn:aws:secretsmanager:eu-west-1:123456789012:secret:rds!db-033d7456-2c96-450d-9d48-f5de3025e51c-xmJRDx'
```

### RDS API
<a name="rds-secrets-manager-rotate-db-instance-api"></a>

您可以檢視 Secrets Manager 中由 RDS 管理之機密的 ARN、狀態和 KMS 金鑰，方法為使用 [DescribeDBInstances](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBInstances.html) 操作，並將 `DBInstanceIdentifier` 參數設為資料庫執行個體識別符。機密的詳細資訊包含在輸出中。

具有機密 ARN 時，您可以使用 [gGetSecretValue](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_GetSecretValue.html) Secrets Manager 操作，檢視機密的詳細資訊。

## 檢視多可用區域資料庫叢集秘密的詳細資訊
<a name="rds-secrets-manager-view-db-cluster"></a>

您可以使用 主控台 ([https://console.aws.amazon.com/secretsmanager/](https://console.aws.amazon.com/secretsmanager/)：//) 或 AWS CLI ([get-secret-value](https://docs.aws.amazon.com/cli/latest/reference/secretsmanager/get-secret-value.html) Secrets Manager 命令） 擷取秘密。

您可以使用 RDS 主控台 AWS CLI、 或 RDS API，在 Secrets Manager 中找到由 RDS 管理之秘密的 Amazon Resource Name (ARN)。

### 主控台
<a name="rds-secrets-manager-view-db-cluster-console"></a>

**在 Secrets Manager 中檢視由 RDS 管理之秘密的詳細資訊**

1. 登入 AWS 管理主控台 並開啟位於 https：//[https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/) 的 Amazon RDS 主控台。

1. 在導覽窗格中，選擇 **Databases** (資料庫)。

1. 選擇多可用區域資料庫叢集的名稱，以顯示其詳細資訊。

1. 選擇 **Configuration** (組態) 索引標籤。

   在 **Master Credentials ARN** (主要憑證 ARN) 中，您可以檢視機密 ARN。  
![\[檢視 Secrets Manager 中由 RDS 管理之機密的詳細資訊\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/secrets-manager-integration-view-taz-cluster.png)

   您可以遵循 **Manage in Secrets Manager** (在 Secrets Manager 中管理) 連結，在 Secret Manager 主控台中檢視和管理機密。

### AWS CLI
<a name="rds-secrets-manager-view-db-instance-cli"></a>

您可以使用 RDS AWS CLI [describe-db-clusters](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-clusters.html) 命令來尋找 Secrets Manager 中 RDS 所管理秘密的下列相關資訊：
+ `SecretArn` – 機密的 ARN
+ `SecretStatus` – 機密的狀態

  可能的狀態值包括下列項目：
  + `creating` – 正在建立機密。
  + `active` – 機密可供正常使用和輪換。
  + `rotating` – 正在輪換機密。
  + `impaired` – 機密可以用來存取資料庫憑證，但無法將其輪換。例如，如果變更許可，以便 RDS 再也無法取機密或秘密的 KMS 金鑰，則秘密可能會具有此狀態。

    當密碼具有此狀態時，您可以更正導致狀態的條件。如果您更正了導致狀態的條件，則狀態仍會保留 `impaired`，直到下一次輪換為止。或者，您可以修改資料庫叢集，以關閉資料庫憑證的自動管理，然後再次修改資料庫叢集，以開啟資料庫憑證的自動管理。若要修改資料庫叢集，請在 [modify-db-cluster](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-cluster.html) 命令中使用 `--manage-master-user-password` 選項。
+ `KmsKeyId` – 用來加密機密之 KMS 金鑰的 ARN

指定 `--db-cluster-identifier` 選項來顯示特定資料庫叢集的輸出。此範例顯示資料庫叢集所使用之機密的輸出。

**Example**  

```
1. aws rds describe-db-clusters --db-cluster-identifier mydbcluster
```
下列範例顯示機密的輸出：  

```
"MasterUserSecret": {
                "SecretArn": "arn:aws:secretsmanager:eu-west-1:123456789012:secret:rds!cluster-033d7456-2c96-450d-9d48-f5de3025e51c-xmJRDx",
                "SecretStatus": "active",
                "KmsKeyId": "arn:aws:kms:eu-west-1:123456789012:key/0987dcba-09fe-87dc-65ba-ab0987654321"
            }
```

具有機密 ARN 時，您可以使用 [get-secret-value](https://docs.aws.amazon.com/cli/latest/reference/secretsmanager/get-secret-value.html) Secrets Manager CLI 命令，檢視機密的詳細資訊。

此範例顯示前一個範例輸出中機密的詳細資訊。

**Example**  
針對 Linux、macOS 或 Unix：  

```
aws secretsmanager get-secret-value \
    --secret-id 'arn:aws:secretsmanager:eu-west-1:123456789012:secret:rds!cluster-033d7456-2c96-450d-9d48-f5de3025e51c-xmJRDx'
```
在 Windows 中：  

```
aws secretsmanager get-secret-value ^
    --secret-id 'arn:aws:secretsmanager:eu-west-1:123456789012:secret:rds!cluster-033d7456-2c96-450d-9d48-f5de3025e51c-xmJRDx'
```

### RDS API
<a name="rds-secrets-manager-rotate-db-instance-api"></a>

您可以檢視 Secrets Manager 中由 RDS 管理之機密的 ARN、狀態和 KMS 金鑰，方法為使用 [DescribeDBClusters](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBClusters.html) RDS 操作，並將 `DBClusterIdentifier` 參數設為資料庫叢集識別符。機密的詳細資訊包含在輸出中。

具有機密 ARN 時，您可以使用 [gGetSecretValue](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_GetSecretValue.html) Secrets Manager 操作，檢視機密的詳細資訊。

## 檢視租用戶資料庫秘密的詳細資訊
<a name="rds-secrets-manager-view-tenant"></a>

您可以使用 主控台 ([https://console.aws.amazon.com/secretsmanager/](https://console.aws.amazon.com/secretsmanager/)：//) 或 AWS CLI ([get-secret-value](https://docs.aws.amazon.com/cli/latest/reference/secretsmanager/get-secret-value.html) Secrets Manager 命令） 擷取秘密。

您可以使用 Amazon RDS AWS Secrets Manager 主控台 AWS CLI、 或 Amazon RDS API，在 中找到由 Amazon RDS 管理的秘密的 Amazon Resource Name (ARN)。

### 主控台
<a name="rds-secrets-manager-view-tenant-console"></a>

**檢視租戶資料庫在 中由 Amazon RDS 管理 AWS Secrets Manager 之秘密的詳細資訊**

1. 登入 AWS 管理主控台 並開啟位於 https：//[https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/) 的 Amazon RDS 主控台。

1. 在導覽窗格中，選擇 **Databases** (資料庫)。

1. 選擇資料庫執行個體的名稱，其中包含租用戶資料庫以顯示其詳細資訊。

1. 選擇 **Configuration** (組態) 索引標籤。

   在**租用戶資料庫**區段中，尋找租用戶資料庫並檢視其**主要憑證 ARN**。

   您可以遵循 **Manage in Secrets Manager** (在 Secrets Manager 中管理) 連結，在 Secret Manager 主控台中檢視和管理機密。

### AWS CLI
<a name="rds-secrets-manager-view-tenant-cli"></a>

您可以使用 [describe-tenant-databases](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-tenant-databases.html) Amazon RDS AWS CLI 命令，尋找下列有關租用戶資料庫在 中由 Amazon RDS 管理 AWS Secrets Manager 之秘密的資訊：
+ `SecretArn` – 機密的 ARN
+ `SecretStatus` – 機密的狀態

  可能的狀態值包括下列項目：
  + `creating` – 正在建立機密。
  + `active` – 機密可供正常使用和輪換。
  + `rotating` – 正在輪換機密。
  + `impaired` – 機密可以用來存取資料庫憑證，但無法將其輪換。例如，如果變更許可，以便 Amazon RDS 再也無法取機密或秘密的 KMS 金鑰，則秘密可能會具有此狀態。

    當密碼具有此狀態時，您可以更正導致狀態的條件。如果您更正了導致狀態的條件，則狀態仍會保留 `impaired`，直到下一次輪換為止。或者，您可以修改租用戶資料庫，以關閉資料庫憑證的自動管理，然後再次修改租用戶資料庫，以開啟資料庫憑證的自動管理。若要修改租用戶資料庫，請在 [modify-tenant-database](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-tenant-database.html) 命令中使用 `--manage-master-user-password` 選項。
+ `KmsKeyId` – 用來加密機密之 KMS 金鑰的 ARN

指定 `--db-instance-identifier` 選項來顯示特定資料庫執行個體中租用戶資料庫的輸出。您也可以指定顯示特定租用戶資料庫輸出 `--tenant-db-name` 的選項。此範例顯示租用戶資料庫所使用之秘密的輸出。

**Example**  

```
1. aws rds describe-tenant-databases \
2.     --db-instance-identifier database-3 \
3.     --query "TenantDatabases[0].MasterUserSecret"
```
以下是機密的範例輸出：  

```
{
    "SecretArn": "arn:aws:secretsmanager:us-east-2:123456789012:secret:rds!db-ABC123",
    "SecretStatus": "active",
    "KmsKeyId": "arn:aws:kms:us-east-2:123456789012:key/aa11bb22-####-####-####-fedcba123456"
}
```

當您擁有秘密 ARN 時，您可以使用 [get-secret-value](https://docs.aws.amazon.com/cli/latest/reference/secretsmanager/get-secret-value.html) Secrets Manager AWS CLI 命令來檢視秘密的詳細資訊。

此範例顯示前一個範例輸出中機密的詳細資訊。

**Example**  
針對 Linux、macOS 或 Unix：  

```
aws secretsmanager get-secret-value \
    --secret-id 'arn:aws:secretsmanager:us-east-2:123456789012:secret:rds!db-ABC123'
```
在 Windows 中：  

```
aws secretsmanager get-secret-value ^
    --secret-id 'arn:aws:secretsmanager:us-east-2:123456789012:secret:rds!db-ABC123'
```

### Amazon RDS API
<a name="rds-secrets-manager-view-tenant-api"></a>

您可以使用 [DescribeTenantDatabases](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeTenantDatabases.html) 操作並將 `DBInstanceIdentifier` 參數設定為資料庫執行個體識別符， AWS Secrets Manager 來檢視 中由 Amazon RDS 管理之秘密的 ARN、狀態和 KMS 金鑰。您也可以將 `TenantDBName` 參數設定為特定租用戶資料庫名稱。機密的詳細資訊包含在輸出中。

具有機密 ARN 時，您可以使用 [gGetSecretValue](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_GetSecretValue.html) Secrets Manager 操作，檢視機密的詳細資訊。

## 區域和版本可用性
<a name="rds-secrets-manager-availability"></a>

功能可用性和支援會因每個資料庫引擎的特定版本以及 AWS 區域而有所不同。如需 Secrets Manager 與 Amazon RDS 整合之版本和區域可用性的詳細資訊，請參閱 [Secrets Manager 與 Amazon RDS 整合的支援區域和資料庫引擎](Concepts.RDS_Fea_Regions_DB-eng.Feature.SecretsManager.md)。

# Amazon RDS 中的資料保護
<a name="DataDurability"></a>

AWS [共同的責任模型](https://aws.amazon.com/compliance/shared-responsibility-model/)適用於 Amazon Relational Database Service 中的資料保護。如此模型所述，AWS 負責保護執行所有 AWS 雲端 的全球基礎設施。您負責維護在此基礎設施上託管內容的控制權。您也同時負責所使用 AWS 服務 的安全組態和管理任務。如需資料隱私權的詳細資訊，請參閱[資料隱私權常見問答集](https://aws.amazon.com/compliance/data-privacy-faq/)。如需有關歐洲資料保護的相關資訊，請參閱 *AWS 安全性部落格*上的 [AWS 共同的責任模型和 GDPR](https://aws.amazon.com/blogs/security/the-aws-shared-responsibility-model-and-gdpr/) 部落格文章。

基於資料保護目的，建議您使用 AWS IAM Identity Center 或 AWS Identity and Access Management (IAM) 保護 AWS 帳戶 憑證，並設定個人使用者。如此一來，每個使用者都只會獲得授與完成其任務所必須的許可。我們也建議您採用下列方式保護資料：
+ 每個帳戶均要使用多重要素驗證 (MFA)。
+ 使用 SSL/TLS 與 AWS 資源通訊。我們需要 TLS 1.2 並建議使用 TLS 1.3。
+ 使用 AWS CloudTrail 設定 API 和使用者活動日誌記錄。如需使用 CloudTrail 追蹤擷取 AWS 活動的相關資訊，請參閱「AWS CloudTrail 使用者指南」**中的[使用 CloudTrail 追蹤](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-trails.html)。
+ 使用 AWS 加密解決方案，以及 AWS 服務 內的所有預設安全控制項。
+ 使用進階的受管安全服務 (例如 Amazon Macie)，協助探索和保護儲存在 Amazon S3 的敏感資料。
+ 如果您在透過命令列介面或 API 存取 AWS 時，需要 FIPS 140-3 驗證的加密模組，請使用 FIPS 端點。如需有關 FIPS 和 FIPS 端點的更多相關資訊，請參閱[聯邦資訊處理標準 (FIPS) 140-3](https://aws.amazon.com/compliance/fips/)。

我們強烈建議您絕對不要將客戶的電子郵件地址等機密或敏感資訊，放在標籤或自由格式的文字欄位中，例如**名稱**欄位。這包括當您使用 Amazon RDS 或其他使用主控台、API、AWS CLI 或 AWS SDK 的 AWS 服務 時。您在標籤或自由格式文字欄位中輸入的任何資料都可能用於計費或診斷日誌。如果您提供外部伺服器的 URL，我們強烈建議請勿在驗證您對該伺服器請求的 URL 中包含憑證資訊。

**Topics**
+ [

# 使用加密保護資料
](Encryption.md)
+ [

# 網際網路流量隱私權
](inter-network-traffic-privacy.md)

# 使用加密保護資料
<a name="Encryption"></a>

您可以為資料庫資源啟用加密。您也可以加密資料庫執行個體的連線。

**Topics**
+ [

# 加密 Amazon RDS 資源
](Overview.Encryption.md)
+ [

# AWS KMS key 管理
](Overview.Encryption.Keys.md)
+ [

# 使用 SSL/TLS 加密與資料庫執行個體或叢集的連線
](UsingWithRDS.SSL.md)
+ [

# 輪換您的 SSL/TLS 憑證
](UsingWithRDS.SSL-certificate-rotation.md)

# 加密 Amazon RDS 資源
<a name="Overview.Encryption"></a>

Amazon RDS 可以加密 Amazon RDS 資料庫執行個體。靜態加密的資料包括資料庫執行個體的基礎儲存體、其日誌、自動備份、僅供讀取複本和快照。

Amazon RDS 加密資料庫執行個體使用業界標準的 AES-256 加密演算法，在託管 Amazon RDS 資料庫執行個體的伺服器上加密您的資料。

資料加密後，Amazon RDS 會以透明的方式處理資料的存取和解密身分驗證，且對效能的影響最小。您不需要修改資料庫用戶端應用程式即可使用加密。

**注意**  
對於加密和未加密的資料庫執行個體，即使跨 AWS 區域複寫，來源和僅供讀取複本之間傳輸的資料也會加密。

**Topics**
+ [

## 加密 Amazon RDS 資源概觀
](#Overview.Encryption.Overview)
+ [

## 加密資料庫執行個體
](#Overview.Encryption.Enabling)
+ [

## 決定是否為資料庫執行個體開啟加密
](#Overview.Encryption.Determining)
+ [

## Amazon RDS 加密的可用性
](#Overview.Encryption.Availability)
+ [

## 傳輸中加密
](#Overview.Encryption.InTransit)
+ [

## Amazon RDS 加密資料庫執行個體的限制
](#Overview.Encryption.Limitations)

## 加密 Amazon RDS 資源概觀
<a name="Overview.Encryption.Overview"></a>

Amazon RDS 加密資料庫執行個體可以保護您的資料免於發生未經授權的基礎儲存體存取，為資料提供另一層保護。您可以使用 Amazon RDS 加密提高部署於雲端中應用程式的資料保護，以及滿足靜態加密的合規要求。針對 Amazon RDS 加密資料庫執行個體，所有日誌、備份和快照都會經過加密。如需加密可用性和限制的詳細資訊，請參閱 [Amazon RDS 加密的可用性](#Overview.Encryption.Availability) 和 [Amazon RDS 加密資料庫執行個體的限制](#Overview.Encryption.Limitations)。

Amazon RDS 使用 AWS Key Management Service 金鑰來加密這些 resources. AWS KMS combines 安全、高可用性的硬體和軟體，以提供針對雲端擴展的金鑰管理系統。您可以使用 AWS 受管金鑰，也可以建立客戶受管金鑰。

建立加密的資料庫執行個體時，您可以選擇客戶受管金鑰或 AWS 受管金鑰 ，讓 Amazon RDS 加密資料庫執行個體。如果您未指定客戶受管金鑰的金鑰識別符，Amazon RDS 會將 AWS 受管金鑰 用於新的資料庫執行個體。Amazon RDS 會為 AWS 您的帳戶建立 AWS 受管金鑰 適用於 Amazon RDS 的 。每個 AWS 區域的 AWS 受管金鑰 Amazon RDS AWS 帳戶各有不同。

若要管理用於加密和解密 Amazon RDS 資源的客戶受管金鑰，您可以使用 [AWS Key Management Service (AWS KMS)](https://docs.aws.amazon.com/kms/latest/developerguide/)。

您可以使用 AWS KMS建立客戶受管金鑰，並定義控制這些客戶受管金鑰使用的政策。 AWS KMS 支援 CloudTrail，因此您可以稽核 KMS 金鑰用量，以確認客戶受管金鑰是否適當使用。您可以使用客戶受管金鑰搭配 Amazon Aurora 和支援 AWS 的服務，例如 Amazon S3、Amazon EBS 和 Amazon Redshift。如需與 整合的服務清單 AWS KMS，請參閱[AWS 服務整合](https://aws.amazon.com/kms/features/#AWS_Service_Integration)。使用 KMS 金鑰的一些考量：
+ 一旦建立了加密資料庫執行個體之後，您就無法變更該資料庫執行個體使用的 KMS 金鑰。因此，請務必在建立加密的資料庫執行個體前，先決定您的 KMS 金鑰要求。

  如果您必須變更資料庫執行個體的加密金鑰，請建立執行個體的手動快照，並在複製快照時啟用加密。如需詳細資訊，請參閱 [re:Post Knowledge 文章](https://repost.aws/knowledge-center/update-encryption-key-rds)。
+ 如果您複製加密的快照，您可以使用不同的 KMS 金鑰來加密目標快照，而不是使用用來加密來源快照的 KMS 金鑰。
+ 當 Amazon RDS 加密執行個體的僅供讀取複本位於相同 AWS 區域時，必須使用與主要資料庫執行個體相同的 KMS 金鑰加密。
+ 如果主要資料庫執行個體和僅供讀取複本位於不同的 AWS 區域，您可以使用該 AWS 區域的 KMS 金鑰來加密僅供讀取複本。
+ 您無法共用已使用共用快照 AWS 受管金鑰 之 AWS 帳戶的 加密的快照。
+ Amazon RDS 也支援使用透明資料加密 (TDE)，來加密 Oracle 或 SQL Server 資料庫執行個體。TDE 可與 RDS 靜態加密搭配使用，但是同時使用 TDE 與 RDS 靜態加密可能會稍微影響資料庫的效能。您必須管理每種加密方法的不同索引鍵。如需 TDE 的詳細資訊，請參閱 [Oracle 透明資料加密](Appendix.Oracle.Options.AdvSecurity.md) 或 [支援 SQL Server 的透明資料加密](Appendix.SQLServer.Options.TDE.md)。

**重要**  
當您停用 KMS 金鑰時，Amazon RDS 會失去資料庫執行個體的 KMS 金鑰存取權。如果您無法存取 KMS 金鑰，加密的資料庫執行個體會在啟用備份所在的執行個體中偵測到之後 2 小時進入 `inaccessible-encryption-credentials-recoverable` 狀態。資料庫執行個體會保持此狀態七天，在此期間執行個體會停止。在此期間對資料庫執行個體發出的 API 呼叫可能無法成功。若要復原資料庫執行個體，請啟用 KMS 金鑰並重新啟動此資料庫執行個體。從 AWS 管理主控台 AWS CLI、 或 RDS API 啟用 KMS 金鑰。使用 AWS CLI 命令 [start-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/start-db-instance.html) 或 重新啟動資料庫執行個體 AWS 管理主控台。  
`inaccessible-encryption-credentials-recoverable` 狀態僅適用於可停止的資料庫執行個體。此可復原狀態不適用於無法停止的執行個體，例如讀取複本和具有讀取複本的執行個體。如需詳細資訊，請參閱[停止資料庫執行個體的限制](USER_StopInstance.md#USER_StopInstance.Limitations)。  
如果資料庫執行個體未在七天內復原，它會進入終端 `inaccessible-encryption-credentials` 狀態。在此狀態下，資料庫執行個體不再可用，您只能從備份還原資料庫執行個體。強烈建議您一律開啟加密資料庫執行個體的備份，以免遺失資料庫內的加密資料。  
在建立資料庫執行個體期間，Amazon RDS 會檢查呼叫主體是否可以存取 KMS 金鑰，並從其在資料庫執行個體的整個生命週期內使用的 KMS 金鑰產生授予。撤銷呼叫主體對 KMS 金鑰的存取權不會影響執行中的資料庫。在跨帳戶案例中使用 KMS 金鑰時，例如將快照複製到另一個帳戶，則需要與其他帳戶共用 KMS 金鑰。如果您從快照建立資料庫執行個體，但未指定不同的 KMS 金鑰，則新執行個體會使用來源帳戶的 KMS 金鑰。在您建立資料庫執行個體之後撤銷對金鑰的存取權不會影響執行個體。不過，停用金鑰會影響使用該金鑰進行加密的所有資料庫執行個體。若要防止這種情況，請在快照複製操作期間指定不同的金鑰。  
在執行個體修改或復原期間從主機分離磁碟區之前，具有已停用備份的資料庫執行個體仍然可用。RDS 會將執行個體移至適用的 `inaccessible-encryption-credentials-recoverable` 狀態或 `inaccessible-encryption-credentials` 狀態。

如需 KMS 金鑰的詳細資訊，請參閱《AWS Key Management Service 開發人員指南》**和 [AWS KMS key 管理](Overview.Encryption.Keys.md) 中的 [AWS KMS keys](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#kms_keys)。

## 加密資料庫執行個體
<a name="Overview.Encryption.Enabling"></a>

若要加密新資料庫執行個體，請在 Amazon RDS 主控台上選擇 **Enable encryption (啟用加密)**。如需建立資料庫執行個體的資訊，請參閱 [建立 Amazon RDS 資料庫執行個體](USER_CreateDBInstance.md)。

如果您使用 [create-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html) AWS CLI 命令來建立加密的資料庫執行個體，請設定 `--storage-encrypted` 參數。若您使用 [CreateDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html) API 操作，請將 `StorageEncrypted` 參數設為 true。



如果您使用 AWS CLI `create-db-instance`命令來建立具有客戶受管金鑰的加密資料庫執行個體，請將 `--kms-key-id` 參數設定為 KMS 金鑰的任何金鑰識別符。如果您使用 Amazon RDS API `CreateDBInstance` 作業，請將 `KmsKeyId` 參數設定為 KMS 金鑰的任何金鑰識別碼。若要在不同帳戶中使用客戶受管金鑰 AWS ，請指定金鑰 ARN 或別名 ARN。

## 決定是否為資料庫執行個體開啟加密
<a name="Overview.Encryption.Determining"></a>

您可以使用 AWS 管理主控台 AWS CLI或 RDS API 來判斷資料庫執行個體是否開啟靜態加密。

### 主控台
<a name="Overview.Encryption.Determining.CON"></a>

**決定是否為資料庫執行個體開啟靜態加密。**

1. 登入 AWS 管理主控台 並開啟位於 https：//[https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/) 的 Amazon RDS 主控台。

1. 在導覽窗格中，選擇 **Databases** (資料庫)。

1. 選擇您要檢查的資料庫執行個體名稱，以檢視其詳細資訊。

1. 選擇 **Configuration** (組態) 索引標籤，然後勾選 **Storage** (儲存) 下的 **Encryption** (加密) 值。

   其會顯示 **Enabled** (已啟用) 或 **Not enabled** (未啟用)。  
![\[檢查資料庫執行個體的靜態加密\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/encryption-check-db-instance.png)

### AWS CLI
<a name="Overview.Encryption.Determining.CLI"></a>

若要使用 判斷資料庫執行個體是否開啟靜態加密 AWS CLI，請使用下列選項呼叫 [describe-db-instances](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html) 命令：
+ `--db-instance-identifier` – 資料庫執行個體名稱。

下列範例會使用查詢，為 `mydb` 資料庫執行個體傳回關於靜態加密的 `TRUE` 或 `FALSE`。

**Example**  

```
1. aws rds describe-db-instances --db-instance-identifier mydb --query "*[].{StorageEncrypted:StorageEncrypted}" --output text
```

### RDS API
<a name="Overview.Encryption.Determining.API"></a>

若要使用 Amazon RDS API 來決定是否為資料庫執行個體開啟靜態加密，請呼叫 [DescribeDBInstances](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBInstances.html) 作業，搭配下列參數：
+ `DBInstanceIdentifier` – 資料庫執行個體名稱。

## Amazon RDS 加密的可用性
<a name="Overview.Encryption.Availability"></a>

所有資料庫引擎和儲存體類型目前都可以使用 Amazon RDS 加密。

大多數資料庫執行個體類別可以使用 Amazon RDS 加密。下表列出*不支援* Amazon RDS 加密的資料庫執行個體類別：


| 執行個體類型 | 執行個體類別 | 
| --- | --- | 
| 一般用途 (M1) |  db.m1.small db.m1.medium db.m1.large db.m1.xlarge  | 
| 記憶體最佳化 (M2) |  db.m2.xlarge db.m2.2xlarge db.m2.4xlarge  | 
| 爆量 (T2) |  db.t2.micro  | 

## 傳輸中加密
<a name="Overview.Encryption.InTransit"></a>

**在實體層加密**  
在離開 AWS 安全設施之前， AWS 區域 透過 AWS 全球網路周遊的所有資料都會在實體層自動加密。AZ 之間的所有流量都會加密。額外的加密層 (包括本節所列的加密層) 可能會提供額外的保護。

**Amazon VPC 對等互連和 Transit Gateway 跨區域對等互連提供的加密**  
所有使用 Amazon VPC 和 Transit Gateway 對等互連的跨區域流量都會在離開區域時自動進行批量加密。在離開 AWS 安全設施之前，會在實體層自動為所有流量提供另一層加密。

**執行個體間的加密**  
AWS 在所有類型的資料庫執行個體之間提供安全和私有連線。此外，某些執行個體類型使用基礎 Nitro System 硬體的卸載功能，以自動加密執行個體之間的傳輸中流量。此加密機制使用帶有關聯資料的認證加密 (AEAD) 演算法 (採用 256 位元加密)。這對網路效能沒有影響。若要支援執行個體之間額外的傳輸中流量加密，必須符合下列要求：  
+ 執行個體使用下列執行個體類型：
  + **一般用途**：M6i、M6id、M6in、M6idn、M7g
  + **記憶體最佳化**：R6i、R6id、R6in、R6idn、R7g、X2idn、X2iedn、X2iezn
+ 這些執行個體位於相同的 AWS 區域中。
+ 這些執行個體位於相同的 VPC 或對等 VPC 中，且流量不會經過虛擬網路裝置或服務，例如負載平衡器或傳輸閘道。

## Amazon RDS 加密資料庫執行個體的限制
<a name="Overview.Encryption.Limitations"></a>

Amazon RDS 加密資料庫執行個體具有下列限制：
+ 您只能在加密 Amazon RDS 資料庫執行個體時，而不能在建立資料庫執行個體之後為其啟用加密。

  不過，因為您可以加密未加密快照的副本，所以可以有效地將加密新增至未加密的資料庫執行個體。亦即，您可以建立資料庫執行個體的快照，然後建立該快照的加密副本。接著，從加密快照中還原資料庫執行個體，因此您有原始資料庫執行個體的加密副本。如需詳細資訊，請參閱[複製 Amazon RDS 的資料庫快照](USER_CopySnapshot.md)。
+ 您無法在加密的資料庫執行個體上關閉加密。
+ 您無法建立未加密資料庫執行個體的加密快照。
+ 加密資料庫執行個體的快照必須使用與資料庫執行個體相同的 KMS 金鑰進行加密。
+ 未加密資料庫執行個體不可以有加密僅供讀取複本，加密資料庫執行個體也不可以有未加密僅供讀取複本。
+ 當兩者位於相同的 AWS 區域時，加密的僅供讀取複本必須使用與來源資料庫執行個體相同的 KMS 金鑰進行加密。
+ 您無法將未加密的備份或快照還原至已加密的資料庫執行個體。
+ 若要將加密快照從一個 AWS 區域複製到另一個 AWS 區域，您必須在目的地區域中指定 KMS 金鑰。這是因為 KMS 金鑰專屬於其建立所在的 AWS 區域。

  在整個複製過程中來源快照仍會保持加密狀態。Amazon RDS 會在複製過程中使用信封加密來保護資料。如需信封加密的詳細資訊，請參閱 *AWS Key Management Service 開發人員指南*中的[信封加密](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#enveloping)。
+ 您無法解密加密的資料庫執行個體。但是，您可以從加密的資料庫執行個體匯出資料，然後將資料匯入未加密的資料庫執行個體。

# AWS KMS key 管理
<a name="Overview.Encryption.Keys"></a>

 Amazon RDS 會自動與 [AWS Key Management Service (AWS KMS)](https://docs.aws.amazon.com/kms/latest/developerguide/) 整合以進行金鑰管理。Amazon RDS 會使用信封加密。如需信封加密的詳細資訊，請參閱 *AWS Key Management Service 開發人員指南*中的[信封加密](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#enveloping)。

您可以使用兩種類型的 AWS KMS 金鑰來加密資料庫執行個體。
+ 如果想要完全控制 KMS 金鑰，您必須建立*客戶受管金鑰*。如需客戶受管金鑰的詳細資訊，請參閱《*AWS Key Management Service 開發人員指南*》中的[客戶受管金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)。
+  *AWS 受管金鑰* 是帳戶中的 KMS 金鑰，由與 整合的 AWS 服務代表您建立、管理和使用 AWS KMS。根據預設，RDS AWS 受管金鑰 (`aws/rds`) 用於加密。您無法管理、輪換或刪除 RDS AWS 受管金鑰。如需 的詳細資訊 AWS 受管金鑰，請參閱《 *AWS Key Management Service 開發人員指南*[AWS 受管金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk)》中的 。

若要管理用於 Amazon RDS 加密資料庫執行個體 KMS 金鑰，請在 [AWS KMS 主控台](https://console.aws.amazon.com/kms)、 AWS CLI或 AWS KMS API 中使用 [AWS Key Management Service (AWS KMS)](https://docs.aws.amazon.com/kms/latest/developerguide/)。若要檢視透過 AWS 受管或客戶受管金鑰採取的每項動作稽核日誌，請使用 [AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/)。如需有關金鑰轉換的詳細資訊，請參閱[轉換 AWS KMS 金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/rotate-keys.html)。

## 授權使用客戶受管金鑰
<a name="Overview.Encryption.Keys.Authorizing"></a>

當 RDS 在密碼編譯操作中使用客戶受管金鑰時，它會代表建立或變更 RDS 資源的使用者。

若要使用客戶受管金鑰建立 RDS 資源，使用者必須具備呼叫客戶受管金鑰下列作業的許可：
+  `kms:CreateGrant` 
+  `kms:DescribeKey` 

您可以在金鑰政策或在 IAM 政策中指定這些必要的許可 (如果金鑰政策允許)。

**重要**  
當您使用 Amazon RDS 等受管服務之 AWS KMS 金鑰政策中所有資源 (\$1) 的明確拒絕陳述式時，您必須指定允許資源擁有帳戶的條件。如果沒有此條件，操作可能會失敗，即使拒絕規則包含 IAM 使用者的例外狀況。

**提示**  
若要遵循最低權限原則人，請勿允許 `kms:CreateGrant` 的完整存取。反之，使用 [kms:ViaService 條件金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/policy-conditions.html#conditions-kms-via-service)，只允許使用者在由 AWS 服務代使用者建立授予時，才在 KMS 金鑰上建立授予。

您可以透過各種方式使 IAM 政策更加嚴格。例如，若要允許客戶受管金鑰僅用於源自 RDS 的請求，您可以搭配 `rds.<region>.amazonaws.com` 值使用 [kms:ViaService 條件金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/policy-conditions.html#conditions-kms-via-service)。您也可以使用 [Amazon RDS 加密內容](#Overview.Encryption.Keys.encryptioncontext) 中的金鑰或值作為條件，以便將客戶受管金鑰用於加密。

如需詳細資訊，請參閱《AWS Key Management Service 開發人員指南》**中的[允許其他帳戶使用者使用 KMS 金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-modifying-external-accounts.html)和 [AWS KMS中的金鑰政策](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies)。

## Amazon RDS 加密內容
<a name="Overview.Encryption.Keys.encryptioncontext"></a>

當 RDS 使用您的 KMS 金鑰時，或者當 Amazon EBS 代表 RDS 使用 KMS 金鑰時，服務會指定[加密內容](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context)。加密內容是[額外的驗證資料](https://docs.aws.amazon.com/crypto/latest/userguide/cryptography-concepts.html#term-aad) (AAD)， AWS KMS 用於確保資料完整性。為加密操作指定加密內容時，此服務必須為解密操作指定相同的加密內容。否則，解密會失敗。加密內容也會寫入 [AWS CloudTrail](https://aws.amazon.com/cloudtrail/) 日誌檔，以協助您了解為何使用指定的 KMS 金鑰。您的 CloudTrail 日誌可能包含多個項目來描述 KMS 金鑰使用情形，但每個日誌項目中的加密內容可協助您判斷該特定使用情形的原因。

至少，Amazon RDS 一律使用資料庫執行個體 ID 做為加密內容，如下列 JSON 格式範例：

```
{ "aws:rds:db-id": "db-CQYSMDPBRZ7BPMH7Y3RTDG5QY" }
```

這個加密內容可協助您識別您的 KMS 金鑰所用的資料庫執行個體。

當您的 KMS 金鑰用於特定的資料庫執行個體和特定的 Amazon EBS 磁碟區，資料庫執行個體 ID 和 Amazon EBS 磁碟區 ID 都會用於加密內容，如下列 JSON 格式範例：

```
{
  "aws:rds:db-id": "db-BRG7VYS3SVIFQW7234EJQOM5RQ",
  "aws:ebs:id": "vol-ad8c6542"
}
```

# 使用 SSL/TLS 加密與資料庫執行個體或叢集的連線
<a name="UsingWithRDS.SSL"></a>

您可以從應用程式使用 Secure Socket Layer (SSL) 或 Transport Layer Security (TLS) 來加密對執行 Db2、MariaDB、Microsoft SQL Server、MySQL、Oracle 或 PostgreSQL 之資料庫的連線。

SSL/TLS 連線會對用戶端與資料庫執行個體或叢集之間移動的資料進行加密，藉此提供多一層安全性。或者，您的 SSL/TLS 連線可以藉由驗證安裝在資料庫上的伺服器憑證來執行伺服器身分驗證。若需要伺服器身分驗證，請依照此一般程序進行：

1. 為您的資料庫選擇簽署**資料庫伺服器憑證**的**憑證認證機構 (CA)**。如需有關憑證認證機構的詳細資訊，請參閱 [憑證授權單位](#UsingWithRDS.SSL.RegionCertificateAuthorities)。

1. 下載憑證套件，以便在連線至資料庫時使用。若要下載憑證套件，請參閱 [憑證套件依據 AWS 區域](#UsingWithRDS.SSL.CertificatesAllRegions)。
**注意**  
所有憑證都只能使用 SSL/TLS 連線來下載。

1. 使用資料庫引擎實作 SSL/TLS 連線的程序連線至資料庫。每個資料庫引擎都有自己實作 SSL/TLS 的程序。若要了解如何為您的資料庫實作 SSL/TLS，請瀏覽對應您的資料庫引擎的連結：
   +  [使用 SSL/TLS 搭配 Amazon RDS for Db2 資料庫執行個體](Db2.Concepts.SSL.md) 
   +  [Amazon RDS 支援在 MariaDB 資料庫執行個體上啟用 SSL/TLS 加密。](MariaDB.Concepts.SSLSupport.md) 
   +  [對 Microsoft SQL Server 資料庫執行個體使用 SSL](SQLServer.Concepts.General.SSL.Using.md) 
   +  [Amazon RDS 對 MySQL 資料庫執行個體的 SSL/TLS 支援](MySQL.Concepts.SSLSupport.md) 
   +  [使用 SSL 搭配 RDS for Oracle 資料庫執行個體](Oracle.Concepts.SSL.md) 
   +  [將 SSL 與 PostgreSQL 資料庫執行個體搭配使用](PostgreSQL.Concepts.General.SSL.md) 

## 憑證授權單位
<a name="UsingWithRDS.SSL.RegionCertificateAuthorities"></a>

**憑證認證機構 (CA)** 是在憑證鏈頂端識別根 CA 的憑證。CA 會簽署安裝在每個資料庫執行個體上的**資料庫執行個體憑證**。資料庫伺服器憑證會將資料庫執行個體識別為受信任伺服器。

![\[憑證認證機構概覽\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/certificate-authority-overview.png)


Amazon RDS 提供下列 CA 來簽署資料庫的資料庫伺服器憑證。


****  

| 憑證授權單位 (CA) | Description | Common name (CN) (通用名稱 (CN)) | 
| --- | --- | --- | 
|  rds-ca-rsa2048-g1  |  在大多數 AWS 區域中，使用搭配 RSA 2048 私密金鑰演算法和 SHA256 簽署演算法的憑證認證機構。 在 中 AWS GovCloud (US) Regions，此 CA 使用憑證授權機構搭配 RSA 2048 私有金鑰演算法和 SHA384 簽署演算法。 此 CA 支援自動伺服器憑證輪換。  | Amazon RDS 區域識別符根 CA RSA2048 G1 | 
|  rds-ca-rsa4096-g1  |  使用搭配 RSA 4096 私密金鑰演算法和 SHA384 簽署演算法的憑證認證機構。此 CA 支援自動伺服器憑證輪換。  | Amazon RDS 區域識別符根 CA RSA4096 G1 | 
|  rds-ca-ecc384-g1  |  使用搭配 ECC 384 私密金鑰演算法和 SHA384 簽署演算法的憑證認證機構。此 CA 支援自動伺服器憑證輪換。  | Amazon RDS 區域識別符根 CA ECC384 G1 | 

**注意**  
如果您使用的是 AWS CLI，您可以使用 [describe-certificates](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-certificates.html) 來查看上述憑證授權單位的有效性。

這些 CA 憑證包含在區域和全域憑證套件中。當您搭配資料庫使用 rds-ca-rsa2048-g1、rds-ca-rsa4096-g1 或 rds-ca-ecc384-g1 CA 時，RDS 會管理資料庫上的資料庫伺服器憑證。RDS 會在資料庫伺服器憑證到期之前自動進行輪換。

### 設定資料庫的 CA
<a name="UsingWithRDS.SSL.RegionCertificateAuthorities.Selection"></a>

執行下列任務時，您可以設定資料庫的 CA：
+ 建立資料庫執行個體或多可用區域資料庫叢集 – 您可以在建立資料庫執行個體或叢集時設定 CA。如需相關指示，請參閱 [建立 Amazon RDS 資料庫執行個體](USER_CreateDBInstance.md) 或 [為 Amazon RDS 建立多可用區域資料庫叢集](create-multi-az-db-cluster.md)。
+ 修改資料庫執行個體或多可用區域資料庫叢集 - 您可以修改它，針對資料庫執行個體或叢集設定 CA。如需相關指示，請參閱 [修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md) 或 [使用 Amazon RDS 修改多可用區域資料庫叢集](modify-multi-az-db-cluster.md)。

**注意**  
 預設 CA 設定為 rds-ca-rsa2048-g1。您可以使用 AWS 帳戶 [modify-certificates](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-certificates.html) 命令覆寫 的預設 CA。

可用的 CA 取決於資料庫引擎和資料庫引擎版本。使用 時 AWS 管理主控台，您可以使用**憑證授權單位**設定選擇 CA，如下圖所示。

![\[憑證授權單位選項\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/certificate-authority.png)


主控台只會顯示資料庫引擎和資料庫引擎版本可用的 CA。如果您使用的是 AWS CLI，則可以使用 [create-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html) 或 [modify-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) 命令來設定資料庫執行個體的 CA。您可以使用 [create-db-cluster](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-cluster.html) 或 [modify-db-cluster](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-cluster.html) 命令來設定多可用區域資料庫叢集的 CA。

如果您使用的是 AWS CLI，您可以使用 [describe-certificates](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-certificates.html) 命令查看帳戶的可用 CAs。此命令也會在輸出中顯示 `ValidTill` 中每個 CA 的到期日。您可以使用 [describe-db-engine-versions](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-engine-versions.html) 命令，尋找適用於特定資料庫引擎和資料庫引擎版本的 CA。

下列範例顯示適用於預設 RDS for PostgreSQL 資料庫引擎版本的 CA。

```
aws rds describe-db-engine-versions --default-only --engine postgres
```

輸出類似如下。可用的 CA 列示在 `SupportedCACertificateIdentifiers` 中。輸出也會顯示 DB 引擎版本是否支援輪換憑證，而不需在 `SupportsCertificateRotationWithoutRestart` 中重新啟動。

```
{
    "DBEngineVersions": [
        {
            "Engine": "postgres",
            "MajorEngineVersion": "13",
            "EngineVersion": "13.4",
            "DBParameterGroupFamily": "postgres13",
            "DBEngineDescription": "PostgreSQL",
            "DBEngineVersionDescription": "PostgreSQL 13.4-R1",
            "ValidUpgradeTarget": [],
            "SupportsLogExportsToCloudwatchLogs": false,
            "SupportsReadReplica": true,
            "SupportedFeatureNames": [
                "Lambda"
            ],
            "Status": "available",
            "SupportsParallelQuery": false,
            "SupportsGlobalDatabases": false,
            "SupportsBabelfish": false,
            "SupportsCertificateRotationWithoutRestart": true,
            "SupportedCACertificateIdentifiers": [
                "rds-ca-rsa2048-g1",
                "rds-ca-ecc384-g1",
                "rds-ca-rsa4096-g1"
            ]
        }
    ]
}
```

### 資料庫伺服器憑證有效期
<a name="UsingWithRDS.SSL.RegionCertificateAuthorities.DBServerCert"></a>

資料庫伺服器憑證的有效期取決於資料庫引擎和資料庫引擎版本。如果資料庫引擎版本支援在不重新啟動的情況下輪換憑證，則資料庫伺服器憑證的有效期為 1 年。若不支援的話，則有效期為 3 年。

如需資料庫伺服器憑證輪換的詳細資訊，請參閱 [自動伺服器憑證輪換](UsingWithRDS.SSL-certificate-rotation.md#UsingWithRDS.SSL-certificate-rotation-server-cert-rotation)。

### 檢視資料庫執行個體的 CA
<a name="UsingWithRDS.SSL.RegionCertificateAuthorities.Viewing"></a>

您可以檢視主控台中的**連線和安全**索引標籤，來檢視資料庫 CA 的詳細資訊，如下圖所示。

![\[憑證授權單位詳細資訊\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/certificate-authority-details.png)


如果您使用的是 AWS CLI，您可以使用 [describe-db-instances](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html) 命令來檢視資料庫執行個體的 CA 詳細資訊。您可以使用 [describe-db-clusters](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-clusters.html) 命令，檢視多可用區域資料庫叢集 CA 的詳細資訊。

## 下載適用於 Amazon RDS 的憑證套件
<a name="UsingWithRDS.SSL.CertificatesDownload"></a>

當您使用 SSL 或 TLS 連線到資料庫時，資料庫執行個體需要來自 Amazon RDS 的信任憑證。在下表中選取適當的連結，以下載與您託管資料庫所在的 AWS 區域 對應的套件。

### 憑證套件依據 AWS 區域
<a name="UsingWithRDS.SSL.CertificatesAllRegions"></a>

所有 AWS 區域 和 GovCloud (US) 區域的憑證套件都包含下列根 CA 憑證：
+  `rds-ca-rsa2048-g1` 
+  `rds-ca-rsa4096-g1` 
+  `rds-ca-ecc384-g1` 

`rds-ca-rsa4096-g1` 和 `rds-ca-ecc384-g1` 憑證不適用於下列區域：
+ 亞太地區 (孟買)
+ 亞太地區 (墨爾本)
+ 加拿大西部 (卡加利)
+ 歐洲 (蘇黎世)
+ 歐洲 (西班牙)
+ 以色列 (特拉維夫)

您的應用程式信任存放區只需要註冊根 CA 憑證。請勿將中繼 CA 憑證註冊到您的信任存放區，因為這可能會在 RDS 自動輪換資料庫伺服器憑證時造成連線問題。

**注意**  
Amazon RDS Proxy 使用來自 AWS Certificate Manager (ACM) 的憑證。如果您是使用 RDS Proxy，您不需要下載 Amazon RDS 憑證或更新使用 RDS Proxy 連線的應用程式。如需詳細資訊，請參閱 [搭配 RDS Proxy 使用 TLS/SSL](rds-proxy.howitworks.md#rds-proxy-security.tls)。

若要下載 的憑證套件 AWS 區域，請在下表中選取 AWS 區域 託管資料庫的 連結。


|  **AWS 區域**  |  **憑證套件 (PEM)**  |  **憑證套件 (PKCS7)**  | 
| --- | --- | --- | 
| 任何商業 AWS 區域 |  [global-bundle.pem](https://truststore.pki.rds.amazonaws.com/global/global-bundle.pem)  |  [global-bundle.p7b](https://truststore.pki.rds.amazonaws.com/global/global-bundle.p7b)  | 
| 美國東部 (維吉尼亞北部) |  [us-east-1-bundle.pem](https://truststore.pki.rds.amazonaws.com/us-east-1/us-east-1-bundle.pem)  |  [us-east-1-bundle.p7b](https://truststore.pki.rds.amazonaws.com/us-east-1/us-east-1-bundle.p7b)  | 
| 美國東部 (俄亥俄) |  [us-east-2-bundle.pem](https://truststore.pki.rds.amazonaws.com/us-east-2/us-east-2-bundle.pem)  |  [us-east-2-bundle.p7b](https://truststore.pki.rds.amazonaws.com/us-east-2/us-east-2-bundle.p7b)  | 
| 美國西部 (加利佛尼亞北部) |  [us-west-1-bundle.pem](https://truststore.pki.rds.amazonaws.com/us-west-1/us-west-1-bundle.pem)  |  [us-west-1-bundle.p7b](https://truststore.pki.rds.amazonaws.com/us-west-1/us-west-1-bundle.p7b)  | 
| 美國西部 (奧勒岡) |  [us-west-2-bundle.pem](https://truststore.pki.rds.amazonaws.com/us-west-2/us-west-2-bundle.pem)  |  [us-west-2-bundle.p7b](https://truststore.pki.rds.amazonaws.com/us-west-2/us-west-2-bundle.p7b)  | 
| 非洲 (開普敦) |  [af-south-1-bundle.pem](https://truststore.pki.rds.amazonaws.com/af-south-1/af-south-1-bundle.pem)  |  [af-south-1-bundle.p7b](https://truststore.pki.rds.amazonaws.com/af-south-1/af-south-1-bundle.p7b)  | 
| 亞太區域 (香港) |  [ap-east-1-bundle.pem](https://truststore.pki.rds.amazonaws.com/ap-east-1/ap-east-1-bundle.pem)  |  [ap-east-1-bundle.p7b](https://truststore.pki.rds.amazonaws.com/ap-east-1/ap-east-1-bundle.p7b)  | 
| 亞太地區 (海德拉巴) |  [ap-south-2-bundle.pem](https://truststore.pki.rds.amazonaws.com/ap-south-2/ap-south-2-bundle.pem)  |  [ap-south-2-bundle.p7b](https://truststore.pki.rds.amazonaws.com/ap-south-2/ap-south-2-bundle.p7b)  | 
| 亞太地區 (雅加達) |  [ap-southeast-3-bundle.pem](https://truststore.pki.rds.amazonaws.com/ap-southeast-3/ap-southeast-3-bundle.pem)  |  [ap-southeast-3-bundle.p7b](https://truststore.pki.rds.amazonaws.com/ap-southeast-3/ap-southeast-3-bundle.p7b)  | 
| 亞太地區 (馬來西亞) |  [ap-southeast-5-bundle.pem](https://truststore.pki.rds.amazonaws.com/ap-southeast-5/ap-southeast-5-bundle.pem)  |  [ap-southeast-5-bundle.p7b](https://truststore.pki.rds.amazonaws.com/ap-southeast-5/ap-southeast-5-bundle.p7b)  | 
| 亞太地區 (墨爾本) |  [ap-southeast-4-bundle.pem](https://truststore.pki.rds.amazonaws.com/ap-southeast-4/ap-southeast-4-bundle.pem)  |  [ap-southeast-4-bundle.p7b](https://truststore.pki.rds.amazonaws.com/ap-southeast-4/ap-southeast-4-bundle.p7b)  | 
| 亞太地區 (孟買) |  [ap-south-1-bundle.pem](https://truststore.pki.rds.amazonaws.com/ap-south-1/ap-south-1-bundle.pem)  |  [ap-south-1-bundle.p7b](https://truststore.pki.rds.amazonaws.com/ap-south-1/ap-south-1-bundle.p7b)  | 
| 亞太區域 (大阪) |  [ap-northeast-3-bundle.pem](https://truststore.pki.rds.amazonaws.com/ap-northeast-3/ap-northeast-3-bundle.pem)  |  [ap-northeast-3-bundle.p7b](https://truststore.pki.rds.amazonaws.com/ap-northeast-3/ap-northeast-3-bundle.p7b)  | 
| 亞太區域 (泰國) |  [ap-southeast-7-bundle.pem](https://truststore.pki.rds.amazonaws.com/ap-southeast-7/ap-southeast-7-bundle.pem)  |  [ap-southeast-7-bundle.p7b](https://truststore.pki.rds.amazonaws.com/ap-southeast-7/ap-southeast-7-bundle.p7b)  | 
| 亞太地區 (東京) |  [ap-northeast-1-bundle.pem](https://truststore.pki.rds.amazonaws.com/ap-northeast-1/ap-northeast-1-bundle.pem)  |  [ap-northeast-1-bundle.p7b](https://truststore.pki.rds.amazonaws.com/ap-northeast-1/ap-northeast-1-bundle.p7b)  | 
| 亞太區域 (首爾) |  [ap-northeast-2-bundle.pem](https://truststore.pki.rds.amazonaws.com/ap-northeast-2/ap-northeast-2-bundle.pem)  |  [ap-northeast-2-bundle.p7b](https://truststore.pki.rds.amazonaws.com/ap-northeast-2/ap-northeast-2-bundle.p7b)  | 
| 亞太區域 (新加坡) |  [ap-southeast-1-bundle.pem](https://truststore.pki.rds.amazonaws.com/ap-southeast-1/ap-southeast-1-bundle.pem)  |  [ap-southeast-1-bundle.p7b](https://truststore.pki.rds.amazonaws.com/ap-southeast-1/ap-southeast-1-bundle.p7b)  | 
| 亞太區域 (雪梨) |  [ap-southeast-2-bundle.pem](https://truststore.pki.rds.amazonaws.com/ap-southeast-2/ap-southeast-2-bundle.pem)  |  [ap-southeast-2-bundle.p7b](https://truststore.pki.rds.amazonaws.com/ap-southeast-2/ap-southeast-2-bundle.p7b)  | 
| 加拿大 (中部) |  [ca-central-1-bundle.pem](https://truststore.pki.rds.amazonaws.com/ca-central-1/ca-central-1-bundle.pem)  |  [ca-central-1-bundle.p7b](https://truststore.pki.rds.amazonaws.com/ca-central-1/ca-central-1-bundle.p7b)  | 
| 加拿大西部 (卡加利) |  [ca-west-1-bundle.pem](https://truststore.pki.rds.amazonaws.com/ca-west-1/ca-west-1-bundle.pem)  |  [ca-west-1-bundle.p7b](https://truststore.pki.rds.amazonaws.com/ca-west-1/ca-west-1-bundle.p7b)  | 
| 歐洲 (法蘭克福) |  [eu-central-1-bundle.pem](https://truststore.pki.rds.amazonaws.com/eu-central-1/eu-central-1-bundle.pem)  |  [eu-central-1-bundle.p7b](https://truststore.pki.rds.amazonaws.com/eu-central-1/eu-central-1-bundle.p7b)  | 
| 歐洲 (愛爾蘭) |  [eu-west-1-bundle.pem](https://truststore.pki.rds.amazonaws.com/eu-west-1/eu-west-1-bundle.pem)  |  [eu-west-1-bundle.p7b](https://truststore.pki.rds.amazonaws.com/eu-west-1/eu-west-1-bundle.p7b)  | 
| 歐洲 (倫敦) |  [eu-west-2-bundle.pem](https://truststore.pki.rds.amazonaws.com/eu-west-2/eu-west-2-bundle.pem)  |  [eu-west-2-bundle.p7b](https://truststore.pki.rds.amazonaws.com/eu-west-2/eu-west-2-bundle.p7b)  | 
| 歐洲 (米蘭) |  [eu-south-1-bundle.pem](https://truststore.pki.rds.amazonaws.com/eu-south-1/eu-south-1-bundle.pem)  |  [eu-south-1-bundle.p7b](https://truststore.pki.rds.amazonaws.com/eu-south-1/eu-south-1-bundle.p7b)  | 
| 歐洲 (巴黎) |  [eu-west-3-bundle.pem](https://truststore.pki.rds.amazonaws.com/eu-west-3/eu-west-3-bundle.pem)  |  [eu-west-3-bundle.p7b](https://truststore.pki.rds.amazonaws.com/eu-west-3/eu-west-3-bundle.p7b)  | 
| 歐洲 (西班牙) |  [eu-south-2-bundle.pem](https://truststore.pki.rds.amazonaws.com/eu-south-2/eu-south-2-bundle.pem)  |  [eu-south-2-bundle.p7b](https://truststore.pki.rds.amazonaws.com/eu-south-2/eu-south-2-bundle.p7b)  | 
| 歐洲 (斯德哥爾摩) |  [eu-north-1-bundle.pem](https://truststore.pki.rds.amazonaws.com/eu-north-1/eu-north-1-bundle.pem)  |  [eu-north-1-bundle.p7b](https://truststore.pki.rds.amazonaws.com/eu-north-1/eu-north-1-bundle.p7b)  | 
| 歐洲 (蘇黎世) |  [eu-central-2-bundle.pem](https://truststore.pki.rds.amazonaws.com/eu-central-2/eu-central-2-bundle.pem)  |  [eu-central-2-bundle.p7b](https://truststore.pki.rds.amazonaws.com/eu-central-2/eu-central-2-bundle.p7b)  | 
| 以色列 (特拉維夫) |  [il-central-1-bundle.pem](https://truststore.pki.rds.amazonaws.com/il-central-1/il-central-1-bundle.pem)  |  [il-central-1-bundle.p7b](https://truststore.pki.rds.amazonaws.com/il-central-1/il-central-1-bundle.p7b)  | 
| 墨西哥 (中部) |  [mx-central-1-bundle.pem](https://truststore.pki.rds.amazonaws.com/mx-central-1/mx-central-1-bundle.pem)  |  [mx-central-1-bundle.p7b](https://truststore.pki.rds.amazonaws.com/mx-central-1/mx-central-1-bundle.p7b)  | 
| Middle East (Bahrain) |  [me-south-1-bundle.pem](https://truststore.pki.rds.amazonaws.com/me-south-1/me-south-1-bundle.pem)  |  [me-south-1-bundle.p7b](https://truststore.pki.rds.amazonaws.com/me-south-1/me-south-1-bundle.p7b)  | 
| 中東 (阿拉伯聯合大公國) |  [me-central-1-bundle.pem](https://truststore.pki.rds.amazonaws.com/me-central-1/me-central-1-bundle.pem)  |  [me-central-1-bundle.p7b](https://truststore.pki.rds.amazonaws.com/me-central-1/me-central-1-bundle.p7b)  | 
| 南美洲 (聖保羅) |  [sa-east-1-bundle.pem](https://truststore.pki.rds.amazonaws.com/sa-east-1/sa-east-1-bundle.pem)  |  [sa-east-1-bundle.p7b](https://truststore.pki.rds.amazonaws.com/sa-east-1/sa-east-1-bundle.p7b)  | 
| 任何 AWS GovCloud (US) Region |  [global-bundle.pem](https://truststore.pki.us-gov-west-1.rds.amazonaws.com/global/global-bundle.pem)  |  [global-bundle.p7b](https://truststore.pki.us-gov-west-1.rds.amazonaws.com/global/global-bundle.p7b)  | 
| AWS GovCloud （美國東部） |  [us-gov-east-1-bundle.pem](https://truststore.pki.us-gov-west-1.rds.amazonaws.com/us-gov-east-1/us-gov-east-1-bundle.pem)  |  [us-gov-east-1-bundle.p7b](https://truststore.pki.us-gov-west-1.rds.amazonaws.com/us-gov-east-1/us-gov-east-1-bundle.p7b)  | 
| AWS GovCloud （美國西部） |  [us-gov-west-1-bundle.pem](https://truststore.pki.us-gov-west-1.rds.amazonaws.com/us-gov-west-1/us-gov-west-1-bundle.pem)  |  [us-gov-west-1-bundle.p7b](https://truststore.pki.us-gov-west-1.rds.amazonaws.com/us-gov-west-1/us-gov-west-1-bundle.p7b)  | 

### 檢視 CA 憑證的內容
<a name="UsingWithRDS.SSL.CertificatesDownload.viewing"></a>

若要查看 CA 憑證套件的內容，請使用下列命令：

```
keytool -printcert -v -file global-bundle.pem
```

# 輪換您的 SSL/TLS 憑證
<a name="UsingWithRDS.SSL-certificate-rotation"></a>

Amazon RDS 憑證授權機構憑證 rds-ca-2019 已於 2024 年 8 月到期。如果您使用或計劃使用 Secure Sockets Layer (SSL) 或 Transport Layer Security (TLS) 搭配憑證驗證連線至 RDS 資料庫執行個體或多可用區域資料庫叢集，請考慮使用新的 CA 憑證 rds-ca-rsa2048-g1、rds-ca-rsa4096-g1 或 rds-ca-ecc384-g1。如果您目前未將 SSL/TLS 與憑證驗證搭配使用，則可能仍有過期的 CA 憑證，而且如果您計劃將 SSL/TLS 與憑證驗證搭配使用以連線至 RDS 資料庫，則必須將其更新為新的 CA 憑證。

Amazon RDS 提供新的 CA 憑證做為 AWS 安全最佳實務。如需新憑證和支援 AWS 區域的相關資訊，請參閱 [使用 SSL/TLS 加密與資料庫執行個體或叢集的連線](UsingWithRDS.SSL.md) 。

若要更新資料庫的 CA 憑證，請使用下列方法：
+  [透過修改資料庫執行個體或叢集來更新憑證授權機構憑證](#UsingWithRDS.SSL-certificate-rotation-updating) 
+  [透過套用維護來更新憑證授權機構憑證](#UsingWithRDS.SSL-certificate-rotation-maintenance-update) 

在更新您的資料庫執行個體或多可用區域資料庫叢集以使用新的 CA 憑證之前，請確定您已更新連線至 RDS 資料庫的用戶端或應用程式。

## 輪換憑證的考量
<a name="UsingWithRDS.SSL-certificate-rotation-considerations"></a>

在輪換憑證之前，請考量下列情況：
+ Amazon RDS Proxy 使用來自 AWS Certificate Manager (ACM) 的憑證。如果您使用 RDS Proxy，當您輪換 SSL/TLS 憑證時，不需要更新使用 RDS Proxy 連線的應用程式。如需詳細資訊，請參閱 [搭配 RDS Proxy 使用 TLS/SSL](rds-proxy.howitworks.md#rds-proxy-security.tls)。
+ 如果您使用的 Go 1.15 版應用程式是搭配在 2020 年 7 月 28 日前建立或更新為 rds-ca-2019 憑證的資料庫執行個體或多可用區域資料庫叢集，則您必須再次更新憑證。根據您的引擎，將憑證更新為 rds-ca-rsa2048-g1、rds-ca-rsa4096-g1 或 rds-ca-ecc384-g1。

  使用新的 CA 憑證識別符，將 `modify-db-instance` 命令用於資料庫執行個體，或將 `modify-db-cluster` 命令用於多可用區域資料庫叢集。您可以使用 `describe-db-engine-versions` 命令，尋找適用於特定資料庫引擎和資料庫引擎版本的 CA。

  如果您是在 2020 年 7 月 28 日之後建立資料庫或更新其憑證，則不需要執行任何動作。如需詳細資訊，請參閱 [Go GitHub 問題編號 39568](https://github.com/golang/go/issues/39568)。

## 透過修改資料庫執行個體或叢集來更新憑證授權機構憑證
<a name="UsingWithRDS.SSL-certificate-rotation-updating"></a>

以下範例會將您的 CA 憑證從 *rds-ca-2019* 更新為 *rds-ca-rsa2048-g1*。您可以選擇不同的憑證。如需詳細資訊，請參閱 [憑證授權單位](UsingWithRDS.SSL.md#UsingWithRDS.SSL.RegionCertificateAuthorities)。

更新您的應用程式信任存放區，以減少與更新 CA 憑證相關聯的任何停機時間。如需與 CA 憑證輪換相關聯重新啟動的詳細資訊，請參閱 [自動伺服器憑證輪換](#UsingWithRDS.SSL-certificate-rotation-server-cert-rotation)。

**透過修改資料庫執行個體或叢集來更新 CA 憑證**

1. 請遵循 [使用 SSL/TLS 加密與資料庫執行個體或叢集的連線](UsingWithRDS.SSL.md) 所述，下載新的 SSL/TLS 憑證。

1. 更新您的應用程式，以使用新的 SSL/TLS 憑證。

   更新應用程式 SSL/TLS 憑證的方法取決於您特定的應用程式。與應用程式開發人員合作更新應用程式的 SSL/TLS 憑證。

   如需針對每個資料庫引擎檢查 SSL/TLS 連線和更新應用程式的資訊，請參閱下列主題：
   +  [更新應用程式，以使用新的 SSL/TLS 憑證連線至 MariaDB 執行個體](ssl-certificate-rotation-mariadb.md) 
   +  [將應用程式更新為使用新的 SSL/TLS 憑證來連線至 Microsoft SQL Server 資料庫執行個體](ssl-certificate-rotation-sqlserver.md) 
   +  [將應用程式更新為使用新的 SSL/TLS 憑證來連線至 MySQL 資料庫執行個體](ssl-certificate-rotation-mysql.md) 
   +  [更新應用程式使用新的 SSL/TLS 憑證來連線至 Oracle 資料庫執行個體](ssl-certificate-rotation-oracle.md) 
   +  [更新應用程式使用新的 SSL/TLS 憑證來連線至 PostgreSQL 資料庫執行個體](ssl-certificate-rotation-postgresql.md) 

   關於為 Linux 作業系統更新信任存放區的範例指令碼，請參閱 [將憑證匯入信任存放區的範例指令碼](#UsingWithRDS.SSL-certificate-rotation-sample-script)。
**注意**  
憑證套件同時包含舊 CA 和新 CA 的憑證，讓您可以安全地更新應用程式，並在轉換期間維護連線。如果您使用 AWS Database Migration Service 將資料庫遷移至資料庫執行個體或叢集，我們建議您使用憑證套件來確保遷移期間的連線。

1. 修改資料庫執行個體或多可用區域資料庫叢集，以將 CA 從 **rds-ca-2019** 變更為 **rds-ca-rsa2048-g1**。若要檢查資料庫是否需要重新啟動才能更新 CA 憑證，請使用 [describe-db-engine-versions](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-engine-versions.html) 命令並查看 `SupportsCertificateRotationWithoutRestart` 旗標。
**重要**  
如果您在憑證到期後發生連線問題，請在主控台中指定 **Apply immediately (立即套用)**，或使用 `--apply-immediately` 來指定 AWS CLI選項。依預設，此操作排定在下一個維護時段執行。  
對於 RDS for Oracle 資料庫執行個體，建議您重新啟動 Oracle 資料庫，以防止任何連線錯誤。  
對於已啟用 AlwaysOn 或鏡像選項的 RDS for SQL Server 多可用區執行個體，在憑證輪換後將執行個體重新開機時，預期會發生容錯移轉。  
若要為您的執行個體 CA 設定與預測 RDS CA 不同的覆寫，請使用 [modify-certificates](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-certificates.html) CLI 命令。

您可以使用 AWS 管理主控台 或 AWS CLI ，將資料庫執行個體或多可用區域資料庫叢集的 CA 憑證從 **rds-ca-2019** 變更為 **rds-ca-rsa2048-g1**。

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

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

1. 在導覽窗格中選擇**資料庫**，然後選擇您要修改的資料庫執行個體或多可用區域資料庫叢集。

1. 選擇 **Modify** (修改)。  
![\[修改資料庫執行個體或多可用區域資料庫叢集\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/ssl-rotate-cert-modify.png)

1. 在**連線**區段中，選擇 **rds-ca-rsa2048-g1**。  
![\[選擇 CA 憑證\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/ssl-rotate-cert-ca-rsa2048-g1.png)

1. 選擇 **Continue (繼續)**，並檢查修改的摘要。

1. 若要立即套用變更，請選擇 **Apply immediately** (立即套用)。

1. 在確認頁面上，檢閱您的變更。如果都正確，請選擇**修改資料庫執行個體**或**修改叢集**，以儲存您的變更。
**重要**  
排定此操作時，請確定您事先已更新用戶端信任存放區。

   或者，選擇 **Back (上一步)** 以編輯變更，或是選擇 **Cancel (取消)** 以取消變更。

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

若要使用 AWS CLI 將資料庫執行個體或多可用區域資料庫叢集的 CA 從 **rds-ca-2019** 變更為 **rds-ca-rsa2048-g1**，請呼叫 [modify-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) 或 [modify-db-cluster](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-cluster.html) 命令。指定資料庫執行個體或叢集識別符和 `--ca-certificate-identifier` 選項。

使用 `--apply-immediately` 參數以立即套用更新。依預設，此操作排定在下一個維護時段執行。

**重要**  
排定此操作時，請確定您事先已更新用戶端信任存放區。

**Example**  
 **資料庫執行個體**   
以下範例會將 CA 憑證設定為 `rds-ca-rsa2048-g1`，藉此修改 `mydbinstance`。  
針對 Linux、macOS 或 Unix：  

```
aws rds modify-db-instance \
    --db-instance-identifier mydbinstance \
    --ca-certificate-identifier rds-ca-rsa2048-g1
```
在 Windows 中：  

```
aws rds modify-db-instance ^
    --db-instance-identifier mydbinstance ^
    --ca-certificate-identifier rds-ca-rsa2048-g1
```
如果您的執行個體需要重新開機，可以使用 [modify-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) CLI 命令並指定 `--no-certificate-rotation-restart` 選項。

**Example**  
 **多可用區域資料庫叢集**   
以下範例會將 CA 憑證設定為 `rds-ca-rsa2048-g1`，藉此修改 `mydbcluster`。  
針對 Linux、macOS 或 Unix：  

```
aws rds modify-db-cluster \
    --db-cluster-identifier mydbcluster \
    --ca-certificate-identifier rds-ca-rsa2048-g1
```
在 Windows 中：  

```
aws rds modify-db-cluster ^
    --db-cluster-identifier mydbcluster ^
    --ca-certificate-identifier rds-ca-rsa2048-g1
```

------

## 透過套用維護來更新憑證授權機構憑證
<a name="UsingWithRDS.SSL-certificate-rotation-maintenance-update"></a>

透過套用維護，執行下列步驟來套用 CA 憑證。

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

**透過套用維護來更新 CA 憑證**

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

1. 在導覽窗格中，選擇**憑證更新**。  
![\[憑證輪換導覽窗格選項\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/ssl-rotate-cert-certupdate.png)

   **需要更新憑證的資料庫**頁面隨即顯示。  
![\[更新資料庫的 CA 憑證\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/ssl-rotate-cert-update-multiple.png)
**注意**  
此頁面僅顯示目前 的資料庫執行個體和叢集 AWS 區域。如果您在多個資料庫中有資料庫 AWS 區域，請檢查每個資料庫的此頁面 AWS 區域 ，以查看具有舊 SSL/TLS 憑證的所有資料庫執行個體。

1. 選擇您要更新的資料庫執行個體或多可用區域資料庫叢集。

   您可以選擇**排程**，以排定下一個維護時段的憑證輪換。您可以選擇**立即套用**以立即套用輪換。
**重要**  
如果在憑證到期後發生連線問題，請使用**立即套用**選項。

1. 

   1. 如果您選擇**排程**，系統會提示您確認 CA 憑證輪換。此提示也會指出排定的更新時段。  
![\[確認憑證輪換\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/ssl-rotate-cert-confirm-schedule.png)

   1. 如果您選擇**立即套用**，系統會提示您確認 CA 憑證輪換。  
![\[確認憑證輪換\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/ssl-rotate-cert-confirm-now.png)
**重要**  
在資料庫上排定 CA 憑證輪換之前，請先更新使用 SSL/TLS 的任何用戶端應用程式和要連結伺服器憑證。這些更新專屬於您的資料庫引擎。更新這些用戶端應用程式之後，您可以確認 CA 憑證輪換。

   若要繼續，請選擇核取方塊，然後選擇 **Confirm (確認)**。

1. 針對您要更新的每個資料庫執行個體和叢集重複步驟 3 和 4。

------

## 自動伺服器憑證輪換
<a name="UsingWithRDS.SSL-certificate-rotation-server-cert-rotation"></a>

如果您的根 CA 支援自動伺服器憑證輪換，RDS 會自動處理資料庫伺服器憑證的輪換。RDS 會使用相同的根 CA 進行此自動輪換，因此您不需要下載新的 CA 套件。請參閱 [憑證授權單位](UsingWithRDS.SSL.md#UsingWithRDS.SSL.RegionCertificateAuthorities)。

資料庫伺服器憑證的輪換和有效期取決於資料庫引擎：
+ 如果您的資料庫引擎支援在不重新啟動的情況下輪換，則 RDS 會自動輪換資料庫伺服器憑證，而不需要您採取任何動作。RDS 會嘗試在資料庫伺服器憑證有效期過半時，在您偏好的維護時段內輪換您的資料庫伺服器憑證。新的資料庫伺服器憑證有效期為 12 個月。
+ 如果您的資料庫引擎不支援在未重新啟動的情況下輪換，Amazon RDS 會透過 Describe-pending-maintenance-actions API、憑證的一半生命週期，或在過期前至少 3 個月顯示`server-certificate-rotation`待定維護動作。您可以使用 apply-pending-maintenance-action API 來套用輪換。新的資料庫伺服器憑證有效期為 36 個月。

使用 [describe-db-engine-versions](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-engine-versions.html) 命令並檢查 `SupportsCertificateRotationWithoutRestart` 旗標，以確定資料庫引擎版本是否支援在不重新啟動的情況下輪換憑證。如需詳細資訊，請參閱 [設定資料庫的 CA](UsingWithRDS.SSL.md#UsingWithRDS.SSL.RegionCertificateAuthorities.Selection)。

## 將憑證匯入信任存放區的範例指令碼
<a name="UsingWithRDS.SSL-certificate-rotation-sample-script"></a>

以下是範例 Shell 指令碼，會將憑證套件匯入信任存放區。

每個範例 Shell 指令碼都使用 keytool，其是 Java 開發套件 (JDK) 的一部分。如需安裝 JDK 的詳細資訊，請參閱《[JDK 安裝指南](https://docs.oracle.com/en/java/javase/17/install/overview-jdk-installation.html)》。

------
#### [ Linux ]

以下範例 Shell 指令碼將憑證套件匯入 Linux 作業系統上的信任存放區。

```
mydir=tmp/certs
if [ ! -e "${mydir}" ]
then
mkdir -p "${mydir}"
fi truststore=${mydir}/rds-truststore.jks storepassword=changeit

curl -sS "https://truststore.pki.rds.amazonaws.com/global/global-bundle.pem"> ${mydir}/global-bundle.pem
awk 'split_after == 1 {n++;split_after=0} /-----END CERTIFICATE-----/ {split_after=1}{print > "rds-ca-" n+1 ".pem"}' < ${mydir}/global-bundle.pem

for CERT in rds-ca-*; do alias=$(openssl x509 -noout -text -in $CERT | perl -ne 'next unless /Subject:/; s/.*(CN=|CN = )//; print')
  echo "Importing $alias"
  keytool -import -file ${CERT} -alias "${alias}" -storepass ${storepassword} -keystore ${truststore} -noprompt
  rm $CERT
done

rm ${mydir}/global-bundle.pem

echo "Trust store content is: "

keytool -list -v -keystore "$truststore" -storepass ${storepassword} | grep Alias | cut -d " " -f3- | while read alias 
do expiry=`keytool -list -v -keystore "$truststore" -storepass ${storepassword} -alias "${alias}" | grep Valid | perl -ne 'if(/until: (.*?)\n/) { print "$1\n"; }'`
   echo " Certificate ${alias} expires in '$expiry'" 
done
```

------
#### [ macOS ]

以下是範例 Shell 指令碼，會將憑證套件匯入 macOS 上的信任存放區。

```
mydir=tmp/certs
if [ ! -e "${mydir}" ]
then
mkdir -p "${mydir}"
fi truststore=${mydir}/rds-truststore.jks storepassword=changeit

curl -sS "https://truststore.pki.rds.amazonaws.com/global/global-bundle.pem"> ${mydir}/global-bundle.pem
split -p "-----BEGIN CERTIFICATE-----" ${mydir}/global-bundle.pem rds-ca-

for CERT in rds-ca-*; do alias=$(openssl x509 -noout -text -in $CERT | perl -ne 'next unless /Subject:/; s/.*(CN=|CN = )//; print')
  echo "Importing $alias"
  keytool -import -file ${CERT} -alias "${alias}" -storepass ${storepassword} -keystore ${truststore} -noprompt
  rm $CERT
done

rm ${mydir}/global-bundle.pem

echo "Trust store content is: "

keytool -list -v -keystore "$truststore" -storepass ${storepassword} | grep Alias | cut -d " " -f3- | while read alias 
do expiry=`keytool -list -v -keystore "$truststore" -storepass ${storepassword} -alias "${alias}" | grep Valid | perl -ne 'if(/until: (.*?)\n/) { print "$1\n"; }'`
   echo " Certificate ${alias} expires in '$expiry'" 
done
```

------

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

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

## 服務和內部部署用戶端與應用程式之間的流量。
<a name="inter-network-traffic-privacy-on-prem"></a>

您的私有網路與 之間有兩個連線選項 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 操作，透過網路存取 Amazon RDS 。使用者端必須支援下列專案：
+ Transport Layer Security (TLS)。我們需要 TLS 1.2 並建議使用 TLS 1.3。
+ 具備完美轉送私密(PFS)的密碼套件，例如 DHE (Ephemeral Diffie-Hellman)或 ECDHE (Elliptic Curve Ephemeral Diffie-Hellman)。現代系統(如 Java 7 和更新版本)大多會支援這些模式。

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

# Amazon RDS 的 Identity and access management
<a name="UsingWithRDS.IAM"></a>





AWS Identity and Access Management (IAM) 是 AWS 服務 ，可協助管理員安全地控制對 AWS 資源的存取。IAM 管理員可控制哪些人員可*進行身分驗證* (登入) 並*獲得授權* (具有許可) 以使用 Amazon RDS 資源。IAM 是您可以免費使用 AWS 服務 的 。

**Topics**
+ [

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

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

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

# Amazon RDS 如何搭配 IAM 運作
](security_iam_service-with-iam.md)
+ [

# Amazon RDS 以身分為基礎的政策範例
](security_iam_id-based-policy-examples.md)
+ [

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

# Amazon RDS 的 AWS 受管政策更新
](rds-manpol-updates.md)
+ [

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

# 適用於 MariaDB、MySQL 和 PostgreSQL 的 IAM 資料庫身分驗證
](UsingWithRDS.IAMDBAuth.md)
+ [

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

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

您使用 AWS Identity and Access Management (IAM) 的方式會有所不同，取決於您在 Amazon RDS 中執行的工作。

**服務使用者** – 若您使用 Amazon RDS 來執行任務，您的管理員可以提供您需要的登入資料和許可。隨著您為了執行作業而使用的 Amazon RDS 功能數量變多，您可能會需要額外的許可。了解存取的管理方式可協助您向管理員請求正確的許可。若您無法存取 Amazon RDS 中的某項功能，請參閱[對 Amazon RDS 身分與存取進行故障診斷](security_iam_troubleshoot.md)。

**服務管理員** – 若您在公司負責管理 Amazon RDS 資源，您應該具備 Amazon RDS 的完整存取權限。您的任務是判斷員工應存取的 Amazon RDS 功能及資源。您接著必須將請求提交給您的 管理員，來變更您服務使用者的許可。檢閱此頁面上的資訊，了解 IAM 的基本概念。若要進一步了解您公司可搭配 Amazon RDS 使用 IAM 的方式，請參閱 [Amazon RDS 如何搭配 IAM 運作](security_iam_service-with-iam.md)。

**管理員** - 如果您是管理員，請了解如何撰寫政策來管理 Amazon RDS 存取權的詳細資訊。若要檢視您可以在 IAM 中使用的範例 Amazon RDS 身分類型政策，請參閱 [Amazon RDS 以身分為基礎的政策範例](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-federatedidentity"></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)*是一種身分具備單人或應用程式的特定許可權。我們建議使用臨時憑證，而不是具有長期使用權憑證的 IAM 使用者。如需詳細資訊，請參閱《*IAM 使用者指南*》中的[要求人類使用者使用聯合身分提供者來 AWS 使用臨時憑證存取](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#bp-users-federation-idp) 。

[https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html](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 資料庫身分驗證來驗證您的資料庫執行個體。

IAM 資料庫身分驗證使用下列資料庫引擎：
+ RDS for MariaDB
+ RDS for MySQL
+ RDS for PostgreSQL

如需使用 IAM 驗證資料庫執行個體身分的詳細資訊，請參閱 [適用於 MariaDB、MySQL 和 PostgreSQL 的 IAM 資料庫身分驗證](UsingWithRDS.IAMDBAuth.md)。

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

*[IAM 角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)*是 中具有特定許可 AWS 帳戶 的身分。它與使用者相似，但是不會與特定人員建立關聯。您可以切換角色，暫時在 中擔任 IAM AWS 管理主控台 [角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-console.html)。您可以透過呼叫 AWS CLI 或 AWS API 操作或使用自訂 URL 來擔任角色。如需使用角色的方法詳細資訊，請參閱 *IAM 使用者指南*中的[使用 IAM 角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html)。

使用暫時憑證的 IAM 角色在下列情況中非常有用：
+ **暫時使用者許可** - 使用者可以擔任 IAM 角色來暫時針對特定任務採用不同的許可。
+ **聯合身分使用者存取** — 如需向聯合身分指派許可，請建立角色，並為角色定義許可。當聯合身分進行身分驗證時，該身分會與角色建立關聯，並獲授予由角色定義的許可。如需有關聯合角色的相關資訊，請參閱《*IAM 使用者指南*》中的[為第三方身分提供者 (聯合) 建立角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-idp.html)。如果您使用 IAM Identity Center，則需要設定許可集。為控制身分驗證後可以存取的內容，IAM Identity Center 將許可集與 IAM 中的角色相關聯。如需有關許可集的資訊，請參閱《*AWS IAM Identity Center 使用者指南*》中的[許可集](https://docs.aws.amazon.com/singlesignon/latest/userguide/permissionsetsconcept.html)。
+ **跨帳戶存取權**：您可以使用 IAM 角色，允許不同帳戶中的某人 (信任的主體) 存取您帳戶的資源。角色是授予跨帳戶存取權的主要方式。不過，對於某些 AWS 服務，您可以直接將政策連接到資源 （而不是使用角色做為代理）。如需了解使用角色和資源型政策進行跨帳戶存取之間的差異，請參閱*IAM 使用者指南*中的 [IAM 角色與資源類型政策的差異](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_compare-resource-policies.html)。
+ **跨服務存取** – 有些 AWS 服務 使用其他 中的功能 AWS 服務。例如，當您在服務中進行呼叫時，該服務通常會在 Amazon EC2 中執行應用程式或將物件儲存在 Amazon Simple Storage Service (Amazon S3) 中。服務可能會使用呼叫主體的許可、使用服務角色或使用服務連結角色來執行此作業。
  + **轉送存取工作階段** – 轉送存取工作階段 (FAS) 使用呼叫 的委託人許可 AWS 服務，並結合 AWS 服務 請求向下游服務提出請求。如需提出 FAS 請求時的政策詳細資訊，請參閱[轉發存取工作階段](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_forward_access_sessions.html)。
  + **服務角色** – 服務角色是服務擔任的 [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)。
  + **服務連結角色** – 服務連結角色是一種連結至 的服務角色。 AWS 服務服務可以擔任代表您執行動作的角色。服務連結角色會出現在您的 中 AWS 帳戶 ，並由服務擁有。IAM 管理員可以檢視，但不能編輯服務連結角色的許可。
+ **在 Amazon EC2 上執行的應用程式** – 您可以使用 IAM 角色來管理在 EC2 執行個體上執行之應用程式的臨時登入資料，以及提出 AWS CLI 或 AWS API 請求。這是在 EC2 執行個體內儲存存取金鑰的較好方式。若要將 AWS 角色指派給 EC2 執行個體並將其提供給其所有應用程式，您可以建立連接至執行個體的執行個體描述檔。執行個體設定檔包含該角色，並且可讓 EC2 執行個體上執行的程式取得臨時憑證。如需詳細資訊，請參閱 *IAM 使用者指南*中的[使用 IAM 角色來授予許可權給 Amazon EC2 執行個體上執行的應用程式](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2.html)。

若要了解是否要使用 IAM 角色，請參閱《IAM 使用者指南》**中的[何時建立 IAM 角色 (而不是使用者)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id.html#id_which-to-choose_role)。

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

您可以透過 AWS 建立政策並將其連接到 IAM 身分或 AWS 資源來控制 中的存取。政策是 中的物件， AWS 當與身分或資源建立關聯時， 會定義其許可。當實體 （根使用者、使用者或 IAM 角色） 發出請求時， 會 AWS 評估這些政策。政策中的許可決定是否允許或拒絕請求。大多數政策會以 JSON 文件 AWS 的形式存放在 中。如需 JSON 政策文件結構和內容的詳細資訊，請參閱《*IAM 使用者指南*》中的 [JSON 政策概觀](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#access_policies-json)。

管理員可以使用政策來指定誰可以存取 AWS 資源，以及他們可以對這些資源執行哪些動作。每個 IAM 實體 (許可集或角色) 在開始時都沒有許可。換句話說，根據預設，使用者什麼都不做，甚至無法變更自己的密碼。若要授予使用者執行動作的許可，管理員必須將許可政策連接到使用者。或者，管理員可以將使用者新增到具備預定許可的群組。管理員將許可給予群組時，該群組中的所有使用者都會獲得那些許可。

IAM 政策定義該動作的許可，無論您使用何種方法來執行操作。例如，假設您有一個允許 `iam:GetRole` 動作的政策。具有該政策的使用者可以從 AWS 管理主控台 AWS CLI、 或 API AWS 取得角色資訊。

### 身分型政策
<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)。

身分型政策可進一步分類成*內嵌政策*或*受管政策*。內嵌政策會直接內嵌到單一許可集或角色。受管政策是獨立的政策，您可以連接到 AWS 帳戶中的多個許可集和角色。受管政策包括 AWS 受管政策和客戶受管政策。如需了解如何在受管政策及內嵌政策間選擇，請參閱 *IAM 使用者指南*中的[在受管政策和內嵌政策間選擇](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#choosing-managed-or-inline)。

如需 Amazon RDS 特定 AWS 受管政策的相關資訊，請參閱 [AWS Amazon RDS 的 受管政策](rds-security-iam-awsmanpol.md)。

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

AWS 支援其他較不常見的政策類型。這些政策類型可設定較常見政策類型授予您的最大許可。
+ **許可界限**：許可界限是一種進階功能，可供您設定身分型政策能授予 IAM 實體 (許可集或角色) 的最大許可。您可以為實體設定許可界限。所產生的許可會是實體的身分型政策和其許可界限的交集。會在 `Principal` 欄位中指定許可集或角色的資源型政策則不會受到許可界限限制。任何這些政策中的明確拒絕都會覆寫允許。如需許可界限的詳細資訊，請參閱《*IAM 使用者指南*》中的 [IAM 實體許可界限](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html)。
+ **服務控制政策 SCPs)** – SCPs是 JSON 政策，可指定 中組織或組織單位 (OU) 的最大許可 AWS Organizations。 AWS Organizations 是一種服務，用於分組和集中管理您企業擁有的多個 AWS 帳戶。若您啟用組織中的所有功能，您可以將服務控制政策 (SCP) 套用到任何或所有帳戶。SCP 會限制成員帳戶中實體的許可，包括每個實體 AWS 帳戶根使用者。如需 Organizations 和 SCP 的詳細資訊，請參閱 *AWS Organizations 使用者指南*中的 [SCP 運作方式](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_about-scps.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 RDS 如何搭配 IAM 運作
<a name="security_iam_service-with-iam"></a>

在您使用 IAM 管理 Amazon RDS 的存取權前，建議您先了解可搭配 Amazon RDS 使用的 IAM 功能有哪些。

下表列出您可以搭配 Amazon RDS 使用的 IAM 功能：


| IAM 功能 | Amazon RDS 支援 | 
| --- | --- | 
|  [身分型政策](#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)  |  是  | 
|  [政策條件索引鍵 (服務特定)](#UsingWithRDS.IAM.Conditions)  |  是  | 
|  [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)  |  是  | 

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

**Topics**
+ [

## Amazon RDS 以身分為基礎的政策
](#security_iam_service-with-iam-id-based-policies)
+ [

## Amazon RDS 內以資源為基礎的政策
](#security_iam_service-with-iam-resource-based-policies)
+ [

## Amazon RDS 的政策動作
](#security_iam_service-with-iam-id-based-policies-actions)
+ [

## Amazon RDS 的政策資源
](#security_iam_service-with-iam-id-based-policies-resources)
+ [

## Amazon RDS 的政策條件金鑰
](#UsingWithRDS.IAM.Conditions)
+ [

## Amazon RDS 中的存取控制清單 (ACL)
](#security_iam_service-with-iam-acls)
+ [

## 政策中具有 Amazon RDS 標籤的以屬性為基礎存取控制 Attribute-based access control (ABAC)
](#security_iam_service-with-iam-tags)
+ [

## 將暫時登入資料與 Amazon RDS 搭配使用
](#security_iam_service-with-iam-roles-tempcreds)
+ [

## Amazon RDS 的轉寄存取工作階段
](#security_iam_service-with-iam-principal-permissions)
+ [

## Amazon RDS 的服務角色
](#security_iam_service-with-iam-roles-service)
+ [

## Amazon RDS 的服務連結角色
](#security_iam_service-with-iam-roles-service-linked)

## Amazon RDS 以身分為基礎的政策
<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)。

### Amazon RDS 以身分為基礎的政策範例
<a name="security_iam_service-with-iam-id-based-policies-examples"></a>

若要檢視 Amazon RDS 身分類型政策的範例，請參閱 [Amazon RDS 以身分為基礎的政策範例](security_iam_id-based-policy-examples.md)。

## Amazon RDS 內以資源為基礎的政策
<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 實體作為資源型政策的主體。如需詳細資訊，請參閱《*IAM 使用者指南*》中的 [IAM 中的快帳戶資源存取](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-cross-account-resource-access.html)。

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

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

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

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

Amazon RDS 中的政策動作會在動作前使用以下前綴：`rds:`。例如，若要授予某人使用 Amazon RDS `DescribeDBInstances` API 操作描述資料庫執行個體的許可，請在其政策中包含 `rds:DescribeDBInstances` 動作。政策陳述式必須包含 `Action` 或 `NotAction` 元素。Amazon RDS 會定義自己的一組動作，描述您可以使用此服務執行的任務。

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

```
"Action": [
      "rds:action1",
      "rds:action2"
```

您也可以使用萬用字元 (\$1) 來指定多個動作。例如，如需指定開頭是 `Describe` 文字的所有動作，請包含以下動作：

```
"Action": "rds:Describe*"
```



若要查看 Amazon RDS 動作的清單，請參閱*服務授權參考*中的 [Amazon RDS 定義的動作](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonrds.html#amazonrds-actions-as-permissions)。

## Amazon RDS 的政策資源
<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": "*"
```

資料庫執行個體資源具有以下 Amazon Resource Name (ARN)。

```
arn:${Partition}:rds:${Region}:${Account}:{ResourceType}/${Resource}
```

如需 ARNs 格式的詳細資訊，請參閱 [Amazon Resource Name (ARNs AWS 和服務命名空間](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html)。

例如，若要在陳述式中指定 `dbtest` 資料庫執行個體，請使用以下 ARN。

```
"Resource": "arn:aws:rds:us-west-2:123456789012:db:dbtest"
```

若要指定屬於特定帳戶的所有資料庫執行個體，請使用萬用字元 (\$1)。

```
"Resource": "arn:aws:rds:us-east-1:123456789012:db:*"
```

有些 RDS API 操作 (例如用來建立資源的操作)，無法在特定資源上執行。在這些情況下，請使用萬用字元 (\$1)。

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

許多 Amazon RDS API 操作都涉及多個資源。例如，`CreateDBInstance` 會建立資料庫執行個體。建立資料庫執行個體時，您可指定 使用者必須使用特定的安全群組和參數群組。若要在單一陳述式中指定多項資源，請使用逗號分隔 ARN。

```
"Resource": [
      "resource1",
      "resource2"
```

若要查看 Amazon RDS 資源類型及其 ARN 的詳細資訊，請參閱*服務授權參考*中的 [Amazon RDS 定義的資源](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonrds.html#amazonrds-resources-for-iam-policies)。若要了解您可以使用哪些動作指定每個資源的 ARN，請參閱 [Amazon RDS 定義的動作](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonrds.html#amazonrds-actions-as-permissions)。

## Amazon RDS 的政策條件金鑰
<a name="UsingWithRDS.IAM.Conditions"></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)。

Amazon RDS 會定義自己的一組條件金鑰，也支援一些全域條件金鑰的使用。若要查看所有 AWS 全域條件索引鍵，請參閱《*IAM 使用者指南*》中的[AWS 全域條件內容索引鍵](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html)。



 所有 RDS API 操作均支援 `aws:RequestedRegion` 條件金鑰。

若要查看 Amazon RDS 條件金鑰清單, 請參閱*服務授權參考*中的 [Amazon RDS 的條件金鑰](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonrds.html#amazonrds-policy-keys)。若要了解您可以搭配哪些動作和資源使用條件金鑰，請參閱 [Amazon RDS 定義的動作](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonrds.html#amazonrds-actions-as-permissions)。

## Amazon RDS 中的存取控制清單 (ACL)
<a name="security_iam_service-with-iam-acls"></a>

**支援存取控制清單 (ACL)：**否

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

## 政策中具有 Amazon RDS 標籤的以屬性為基礎存取控制 Attribute-based access control (ABAC)
<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)。

如需標記 Amazon RDS 資源的詳細資訊，請參閱[指定條件：使用自訂標籤](UsingWithRDS.IAM.SpecifyingCustomTags.md)。若要檢視身分型原則範例，以根據該資源上的標籤來限制存取資源，請參閱[利用具有兩個不同值的特定標籤，對資源上的動作授予許可](security_iam_id-based-policy-examples-create-and-modify-examples.md#security_iam_id-based-policy-examples-grant-permissions-tags)。

## 將暫時登入資料與 Amazon RDS 搭配使用
<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)。

## Amazon RDS 的轉寄存取工作階段
<a name="security_iam_service-with-iam-principal-permissions"></a>

**支援轉寄存取工作階段：**是。

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

## Amazon RDS 的服務角色
<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)。

**警告**  
變更服務角色的許可可能會中斷 Amazon RDS 功能。只有在 Amazon RDS 提供方法指引時，才能編輯服務角色。

## Amazon RDS 的服務連結角色
<a name="security_iam_service-with-iam-roles-service-linked"></a>

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

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

如需使用 Amazon RDS 服務連結角色的詳細資訊，請參閱[使用 Amazon RDS 的服務連結角色](UsingWithRDS.IAM.ServiceLinkedRoles.md)。

# Amazon RDS 以身分為基礎的政策範例
<a name="security_iam_id-based-policy-examples"></a>

根據預設，許可集和角色不具備建立或修改 Amazon RDS 資源的許可。他們也無法使用 AWS 管理主控台 AWS CLI、 或 AWS API 執行任務。IAM 管理員必須建立 IAM 政策，授予許可集和角色在指定資源上執行特定 API 操作的所需許可。管理員接著必須將這些政策連接至需要這些許可的許可集或角色。

若要了解如何使用這些範例 JSON 政策文件建立 IAM 身分型政策，請參閱《IAM 使用者指南》**中的[在 JSON 標籤上建立政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html#access_policies_create-json-editor)。

**Topics**
+ [

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

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

## 使用主控台所需的許可
](#UsingWithRDS.IAM.RequiredPermissions.Console)
+ [

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

# 在 Amazon RDS 中建立、修改和刪除資源的許可政策
](security_iam_id-based-policy-examples-create-and-modify-examples.md)
+ [

# 範例政策：使用條件金鑰
](UsingWithRDS.IAM.Conditions.Examples.md)
+ [

# 指定條件：使用自訂標籤
](UsingWithRDS.IAM.SpecifyingCustomTags.md)
+ [

# 在建立期間授予標籤 Amazon RDS 資源的許可
](security_iam_id-based-policy-examples-grant-permissions-tags-on-create.md)

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

身分型政策會判斷您帳戶中的某個人員是否可以建立、存取或刪除 Amazon RDS 資源。這些動作可能會讓您的 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)。

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

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

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

為了確保這些實體仍然可以使用 Amazon RDS Aurora主控台，請將下列 AWS 受管政策連接至實體。

```
AmazonRDSReadOnlyAccess
```

如需詳細資訊，請參閱《*IAM 使用者指南*》中的[新增許可到使用者](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_change-permissions.html#users_change_permissions-add-console)。

## 使用主控台所需的許可
<a name="UsingWithRDS.IAM.RequiredPermissions.Console"></a>

針對使用主控台的使用者，該使用者必須擁有一組符合最低限制的許可。這些許可允許使用者描述其 AWS 帳戶的 Amazon RDS 資源，並提供其他相關資訊，包括 Amazon EC2 安全性和網路資訊。

如果您建立比最基本必要許可更嚴格的 IAM 政策，則對於採取該 IAM 政策的使用者而言，主控台就無法如預期運作。為確保這些使用者仍可使用主控台，也請將 `AmazonRDSReadOnlyAccess` 受管政策連接至使用者，如[使用政策管理存取權](UsingWithRDS.IAM.md#security_iam_access-manage)所述。

對於僅呼叫 AWS CLI 或 Amazon RDS API 的使用者，您不需要允許其最基本主控台許可。

下列政策授予根 AWS 帳戶所有 Amazon RDS 資源的完整存取權：

```
AmazonRDSFullAccess             
```

## 允許使用者檢視他們自己的許可
<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": "*"
        }
    ]
}
```

# 在 Amazon RDS 中建立、修改和刪除資源的許可政策
<a name="security_iam_id-based-policy-examples-create-and-modify-examples"></a>

下列各節提供授予和限制資源存取權的許可政策範例：

## 允許使用者在 AWS 帳戶中建立資料庫執行個體
<a name="security_iam_id-based-policy-examples-create-db-instance-in-account"></a>

以下是允許 ID 為您的帳戶為 AWS 您的帳戶`123456789012`建立資料庫執行個體的範例政策。此政策需要新資料庫執行個體的名稱以 `test` 開頭。新的資料庫執行個體也須使用 MySQL 資料庫引擎和 `db.t2.micro` 資料庫執行個體類別。此外，新的資料庫執行個體還須使用選項群組，以及以 `default` 開頭的資料庫參數群組，而且它還須使用 `default` 子網路群組。

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
      {
         "Sid": "AllowCreateDBInstanceOnly",
         "Effect": "Allow",
         "Action": [
            "rds:CreateDBInstance"
         ],
         "Resource": [
            "arn:aws:rds:*:123456789012:db:test*",
            "arn:aws:rds:*:123456789012:og:default*",
            "arn:aws:rds:*:123456789012:pg:default*",
            "arn:aws:rds:*:123456789012:subgrp:default"
         ],
         "Condition": {
            "StringEquals": {
               "rds:DatabaseEngine": "mysql",
               "rds:DatabaseClass": "db.t2.micro"
            }
         }
      }
   ]
}
```

------

政策包括單一陳述式，指定 使用者的下列許可：
+ 此政策允許帳戶使用 [CreateDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html) API 操作建立資料庫執行個體 （這也適用於 [create-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html) AWS CLI 命令和 AWS 管理主控台)。
+ `Resource` 元素指定使用者可對資源或搭配資源執行動作。您可以使用 Amazon Resource Name (ARN) 來指定資源。此 ARN 包含資源所屬的服務名稱 (`rds`)、區域 AWS (`*` 表示此範例中的任何區域）、 AWS 帳戶號碼 (`123456789012` 是此範例中的帳戶號碼），以及資源類型。如需建立 ARN 的詳細資訊，請參閱[Amazon RDS 中的 Amazon Resource Name (ARN)](USER_Tagging.ARN.md)。

  範例中的 `Resource` 元素對使用者的資源指定下列政策限制：
  + 新資料庫執行個體的資料庫執行個體識別符必須以 `test`開頭 (例如，`testCustomerData1`、`test-region2-data`)。
  + 新資料庫執行個體的選項群組必須以`default` 開頭。
  + 新資料庫執行個體的資料庫參數群組必須以`default` 開頭。
  + 新資料庫執行個體的子網路群組必須是`default` 子網路群組。
+ `Condition` 元素指定資料庫引擎必須是 MySQL，而且資料庫執行個體類別必須是 `db.t2.micro`。`Condition` 元素指定政策應該生效時的條件。您可以使用 `Condition` 元素來新增其他許可或限制。如需指定條件的詳細資訊，請參閱[Amazon RDS 的政策條件金鑰](security_iam_service-with-iam.md#UsingWithRDS.IAM.Conditions)。此範例指定 `rds:DatabaseEngine` 和 `rds:DatabaseClass` 條件。如需 `rds:DatabaseEngine` 有效條件值的相關資訊，請參閱 [CreateDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html) 中的 `Engine` 參數下的清單。如需 `rds:DatabaseClass` 的有效條件值的相關資訊，請參閱 [資料庫執行個體類別的支援資料庫引擎](Concepts.DBInstanceClass.Support.md)。

此政策不指定 `Principal` 元素，因為您不會在以身分為基礎的政策中，指定取得許可的主體。當您將政策連接至使用者時，這名使用者即為隱含主體。當您將許可政策連接至 IAM 角色，該角色的信任政策中所識別的主體即取得許可。

若要查看 Amazon RDS 動作的清單，請參閱*服務授權參考*中的 [Amazon RDS 定義的動作](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonrds.html#amazonrds-actions-as-permissions)。

## 允許使用者對任何 RDS 資源執行任何描述動作
<a name="IAMPolicyExamples-RDS-perform-describe-action"></a>

下列許可政策會授予使用者執行開頭為 `Describe` 之所有動作的許可。這些動作會顯示 RDS 資源 (如資料庫執行個體) 的相關資訊。`Resource` 元素中的萬用字元 (\$1) 表示可對帳戶擁有的所有 Amazon RDS 資源執行動作。

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
      {
         "Sid": "AllowRDSDescribe",
         "Effect": "Allow",
         "Action": "rds:Describe*",
         "Resource": "*"
      }
   ]
}
```

------

## 允許使用者建立可使用指定資料庫參數群組和子網路群組的資料庫執行個體
<a name="security_iam_id-based-policy-examples-create-db-instance-specified-groups"></a>

以下許可政策授予許可，以允許使用者只能建立一個必須使用 `mydbpg` 資料庫參數群組和 `mydbsubnetgroup` 資料庫子網路群組的資料庫執行個體。

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
      {
         "Sid": "VisualEditor0",
         "Effect": "Allow",
         "Action": "rds:CreateDBInstance",
         "Resource": [
            "arn:aws:rds:*:*:pg:mydbpg",
            "arn:aws:rds:*:*:subgrp:mydbsubnetgroup"
         ]
      }
   ]
}
```

------

## 利用具有兩個不同值的特定標籤，對資源上的動作授予許可
<a name="security_iam_id-based-policy-examples-grant-permissions-tags"></a>

您可以在身分類型政策中使用條件，根據標籤來控制存取 Amazon RDS 資源。下列政策允許在 `stage` 標籤設為 `development` 或 `test` 的資料庫執行個體上執行 `CreateDBSnapshot` API 操作的許可。

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Sid":"AllowAnySnapshotName",
         "Effect":"Allow",
         "Action":[
            "rds:CreateDBSnapshot"
         ],
         "Resource":"arn:aws:rds:*:123456789012:snapshot:*"
      },
      {
         "Sid":"AllowDevTestToCreateSnapshot",
         "Effect":"Allow",
         "Action":[
            "rds:CreateDBSnapshot"
         ],
         "Resource":"arn:aws:rds:*:123456789012:db:*",
         "Condition":{
            "StringEquals":{
                "rds:db-tag/stage":[
                  "development",
                  "test"
               ]
            }
         }
      }
   ]
}
```

------

下列政策允許在 `stage` 標籤設為 `development` 或 `test` 的資料庫執行個體上執行 `ModifyDBInstance` API 操作的許可。

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Sid":"AllowChangingParameterOptionSecurityGroups",
         "Effect":"Allow",
         "Action":[
            "rds:ModifyDBInstance"
         ],
         "Resource": [
            "arn:aws:rds:*:123456789012:pg:*",
            "arn:aws:rds:*:123456789012:secgrp:*",
            "arn:aws:rds:*:123456789012:og:*"
         ]
      },
      {
         "Sid":"AllowDevTestToModifyInstance",
         "Effect":"Allow",
         "Action":[
            "rds:ModifyDBInstance"
         ],
         "Resource":"arn:aws:rds:*:123456789012:db:*",
         "Condition":{
            "StringEquals":{
                "rds:db-tag/stage":[
                  "development",
                  "test"
               ]
            }
         }
      }
   ]
}
```

------

## 防止使用者刪除資料庫執行個體
<a name="IAMPolicyExamples-RDS-prevent-db-deletion"></a>

以下許可政策授予許可，以防止使用者刪除特定的資料庫執行個體。例如，您可能想拒絕給予任何非管理員使用者刪除生產資料庫執行個體的能力。

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
      {
         "Sid": "DenyDelete1",
         "Effect": "Deny",
         "Action": "rds:DeleteDBInstance",
         "Resource": "arn:aws:rds:us-west-2:123456789012:db:my-mysql-instance"
      }
   ]
}
```

------

## 拒絕對資源的所有存取
<a name="IAMPolicyExamples-RDS-deny-all-access"></a>

您可以明確拒絕對資源的存取權。拒絕政策優先於允許政策。下列政策明確拒絕使用者管理資源的能力：

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
      {
         "Effect": "Deny",
         "Action": "rds:*",
         "Resource": "arn:aws:rds:us-east-1:123456789012:db:mydb"
      }
   ]
}
```

------

# 範例政策：使用條件金鑰
<a name="UsingWithRDS.IAM.Conditions.Examples"></a>

以下是如何在 Amazon RDS IAM 許可政策中使用條件金鑰的範例。

## 範例 1：授予許可來建立一個使用特定資料庫引擎且不是多個可用區的資料庫執行個體
<a name="w2aac58c48c33c21b5"></a>

下列政策會使用 RDS 條件金鑰，並允許使用者只建立使用 MySQL 資料庫引擎，而不使用 MultiAZ 的資料庫執行個體。`Condition` 元素表示資料庫引擎是 MySQL 的需求。

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
      {
         "Sid": "AllowMySQLCreate",
         "Effect": "Allow",
         "Action": "rds:CreateDBInstance",
         "Resource": "*",
         "Condition": {
            "StringEquals": {
               "rds:DatabaseEngine": "mysql"
            },
            "Bool": {
               "rds:MultiAz": false
            }
         }
      }
   ]
}
```

------

## 範例 2：明確拒絕許可，不得為特定資料庫執行個體類別建立資料庫執行個體，以及不得建立使用佈建 IOPS 的資料庫執行個體
<a name="w2aac58c48c33c21b7"></a>

下列政策明確拒絕許可，不得建立使用資料庫執行個體類別 `r3.8xlarge` 和 `m4.10xlarge` 的資料庫執行個體，因為它們是最大且最昂貴的資料庫執行個體類別。此政策也會防止使用者建立使用佈建 IOPS 的資料庫執行個體，因為它們會產生額外的成本。

明確拒絕許可會取代任何其他已授予的許可。這確保身分不會意外取得您從未想要授予的許可。

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
      {
         "Sid": "DenyLargeCreate",
         "Effect": "Deny",
         "Action": "rds:CreateDBInstance",
         "Resource": "*",
         "Condition": {
            "StringEquals": {
               "rds:DatabaseClass": [
                  "db.r3.8xlarge",
                  "db.m4.10xlarge"
               ]
            }
         }
      },
      {
         "Sid": "DenyPIOPSCreate",
         "Effect": "Deny",
         "Action": "rds:CreateDBInstance",
         "Resource": "*",
         "Condition": {
            "NumericNotEquals": {
               "rds:Piops": "0"
            }
         }
      }
   ]
}
```

------

## 範例 3：限制可用來標記資源的一組標籤金鑰和值
<a name="w2aac58c48c33c21b9"></a>

下列政策使用 RDS 條件索引鍵，並允許將索引鍵為 `stage` 且值為 `test`、`qa` 和 `production` 的標籤新增給資源。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowTagEdits",
      "Effect": "Allow",
      "Action": [
        "rds:AddTagsToResource",
        "rds:RemoveTagsFromResource"
      ],
      "Resource": "arn:aws:rds:us-east-1:123456789012:db:db-123456",
      "Condition": {
        "StringEquals": {
          "rds:req-tag/stage": [
            "test",
            "qa",
            "production"
          ]
        }
      }
    }
  ]
}
```

------

# 指定條件：使用自訂標籤
<a name="UsingWithRDS.IAM.SpecifyingCustomTags"></a>

Amazon RDS 支援在 IAM 政策中使用自訂標籤來指定條件。

例如，假設您將值為 `environment`、`beta`、`staging` 等等的 `production` 標籤新增至資料庫執行個體。如果這樣做，您就可以建立政策，根據 `environment` 標籤值限制某些資料庫執行個體的使用者。

**注意**  
自訂標籤識別符會區分大小寫。

下表列出您可以在 `Condition` 元素中使用的 RDS 標籤識別符。

<a name="rds-iam-condition-tag-reference"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/UsingWithRDS.IAM.SpecifyingCustomTags.html)

自訂標籤條件的語法如下：

`"Condition":{"StringEquals":{"rds:rds-tag-identifier/tag-name": ["value"]} }` 

例如，下列 `Condition` 元素會套用至標籤名稱為 `environment` 且標籤值為 `production` 的資料庫執行個體。

` "Condition":{"StringEquals":{"rds:db-tag/environment": ["production"]} } ` 

如需建立標籤的相關資訊，請參閱[標記 Amazon RDS 資源](USER_Tagging.md)。

**重要**  
如果您使用標記功能來管理 RDS 資源的存取，則我們建議您安全存取 RDS 資源的標籤。您可以建立 `AddTagsToResource` 和 `RemoveTagsFromResource` 動作的政策，來管理標籤的存取。例如，下列政策會拒絕使用者可對所有資源新增或移除標籤的能力。然後，您可以建立政策來允許特定使用者新增或刪除標籤。  

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Sid":"DenyTagUpdates",
         "Effect":"Deny",
         "Action":[
            "rds:AddTagsToResource",
            "rds:RemoveTagsFromResource"
         ],
         "Resource":"*"
      }
   ]
}
```

若要查看 Amazon RDS 動作的清單，請參閱*服務授權參考*中的 [Amazon RDS 定義的動作](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonrds.html#amazonrds-actions-as-permissions)。

## 範例政策：使用自訂標籤
<a name="UsingWithRDS.IAM.Conditions.Tags.Examples"></a>

以下是如何在 Amazon RDS IAM 許可政策中使用自訂標籤的範例。如需將標籤新增至 Amazon RDS 資源的詳細資訊，請參閱[Amazon RDS 中的 Amazon Resource Name (ARN)](USER_Tagging.ARN.md)。

**注意**  
所有範例都使用 us-west-2 區域，且其中的帳戶 ID 皆為虛構。

### 範例 1：利用具有兩個不同值的特定標籤，對資源上的動作授予許可
<a name="w2aac58c48c33c23c29b6"></a>

下列政策允許在 `stage` 標籤設為 `development` 或 `test` 的資料庫執行個體上執行 `CreateDBSnapshot` API 操作的許可。

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Sid":"AllowAnySnapshotName",
         "Effect":"Allow",
         "Action":[
            "rds:CreateDBSnapshot"
         ],
         "Resource":"arn:aws:rds:*:123456789012:snapshot:*"
      },
      {
         "Sid":"AllowDevTestToCreateSnapshot",
         "Effect":"Allow",
         "Action":[
            "rds:CreateDBSnapshot"
         ],
         "Resource":"arn:aws:rds:*:123456789012:db:*",
         "Condition":{
            "StringEquals":{
                "rds:db-tag/stage":[
                  "development",
                  "test"
               ]
            }
         }
      }
   ]
}
```

------

下列政策允許在 `stage` 標籤設為 `development` 或 `test` 的資料庫執行個體上執行 `ModifyDBInstance` API 操作的許可。

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Sid":"AllowChangingParameterOptionSecurityGroups",
         "Effect":"Allow",
         "Action":[
            "rds:ModifyDBInstance"
            ],
          "Resource": [
            "arn:aws:rds:*:123456789012:pg:*",
            "arn:aws:rds:*:123456789012:secgrp:*",
            "arn:aws:rds:*:123456789012:og:*"
            ]
       },
       {
         "Sid":"AllowDevTestToModifyInstance",
         "Effect":"Allow",
         "Action":[
            "rds:ModifyDBInstance"
            ],
         "Resource":"arn:aws:rds:*:123456789012:db:*",
         "Condition":{
            "StringEquals":{
               "rds:db-tag/stage":[
                  "development",
                  "test"
                  ]
               }
            }
       }
    ]
}
```

------

### 範例 2：明確拒絕許可，不得建立一個使用所指定之資料庫參數群組的資料庫執行個體
<a name="w2aac58c48c33c23c29b8"></a>

下列政策明確拒絕許可，不得建立一個使用資料庫參數群組與特定標籤值搭配的資料庫執行個體。如果您需要在建立資料庫執行個體時，一律使用特定客戶建立的資料庫參數群組，則可能會套用此政策。使用 `Deny` 的政策最常用來限制更廣泛政策所授予的存取。

明確拒絕許可會取代任何其他已授予的許可。這確保身分不會意外取得您從未想要授予的許可。

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Sid":"DenyProductionCreate",
         "Effect":"Deny",
         "Action":"rds:CreateDBInstance",
         "Resource":"arn:aws:rds:*:123456789012:pg:*",
         "Condition":{
            "StringEquals":{
               "rds:pg-tag/usage":"prod"
            }
         }
      }
   ]
}
```

------

### 範例 3：對資料庫執行個體上的動作授予許可，而此資料庫執行個體的執行個體名稱字首會加上使用者名稱
<a name="w2aac58c48c33c23c29c10"></a>

下列政策允許在資料庫執行個體上呼叫任何 API (但 `AddTagsToResource` 或 `RemoveTagsFromResource` 除外) 的許可，而此資料庫執行個體具有字首會加上使用者名稱的資料庫執行個體名稱，以及具有稱為 `stage` 等於 `devo` 的標籤，或沒有稱為 `stage` 的標籤。

政策中的 `Resource` 一行會依其 Amazon Resource Name (ARN) 識別資源。如需使用 ARN 與 Amazon RDS 資源的詳細資訊，請參閱[Amazon RDS 中的 Amazon Resource Name (ARN)](USER_Tagging.ARN.md)。

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Sid":"AllowFullDevAccessNoTags",
         "Effect":"Allow",
         "NotAction":[
            "rds:AddTagsToResource",
            "rds:RemoveTagsFromResource"
         ],
         "Resource":"arn:aws:rds:*:123456789012:db:${aws:username}*",
         "Condition":{
            "StringEqualsIfExists":{
               "rds:db-tag/stage":"devo"
            }
         }
      }
   ]
}
```

------

# 在建立期間授予標籤 Amazon RDS 資源的許可
<a name="security_iam_id-based-policy-examples-grant-permissions-tags-on-create"></a>

有些 RDS API 操作可讓您在建立資源時指定標籤。您可以使用資源標籤來實作以屬性為基礎的控制 (ABAC)。如需詳細資訊，請參閱[什麼是 ABAC AWS？](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_attribute-based-access-control.html)和[使用標籤控制對 AWS 資源的存取](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html)。

使用者若要在建立時標記資源，他們必須具備建立資源動作 (例如 `rds:CreateDBInstance`) 的使用許可。若標籤於建立動作中指定，RDS 會針對 `rds:AddTagsToResource` 動作執行其他授權，以確認使用者具備建立標籤的許可。因此，使用者必須同時具備使用 `rds:AddTagsToResource` 動作的明確許可。

在 `rds:AddTagsToResource` 動作的 IAM 政策定義中，您可以使用 `aws:RequestTag` 條件索引鍵要求請求中的標籤來標記資源。

例如，下列政策允許使用者在建立資料庫執行個體期間建立資料庫執行個體並套用標籤，但只能使用特定標籤索引鍵 (`environment` 或 `project`)：

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
       {
           "Effect": "Allow",
           "Action": [
               "rds:CreateDBInstance"
           ],
           "Resource": "*"
       },
       {
           "Effect": "Allow",
           "Action": [
               "rds:AddTagsToResource"
           ],
           "Resource": "*",
           "Condition": {
               "StringEquals": {
                   "aws:RequestTag/environment": ["production", "development"],
                   "aws:RequestTag/project": ["dataanalytics", "webapp"]
               },
               "ForAllValues:StringEquals": {
                   "aws:TagKeys": ["environment", "project"]
               }
           }
       }
   ]
}
```

------

此政策拒絕任何包含 `environment` 或 `project` 標籤以外之標籤的建立資料庫執行個體請求，或未指定這些標籤的建立資料庫執行個體請求。此外，使用者必須為符合政策中允許值的標籤指定值。

下列政策可讓使用者建立資料庫叢集，並在建立期間套用 `environment=prod` 標籤以外的任何標籤：

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
       {
           "Effect": "Allow",
           "Action": [
               "rds:CreateDBCluster"
           ],
           "Resource": "*"
       },
       {
           "Effect": "Allow",
           "Action": [
               "rds:AddTagsToResource"
           ],
           "Resource": "*",
           "Condition": {
               "StringNotEquals": {
                   "aws:RequestTag/environment": "prod"
               }
           }
       }
   ]
}
```

------

## 建立時用於標記的支援 RDS API 動作
<a name="security_iam_id-based-policy-examples-supported-rds-api-actions-tagging-creation"></a>

下列 RDS API 動作支援在建立資源時進行標記。對於這些動作，您可以在建立資源時指定標籤：
+ `CreateBlueGreenDeployment`
+ `CreateCustomDBEngineVersion`
+ `CreateDBCluster`
+ `CreateDBClusterEndpoint`
+ `CreateDBClusterParameterGroup`
+ `CreateDBClusterSnapshot`
+ `CreateDBInstance`
+ `CreateDBInstanceReadReplica`
+ `CreateDBParameterGroup`
+ `CreateDBProxy`
+ `CreateDBProxyEndpoint`
+ `CreateDBSecurityGroup`
+ `CreateDBShardGroup`
+ `CreateDBSnapshot`
+ `CreateDBSubnetGroup`
+ `CreateEventSubscription`
+ `CreateGlobalCluster`
+ `CreateIntegration`
+ `CreateOptionGroup`
+ `CreateTenantDatabase`
+ `CopyDBClusterParameterGroup`
+ `CopyDBClusterSnapshot`
+ `CopyDBParameterGroup`
+ `CopyDBSnapshot`
+ `CopyOptionGroup`
+ `RestoreDBClusterFromS3`
+ `RestoreDBClusterFromSnapshot`
+ `RestoreDBClusterToPointInTime`
+ `RestoreDBInstanceFromDBSnapshot`
+ `RestoreDBInstanceFromS3`
+ `RestoreDBInstanceToPointInTime`
+ `PurchaseReservedDBInstancesOffering`

如果您使用 AWS CLI 或 API 建立具有標籤的資源， `Tags` 參數會用來在建立期間將標籤套用至資源。

對於這些 API 動作，如果標記失敗，則不會建立資源，且請求會失敗並顯示錯誤。這可確保使用標籤建立資源，或完全不建立資源，以防止在沒有預期標籤的情況下建立資源。

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

若要將許可新增至許可集和角色，使用 AWS 受管政策比自行撰寫政策更容易。建立 [IAM 客戶受管政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html)需要時間和專業知識，而受管政策可為您的團隊提供其所需的許可。若要快速開始使用，您可以使用我們的 AWS 受管政策。這些政策涵蓋常見的使用案例，並可在您的 AWS 帳戶中使用。如需 AWS 受管政策的詳細資訊，請參閱《*IAM 使用者指南*》中的 [AWS 受管政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies)。

AWS 服務 維護和更新 AWS 受管政策。您無法變更 AWS 受管政策中的許可。服務偶爾會將其他許可新增至 AWS 受管政策，以支援新功能。此類型的更新會影響已連接政策的所有身分識別 (許可集和角色)。當新功能啟動或新操作可用時，服務最有可能更新 AWS 受管政策。服務不會從 AWS 受管政策中移除許可，因此政策更新不會破壞您現有的許可。

此外， AWS 支援跨多個 服務之任務函數的受管政策。例如， `ReadOnlyAccess` AWS 受管政策提供所有 AWS 服務 和 資源的唯讀存取權。當服務啟動新功能時， 會為新操作和資源 AWS 新增唯讀許可。如需任務職能政策的清單和說明，請參閱 *IAM 使用者指南*中[有關任務職能的AWS 受管政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_job-functions.html)。

**Topics**
+ [

## AWS 受管政策：AmazonRDSReadOnlyAccess
](#rds-security-iam-awsmanpol-AmazonRDSReadOnlyAccess)
+ [

## AWS 受管政策：AmazonRDSFullAccess
](#rds-security-iam-awsmanpol-AmazonRDSFullAccess)
+ [

## AWS 受管政策：AmazonRDSDataFullAccess
](#rds-security-iam-awsmanpol-AmazonRDSDataFullAccess)
+ [

## AWS 受管政策：AmazonRDSEnhancedMonitoringRole
](#rds-security-iam-awsmanpol-AmazonRDSEnhancedMonitoringRole)
+ [

## AWS 受管政策：AmazonRDSPerformanceInsightsReadOnly
](#rds-security-iam-awsmanpol-AmazonRDSPerformanceInsightsReadOnly)
+ [

## AWS 受管政策：AmazonRDSPerformanceInsightsFullAccess
](#rds-security-iam-awsmanpol-AmazonRDSPerformanceInsightsFullAccess)
+ [

## AWS 受管政策：AmazonRDSDirectoryServiceAccess
](#rds-security-iam-awsmanpol-AmazonRDSDirectoryServiceAccess)
+ [

## AWS 受管政策：AmazonRDSServiceRolePolicy
](#rds-security-iam-awsmanpol-AmazonRDSServiceRolePolicy)
+ [

## AWS 受管政策：AmazonRDSCustomServiceRolePolicy
](#rds-security-iam-awsmanpol-AmazonRDSCustomServiceRolePolicy)
+ [

## AWS 受管政策：AmazonRDSCustomInstanceProfileRolePolicy
](#rds-security-iam-awsmanpol-AmazonRDSCustomInstanceProfileRolePolicy)
+ [

## AWS 受管政策：AmazonRDSPreviewServiceRolePolicy
](#rds-security-iam-awsmanpol-AmazonRDSPreviewServiceRolePolicy)
+ [

## AWS 受管政策：AmazonRDSBetaServiceRolePolicy
](#rds-security-iam-awsmanpol-AmazonRDSBetaServiceRolePolicy)

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

此政策允許透過 對 Amazon RDS 進行唯讀存取 AWS 管理主控台。

**許可詳細資訊**

此政策包含以下許可：
+ `rds` – 允許主體說明 Amazon RDS 資源並列出 Amazon RDS 資源的標籤。
+ `cloudwatch` – 允許主體獲取 Amazon CloudWatch 指標統計資料。
+ `ec2` – 允許主體說明可用區域和聯網資源。
+ `logs` – 允許主體說明日誌群組的 CloudWatch Logs 日誌串流，並取得 CloudWatch Logs 事件。
+ `devops-guru` - 允許主體描述具有 Amazon DevOps Guru 涵蓋範圍的資源，這是由 CloudFormation 堆疊名稱或資源標籤所指定的。

如需有關此政策的詳細資訊，包括 JSON 政策文件，請參閱《AWS 受管政策參考指南》**中的 [AmazonRDSReadOnlyAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonRDSReadOnlyAccess.html)。

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

此政策透過 提供 Amazon RDS 的完整存取權 AWS 管理主控台。

**許可詳細資訊**

此政策包含以下許可：
+ `rds` – 允許主體完整存取 Amazon RDS。
+ `application-autoscaling` – 允許主體說明和管理 應用程式自動擴展擴展目標和政策。
+ `cloudwatch` – 允許主體取得 CloudWatch 指標靜態並管理 CloudWatch 警示。
+ `ec2` – 允許主體說明可用區域和聯網資源。
+ `logs` – 允許主體說明日誌群組的 CloudWatch Logs 日誌串流，並取得 CloudWatch Logs 事件。
+ `outposts` – 允許主體取得 AWS Outposts 執行個體類型。
+ `pi` – 允許主體取得績效詳情指標。
+ `sns` – 允許主體訂閱 Amazon Simple Notification Service (Amazon SNS) 和主題，並發佈 Amazon SNS 訊息。
+ `devops-guru` - 允許主體描述具有 Amazon DevOps Guru 涵蓋範圍的資源，這是由 CloudFormation 堆疊名稱或資源標籤所指定的。

如需有關此政策的詳細資訊，包括 JSON 政策文件，請參閱《AWS 受管政策參考指南》**中的 [AmazonRDSFullAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonRDSFullAccess.html)。

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

此政策允許完整存取在特定 Aurora Serverless叢集上使用資料 API 和查詢編輯器 AWS 帳戶。此政策允許 從 AWS 帳戶 取得秘密的值 AWS Secrets Manager。

您可將 `AmazonRDSDataFullAccess` 政策連接到 IAM 身分。

**許可詳細資訊**

此政策包含以下許可：
+ `dbqms` – 允許主體存取、建立、刪除、說明和更新查詢。Database Query Metadata Service (`dbqms`) 是僅內部服務。它為多個 上的查詢編輯器提供最近和儲存 AWS 管理主控台 的查詢 AWS 服務，包括 Amazon RDS。
+ `rds-data` – 允許主體在 Aurora Serverless 資料庫執行 SQL 陳述式。
+ `secretsmanager` – 允許主體從中取得秘密的值 AWS Secrets Manager。

如需有關此政策的詳細資訊，包括 JSON 政策文件，請參閱《AWS 受管政策參考指南》**中的 [AmazonRDSDataFullAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonRDSDataFullAccess.html)。

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

此政策提供對 Amazon CloudWatch Logs 的存取權限，以進行 Amazon RDS 增強型監控。

**許可詳細資訊**

此政策包含以下許可：
+ `logs` – 允許主體建立 CloudWatch Logs 日誌群組和保留政策，並建立和說明日誌群組的 CloudWatch Logs 日誌串流。其還允許主體放置並取得 CloudWatch Logs 日誌事件。

如需有關此政策的詳細資訊，包括 JSON 政策文件，請參閱《AWS 受管政策參考指南》**中的 [AmazonRDSEnhancedMonitoringRole](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonRDSEnhancedMonitoringRole.html)。

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

此政策提供對 Amazon RDS 資料庫執行個體和 Amazon Aurora 資料庫叢集的 Amazon RDS 績效詳情唯讀存取權限。

此政策現在包含 `Sid` (陳述式 ID) 作為政策陳述式的識別碼。

**許可詳細資訊**

此政策包含以下許可：
+ `rds` – 允許主體說明 Amazon RDS 資料庫執行個體和 Amazon Aurora 資料庫叢集。
+ `pi` – 允許主體呼叫 Amazon RDS 績效詳情 API 並存取績效詳情指標。

如需有關此政策的詳細資訊，包括 JSON 政策文件，請參閱《AWS 受管政策參考指南》**中的 [AmazonRDSPerformanceInsightsReadOnly](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonRDSPerformanceInsightsReadOnly.html)。

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

此政策提供對 Amazon RDS 資料庫執行個體和 Amazon Aurora 資料庫叢集的 Amazon RDS Performance Insights 完整存取權限。

此政策現在包含 `Sid` (陳述式 ID) 作為政策陳述式的識別符。

**許可詳細資訊**

此政策包含以下許可：
+ `rds` – 允許主體說明 Amazon RDS 資料庫執行個體和 Amazon Aurora 資料庫叢集。
+ `pi` – 允許主體呼叫 Amazon RDS Performance Insights API，以及建立、檢視和刪除績效分析報告。
+ `cloudwatch`：允許主體列出 Amazon CloudWatch 指標並取得指標資料和統計資料。

如需有關此政策的詳細資訊，包括 JSON 政策文件，請參閱*《AWS 受管政策參考指南》*中的 [AmazonRDSPerformanceInsightsFullAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonRDSPerformanceInsightsFullAccess.html)。

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

此政策允許 Amazon RDS 呼叫 Directory Service。

**許可詳細資訊**

此政策包含以下許可：
+ `ds` – 允許主體描述 Directory Service 目錄並控制 Directory Service 目錄的授權。

如需有關此政策的詳細資訊，包括 JSON 政策文件，請參閱《AWS 受管政策參考指南》**中的 [AmazonRDSDirectoryServiceAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonRDSDirectoryServiceAccess.html)。

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

您無法將 `AmazonRDSServiceRolePolicy` 政策附加至 IAM 實體。此政策會附加至服務連結角色，而此角色可讓 Amazon RDS 代表您執行動作。如需詳細資訊，請參閱[Amazon RDS 的服務連結角色許可](UsingWithRDS.IAM.ServiceLinkedRoles.md#service-linked-role-permissions)。

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

您無法將 `AmazonRDSCustomServiceRolePolicy` 政策附加至 IAM 實體。此政策會連接到服務連結角色，允許 Amazon RDS 代表 RDS 資料庫資源呼叫 AWS 服務。

此政策包含以下許可：
+ `ec2` ‐ 允許 RDS Custom 在提供時間點還原功能的資料庫執行個體上執行備份操作。
+ `secretsmanager` - 允許 RDS Custom 管理 RDS Custom 建立的資料庫執行個體特定秘密。
+ `cloudwatch` - 允許 RDS Custom 透過 CloudWatch 代理程式將資料庫執行個體指標和日誌上傳至 CloudWatch。
+ `events`、`sqs` ‐ 允許 RDS Custom 傳送和接收資料庫執行個體的狀態資訊。
+ `cloudtrail` ‐ 允許 RDS Custom 接收有關資料庫執行個體的變更事件
+ `servicequotas` ‐ 允許 RDS Custom 讀取與資料庫執行個體相關的服務配額
+ `ssm` ‐ 允許 RDS Custom 管理資料庫執行個體的基礎 EC2 執行個體。
+ `rds` ‐ 允許 RDS Custom 管理資料庫執行個體的 RDS 資源
+ `iam` ‐ 允許 RDS Custom 驗證執行個體設定檔，並將其連接至資料庫執行個體的基礎 EC2 執行個體。

如需有關此政策的詳細資訊，包括 JSON 政策文件，請參閱《AWS 受管政策參考指南》**中的 [AmazonRDSCustomServiceRolePolicy](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonRDSCustomServiceRolePolicy.html)。

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

您不應將 `AmazonRDSCustomInstanceProfileRolePolicy` 連接到 IAM 實體。它應該只連接到執行個體設定檔角色，該角色用於授予 Amazon RDS Custom 資料庫執行個體執行各種自動化動作和資料庫管理任務的許可。在 RDS Custom 執行個體建立期間，以 `custom-iam-instance-profile` 參數形式傳遞執行個體設定檔，而 RDS Custom 會將此執行個體設定檔與您的資料庫執行個體建立關聯。

**許可詳細資訊**

此政策包含以下許可：
+ `ssm`、`ssmmessages`、`ec2messages`‐ 允許 RDS Custom 透過 Systems Manager 在資料庫執行個體上通訊、執行自動化和維護代理程式。
+ `ec2`、`s3` ‐ 允許 RDS Custom 在提供時間點還原功能的資料庫執行個體上執行備份操作。
+ `secretsmanager` - 允許 RDS Custom 管理 RDS Custom 建立的資料庫執行個體特定秘密。
+ `cloudwatch`、`logs` ‐ 允許 RDS Custom 透過 CloudWatch 代理程式將資料庫執行個體指標和日誌上傳至 CloudWatch。
+ `events`、`sqs` ‐ 允許 RDS Custom 傳送和接收資料庫執行個體的狀態資訊。
+ `kms` - 允許 RDS Custom 使用執行個體特定 KMS 金鑰，對 RDS Custom 管理的秘密和 S3 物件執行加密。

如需有關此政策的詳細資訊，包括 JSON 政策文件，請參閱《AWS 受管政策參考指南》**中的 [AmazonRDSCustomInstanceProfileRolePolicy](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonRDSCustomInstanceProfileRolePolicy.html)。

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

您不應將 `AmazonRDSPreviewServiceRolePolicy` 連接到 IAM 實體。此政策會連接到服務連結角色，允許 Amazon RDS 代表 RDS 資料庫資源呼叫 AWS 服務。如需詳細資訊，請參閱[Amazon RDS 預覽的服務連結角色](UsingWithRDS.IAM.ServiceLinkedRoles.md#slr-permissions-rdspreview)。

**許可詳細資訊**

此政策包含以下許可：
+ `ec2` – 允許主體說明可用區域和聯網資源。
+ `secretsmanager` – 允許主體從中取得秘密的值 AWS Secrets Manager。
+ `cloudwatch`、`logs` ‐ 允許 Amazon RDS 透過 CloudWatch 代理程式將資料庫執行個體指標和日誌上傳至 CloudWatch。

如需有關此政策的詳細資訊，包括 JSON 政策文件，請參閱《AWS 受管政策參考指南》**中的 [AmazonRDSPreviewServiceRolePolicy](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonRDSPreviewServiceRolePolicy.html)。

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

您不應將 `AmazonRDSBetaServiceRolePolicy` 連接到 IAM 實體。此政策會連接到服務連結角色，允許 Amazon RDS 代表 RDS 資料庫資源呼叫 AWS 服務。如需詳細資訊，請參閱[Amazon RDS Beta 的服務連結角色許可](UsingWithRDS.IAM.ServiceLinkedRoles.md#slr-permissions-rdsbeta)。

**許可詳細資訊**

此政策包含以下許可：
+ `ec2` ‐ 允許 Amazon RDS 在提供時間點還原功能的資料庫執行個體上執行備份操作。
+ `secretsmanager` - 允許 Amazon RDS 管理 Amazon RDS 建立的資料庫執行個體特定秘密。
+ `cloudwatch`、`logs` ‐ 允許 Amazon RDS 透過 CloudWatch 代理程式將資料庫執行個體指標和日誌上傳至 CloudWatch。

如需有關此政策的詳細資訊，包括 JSON 政策文件，請參閱《AWS 受管政策參考指南》**中的 [AmazonRDSBetaServiceRolePolicy](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonRDSBetaServiceRolePolicy.html)。

# Amazon RDS 的 AWS 受管政策更新
<a name="rds-manpol-updates"></a>

檢視自此服務開始追蹤 Amazon RDS AWS 受管政策更新以來的變更詳細資訊。如需有關此頁面變更的自動提醒，請訂閱 Amazon RDS [Document history (文件歷程記錄)](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/WhatsNew.html) 頁面上的 RSS 摘要。




| 變更 | 描述 | 日期 | 
| --- | --- | --- | 
| [Amazon RDS Custom 的服務連結角色許可](UsingWithRDS.IAM.ServiceLinkedRoles.md#slr-permissions-custom) – 更新現有政策 |  Amazon RDS 已更新 `AWSServiceRoleForRDSCustom` 服務連結角色的 `AmazonRDSCustomServiceRolePolicy` 許可。更新會從一個陳述式中移除 `ec2:CopySnapshot`，並為來源和目的地快照許可新增兩個新陳述式。這些更新符合 [EBS CopySnapshot 授權行為的變更](https://aws.amazon.com/blogs/storage/enhancing-resource-level-permissions-for-copying-amazon-ebs-snapshots/)，同時保持有效許可不變。如需詳細資訊，請參閱 [Amazon RDS Custom 的服務連結角色許可](UsingWithRDS.IAM.ServiceLinkedRoles.md#slr-permissions-custom)。  | 2025 年 8 月 7 日 | 
| [Amazon RDS Custom 的服務連結角色許可](UsingWithRDS.IAM.ServiceLinkedRoles.md#slr-permissions-custom) – 更新現有政策 |  Amazon RDS 已將新許可新增至 `AWSServiceRoleForRDSCustom` 服務連結角色的 `AmazonRDSCustomServiceRolePolicy`。這些許可允許 RDS Custom 管理 EC2 金鑰對，並允許 RDS Custom 與 Amazon SQS 整合。如需詳細資訊，請參閱 [Amazon RDS Custom 的服務連結角色許可](UsingWithRDS.IAM.ServiceLinkedRoles.md#slr-permissions-custom)。  | 2025 年 3 月 25 日 | 
|  [AWS 受管政策：AmazonRDSCustomInstanceProfileRolePolicy](rds-security-iam-awsmanpol.md#rds-security-iam-awsmanpol-AmazonRDSCustomInstanceProfileRolePolicy) – 更新現有政策 |  Amazon RDS 新增了受管政策 `AmazonRDSCustomInstanceProfileRolePolicy` 的新許可，以允許在 RDS Custom 執行個體上使用 RDS Custom 受管秘密。如需詳細資訊，請參閱 [AWS 受管政策：AmazonRDSCustomInstanceProfileRolePolicy](rds-security-iam-awsmanpol.md#rds-security-iam-awsmanpol-AmazonRDSCustomInstanceProfileRolePolicy)。  | 2025 年 3 月 20 日 | 
| [Amazon RDS Custom 的服務連結角色許可](UsingWithRDS.IAM.ServiceLinkedRoles.md#slr-permissions-custom) – 更新現有政策 |  Amazon RDS 已將新許可新增至 `AWSServiceRoleForRDSCustom` 服務連結角色的 `AmazonRDSCustomServiceRolePolicy`。這些新許可允許 RDS Custom 列出和還原 Secrets Manager 秘密。如需詳細資訊，請參閱 [Amazon RDS Custom 的服務連結角色許可](UsingWithRDS.IAM.ServiceLinkedRoles.md#slr-permissions-custom)。  | 2025 年 3 月 6 日 | 
| [AWS 受管政策：AmazonRDSPreviewServiceRolePolicy](rds-security-iam-awsmanpol.md#rds-security-iam-awsmanpol-AmazonRDSPreviewServiceRolePolicy) – 更新現有政策 |  Amazon RDS 已從 `AWSServiceRoleForRDSPreview` 服務連結角色的 `AmazonRDSPreviewServiceRolePolicy` 移除 `sns:Publish` 許可。如需詳細資訊，請參閱 [AWS 受管政策：AmazonRDSPreviewServiceRolePolicy](rds-security-iam-awsmanpol.md#rds-security-iam-awsmanpol-AmazonRDSPreviewServiceRolePolicy)。 | 2024 年 8 月 7 日 | 
| [AWS 受管政策：AmazonRDSBetaServiceRolePolicy](rds-security-iam-awsmanpol.md#rds-security-iam-awsmanpol-AmazonRDSBetaServiceRolePolicy) – 更新現有政策 |  Amazon RDS 已從 `AWSServiceRoleForRDSBeta` 服務連結角色的 `AmazonRDSBetaServiceRolePolicy` 移除 `sns:Publish` 許可。如需詳細資訊，請參閱 [AWS 受管政策：AmazonRDSBetaServiceRolePolicy](rds-security-iam-awsmanpol.md#rds-security-iam-awsmanpol-AmazonRDSBetaServiceRolePolicy)。  | 2024 年 8 月 7 日 | 
| [Amazon RDS Custom 的服務連結角色許可](UsingWithRDS.IAM.ServiceLinkedRoles.md#slr-permissions-custom) – 更新現有政策 |  Amazon RDS 已將新許可新增至 `AWSServiceRoleForRDSCustom` 服務連結角色的 `AmazonRDSCustomServiceRolePolicy`。許可允許 RDS Custom 與另一個 AWS 區域 中的 Amazon RDS 服務通訊，並複製 EC2 映像。如需詳細資訊，請參閱 [Amazon RDS Custom 的服務連結角色許可](UsingWithRDS.IAM.ServiceLinkedRoles.md#slr-permissions-custom)。  | 2024 年 7 月 18 日 | 
| [AWS 受管政策：AmazonRDSServiceRolePolicy](rds-security-iam-awsmanpol.md#rds-security-iam-awsmanpol-AmazonRDSServiceRolePolicy) – 更新現有政策 |  Amazon RDS 已從 ` AWSServiceRoleForRDS` 服務連結角色的 `AmazonRDSServiceRolePolicy` 移除 `sns:Publish` 許可。如需詳細資訊，請參閱 [AWS 受管政策：AmazonRDSServiceRolePolicy](rds-security-iam-awsmanpol.md#rds-security-iam-awsmanpol-AmazonRDSServiceRolePolicy)。  | 2024 年 7 月 2 日 | 
| [Amazon RDS Custom 的服務連結角色許可](UsingWithRDS.IAM.ServiceLinkedRoles.md#slr-permissions-custom) – 更新現有政策 |  Amazon RDS 已將新許可新增至 `AWSServiceRoleForRDSCustom` 服務連結角色的 `AmazonRDSCustomServiceRolePolicy`。此新許可允許 RDS Custom 將服務角色做為執行個體設定檔，與 RDS Custom 執行個體建立關聯。如需詳細資訊，請參閱 [Amazon RDS Custom 的服務連結角色許可](UsingWithRDS.IAM.ServiceLinkedRoles.md#slr-permissions-custom)。  | 2024 年 4 月 19 日 | 
| [AWS Amazon RDS 的 受管政策](rds-security-iam-awsmanpol.md) – 更新現有政策 |  Amazon RDS 將新的許可新增至 `AWSServiceRoleForRDSCustom` 服務連結角色的 `AmazonRDSCustomServiceRolePolicy`，以允許 RDS Custom for SQL Server 修改基礎資料庫主機執行個體類型。RDS 也新增 `ec2:DescribeInstanceTypes` 許可，以取得資料庫主機的執行個體類型資訊。如需詳細資訊，請參閱 [AWS Amazon RDS 的 受管政策](rds-security-iam-awsmanpol.md)。  | 2024 年 4 月 8 日 | 
|  [AWS Amazon RDS 的 受管政策](rds-security-iam-awsmanpol.md) – 新政策  | Amazon RDS 新增了名為 AmazonRDSCustomInstanceProfileRolePolicy 的新受管政策，以允許 RDS Custom 透過 EC2 執行個體設定檔執行自動化動作和資料庫管理任務。如需詳細資訊，請參閱 [AWS Amazon RDS 的 受管政策](rds-security-iam-awsmanpol.md)。 | 2024 年 2 月 27 日 | 
|  [Amazon RDS 的服務連結角色許可](UsingWithRDS.IAM.ServiceLinkedRoles.md#service-linked-role-permissions) – 更新現有政策 | Amazon RDS 已將新陳述式 ID 新增至 `AWSServiceRoleForRDS` 服務連結角色的 `AmazonRDSServiceRolePolicy`。 如需詳細資訊，請參閱 [Amazon RDS 的服務連結角色許可](UsingWithRDS.IAM.ServiceLinkedRoles.md#service-linked-role-permissions)。  |  2024 年 1 月 19 日  | 
|  [AWS Amazon RDS 的 受管政策](rds-security-iam-awsmanpol.md) – 更新現有政策  |  `AmazonRDSPerformanceInsightsReadOnly` 和 `AmazonRDSPerformanceInsightsFullAccess` 受管政策現在包含 `Sid` (陳述式 ID) 作為政策陳述式中的識別碼。 如需詳細資訊，請參閱 [AWS 受管政策：AmazonRDSPerformanceInsightsReadOnly](rds-security-iam-awsmanpol.md#rds-security-iam-awsmanpol-AmazonRDSPerformanceInsightsReadOnly) 和 [AWS 受管政策：AmazonRDSPerformanceInsightsFullAccess](rds-security-iam-awsmanpol.md#rds-security-iam-awsmanpol-AmazonRDSPerformanceInsightsFullAccess)   |  2023 年 10 月 23 日  | 
|  [Amazon RDS 的服務連結角色許可](UsingWithRDS.IAM.ServiceLinkedRoles.md#service-linked-role-permissions) – 更新現有政策  |  Amazon RDS 已將新許可新增至 `AWSServiceRoleForRDSCustom` 服務連結角色的 `AmazonRDSCustomServiceRolePolicy`。這些新的許可允許 RDS Custom for Oracle 建立、修改及刪除 EventBridge 受管規則。 如需詳細資訊，請參閱 [Amazon RDS Custom 的服務連結角色許可](UsingWithRDS.IAM.ServiceLinkedRoles.md#slr-permissions-custom)。  |  2023 年 9 月 20 日  | 
|  [AWS Amazon RDS 的 受管政策](rds-security-iam-awsmanpol.md) – 更新現有政策  |  Amazon RDS 將新的許可新增到 `AmazonRDSFullAccess` 受管政策。這些許可允許您產生、檢視及刪除一段時間區間內的績效分析報告。 如需有關設定 Performance Insights 存取政策的詳細資訊，請參閱 [設定績效詳情的存取政策](USER_PerfInsights.access-control.md)  |  2023 年 8 月 17 日  | 
|  [AWS Amazon RDS 的 受管政策](rds-security-iam-awsmanpol.md) – 新政策和更新現有政策  |  Amazon RDS 新增了新的許可至 `AmazonRDSPerformanceInsightsReadOnly` 受管策略和名為 `AmazonRDSPerformanceInsightsFullAccess` 的新受管政策。這些許可允許您分析一段時間區間內的 Performance Insights、檢視分析結果及建議，以及刪除報告。 如需有關設定 Performance Insights 存取政策的詳細資訊，請參閱 [設定績效詳情的存取政策](USER_PerfInsights.access-control.md)  |  2023 年 8 月 16 日  | 
|  [Amazon RDS 的服務連結角色許可](UsingWithRDS.IAM.ServiceLinkedRoles.md#service-linked-role-permissions) – 更新現有政策  |  Amazon RDS 已將新許可新增至 `AWSServiceRoleForRDSCustom` 服務連結角色的 `AmazonRDSCustomServiceRolePolicy`。這些新權限允許 RDS Custom for Oracle 使用資料庫快照。 如需詳細資訊，請參閱 [Amazon RDS Custom 的服務連結角色許可](UsingWithRDS.IAM.ServiceLinkedRoles.md#slr-permissions-custom)。  |  2023 年 6 月23 日  | 
|  [Amazon RDS 的服務連結角色許可](UsingWithRDS.IAM.ServiceLinkedRoles.md#service-linked-role-permissions) – 更新現有政策  |  Amazon RDS 已將新許可新增至 `AWSServiceRoleForRDSCustom` 服務連結角色的 `AmazonRDSCustomServiceRolePolicy`。這些新權限允許 RDS Custom for Oracle 使用資料庫快照。 如需詳細資訊，請參閱 [Amazon RDS Custom 的服務連結角色許可](UsingWithRDS.IAM.ServiceLinkedRoles.md#slr-permissions-custom)。  |  2023 年 6 月23 日  | 
|  [Amazon RDS 的服務連結角色許可](UsingWithRDS.IAM.ServiceLinkedRoles.md#service-linked-role-permissions) – 更新現有政策  |  Amazon RDS 已將新許可新增至 `AWSServiceRoleForRDSCustom` 服務連結角色的 `AmazonRDSCustomServiceRolePolicy`。這些新權限允許 RDS Custom 建立網路介面。 如需詳細資訊，請參閱 [Amazon RDS Custom 的服務連結角色許可](UsingWithRDS.IAM.ServiceLinkedRoles.md#slr-permissions-custom)。  |  2023 年 5 月 30 日  | 
|  [Amazon RDS 的服務連結角色許可](UsingWithRDS.IAM.ServiceLinkedRoles.md#service-linked-role-permissions) – 更新現有政策  |  Amazon RDS 已將新許可新增至 `AWSServiceRoleForRDSCustom` 服務連結角色的 `AmazonRDSCustomServiceRolePolicy`。這些新許可允許 RDS Custom 呼叫 Amazon EBS 來檢查儲存配額。 如需詳細資訊，請參閱 [Amazon RDS Custom 的服務連結角色許可](UsingWithRDS.IAM.ServiceLinkedRoles.md#slr-permissions-custom)。  |  2023 年 4 月 18 日  | 
|  [Amazon RDS 的服務連結角色許可](UsingWithRDS.IAM.ServiceLinkedRoles.md#service-linked-role-permissions) – 更新現有政策  |  Amazon RDS Custom 已將新許可新增至 `AWSServiceRoleForRDSCustom` 服務連結角色的 `AmazonRDSCustomServiceRolePolicy`，以與 Amazon SQS 整合。RDS Custom 需要與 Amazon SQS 整合，才能在客戶帳戶中建立和管理 SQS 佇列。SQS 佇列名稱遵循格式 `do-not-delete-rds-custom-[identifier]`，並標記為 `Amazon RDS Custom`。也新增了 `ec2:CreateSnapshot` 的許可，以允許 RDS Custom 為連接至執行個體的磁碟區建立備份。 如需詳細資訊，請參閱 [Amazon RDS Custom 的服務連結角色許可](UsingWithRDS.IAM.ServiceLinkedRoles.md#slr-permissions-custom)。  |  2023 年 4 月 6 日  | 
|  [AWS Amazon RDS 的 受管政策](rds-security-iam-awsmanpol.md) – 更新現有政策  |  Amazon RDS 將新的 Amazon CloudWatch 命名空間 `ListMetrics` 新增至 `AmazonRDSFullAccess` 和 `AmazonRDSReadOnlyAccess`。 Amazon RDS 需要此命名空間才能列出特定資源用量指標。 如需詳細資訊，請參閱《Amazon CloudWatch 使用者指南》**中的 [CloudWatch 資源存取許可管理概觀](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/iam-access-control-overview-cw.html)。  |  2023 年 4 月 4 日  | 
|  [AWS Amazon RDS 的 受管政策](rds-security-iam-awsmanpol.md) – 更新現有政策  |  Amazon RDS 已將新許可新增至 `AmazonRDSFullAccess` 和 `AmazonRDSReadOnlyAccess` 受管政策，以允許在 RDS 主控台中顯示 Amazon DevOps Guru 調查結果。 需要此許可才能顯示 DevOps Guru 調查結果。 如需詳細資訊，請參閱 [AWS 受管政策的 Amazon RDS 更新](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-manpol-updates.html)。  |  2023 年 3 月 30 日  | 
|  [Amazon RDS 的服務連結角色許可](UsingWithRDS.IAM.ServiceLinkedRoles.md#service-linked-role-permissions) – 更新現有政策  |  Amazon RDS 已將新許可新增至 `AWSServiceRoleForRDS` 服務連結角色的 `AmazonRDSServiceRolePolicy`，以與 AWS Secrets Manager 整合。RDS 需要與 Secrets Manager 整合，才能在 Secrets Manager 中管理主要使用者密碼。密碼使用舊有的命名慣例並限制客戶更新。 如需詳細資訊，請參閱 [使用 Amazon RDS 和 進行密碼管理 AWS Secrets Manager](rds-secrets-manager.md)。  |  2022 年 12 月 22 日  | 
|  [Amazon RDS 的服務連結角色許可](UsingWithRDS.IAM.ServiceLinkedRoles.md#service-linked-role-permissions) – 更新現有政策  |  Amazon RDS 已將新許可新增至 `AWSServiceRoleForRDSCustom` 服務連結角色的 `AmazonRDSCustomServiceRolePolicy`。RDS Custom 支援資料庫叢集。原則中的這些新許可允許 RDS Custom 代表您的資料庫叢集呼叫 AWS 服務。 如需詳細資訊，請參閱 [Amazon RDS Custom 的服務連結角色許可](UsingWithRDS.IAM.ServiceLinkedRoles.md#slr-permissions-custom)。  |  2022 年 11 月 9 日  | 
|  [Amazon RDS 的服務連結角色許可](UsingWithRDS.IAM.ServiceLinkedRoles.md#service-linked-role-permissions) – 更新現有政策  |  Amazon RDS 新增了對 `AWSServiceRoleForRDS` 服務連結角色的新許可，以便與 AWS Secrets Manager 整合。 SQL Server Reporting Services (SSRS) 電子郵件必須與 Secrets Manager 整合，才能在 RDS 上運作。SSRS 電子郵件會代表客戶建立一個秘密。密碼使用舊有的命名慣例並限制客戶更新。 如需詳細資訊，請參閱 [使用 SSRS 電子郵件傳送報告](SSRS.Email.md)。  |  2022 年 8 月 26 日  | 
|  [Amazon RDS 的服務連結角色許可](UsingWithRDS.IAM.ServiceLinkedRoles.md#service-linked-role-permissions) – 更新現有政策  |  Amazon RDS 為 `PutMetricData` 將新的 Amazon CloudWatch 命名空間新增至 `AmazonRDSPreviewServiceRolePolicy`。 Amazon RDS 需要此命名空間才能發佈資源用量指標。 如需詳細資訊，請參閱 *Amazon CloudWatch 使用者指南*中的[使用條件金鑰來限制對 CloudWatch 命名空間的存取](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/iam-cw-condition-keys-namespace.html)。  |  2022 年 6 月 7 日  | 
|  [Amazon RDS 的服務連結角色許可](UsingWithRDS.IAM.ServiceLinkedRoles.md#service-linked-role-permissions) – 更新現有政策  |  Amazon RDS 為 `PutMetricData` 將新的 Amazon CloudWatch 命名空間新增至 `AmazonRDSBetaServiceRolePolicy`。 Amazon RDS 需要此命名空間才能發佈資源用量指標。 如需詳細資訊，請參閱 *Amazon CloudWatch 使用者指南*中的[使用條件金鑰來限制對 CloudWatch 命名空間的存取](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/iam-cw-condition-keys-namespace.html)。  |  2022 年 6 月 7 日  | 
|  [Amazon RDS 的服務連結角色許可](UsingWithRDS.IAM.ServiceLinkedRoles.md#service-linked-role-permissions) – 更新現有政策  |  Amazon RDS 為 `PutMetricData` 將新的 Amazon CloudWatch 命名空間新增至 `AWSServiceRoleForRDS`。 Amazon RDS 需要此命名空間才能發佈資源用量指標。 如需詳細資訊，請參閱 *Amazon CloudWatch 使用者指南*中的[使用條件金鑰來限制對 CloudWatch 命名空間的存取](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/iam-cw-condition-keys-namespace.html)。  |  2022 年 4 月 22 日  | 
|  [Amazon RDS 的服務連結角色許可](UsingWithRDS.IAM.ServiceLinkedRoles.md#service-linked-role-permissions) – 更新現有政策  |  Amazon RDS 會將新的許可新增至 `AWSServiceRoleForRDS` 服務連結角色來管理客戶擁有的 IP 集區和本機閘道路由表 (LGW-RTB) 的許可。 Outpost 上的 RDS 需要這些許可權限，才可跨 Outpost 的本機網路執行多可用區域複寫。 如需詳細資訊，請參閱 [在 上使用 Amazon RDS 的異地同步備份部署 AWS Outposts](rds-on-outposts.maz.md)。  |  2022 年 4 月 19 日  | 
|  [身分型政策](UsingWithRDS.IAM.md#security_iam_access-manage-id-based-policies) – 更新現有政策  |  Amazon RDS 將新的許可權限新增至 `AmazonRDSFullAccess` 受管政策來說明 LGW-RTB 上的許可權限。 Outpost 上的 RDS 需要此許可權限，才可跨 Outpost 的本機網路執行多可用區域複寫。 如需詳細資訊，請參閱 [在 上使用 Amazon RDS 的異地同步備份部署 AWS Outposts](rds-on-outposts.maz.md)。  |  2022 年 4 月 19 日  | 
|  [AWS Amazon RDS 的 受管政策](rds-security-iam-awsmanpol.md) – 新政策  |  Amazon RDS 新增名為 `AmazonRDSPerformanceInsightsReadOnly` 的新受管政策，以允許 Amazon RDS 代表您的資料庫執行個體呼叫 AWS 服務。 如需有關設定 Performance Insights 存取政策的詳細資訊，請參閱 [設定績效詳情的存取政策](USER_PerfInsights.access-control.md)  |  2022 年 3 月 10 日  | 
|  [Amazon RDS 的服務連結角色許可](UsingWithRDS.IAM.ServiceLinkedRoles.md#service-linked-role-permissions) – 更新現有政策  |  Amazon RDS 為 `PutMetricData` 將新的 Amazon CloudWatch 命名空間新增至 `AWSServiceRoleForRDS`。 這些命名空間是 Amazon DocumentDB (具備 MongoDB 相容性) 和 Amazon Neptune 發佈 CloudWatch 指標所必需的。 如需詳細資訊，請參閱 *Amazon CloudWatch 使用者指南*中的[使用條件金鑰來限制對 CloudWatch 命名空間的存取](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/iam-cw-condition-keys-namespace.html)。  |  2022 年 3 月 4 日  | 
|  [Amazon RDS Custom 的服務連結角色許可](UsingWithRDS.IAM.ServiceLinkedRoles.md#slr-permissions-custom) – 新政策  |  Amazon RDS 新增名為 `AWSServiceRoleForRDSCustom` 的新服務連結角色，以允許 RDS Custom 代表您的資料庫執行個體呼叫 AWS 服務。  |  2021 年 10 月 26 日  | 
|  Amazon RDS 開始追蹤變更  |  Amazon RDS 開始追蹤其 AWS 受管政策的變更。  |  2021 年 10 月 26 日  | 

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

*混淆代理人問題*屬於安全性議題，其中沒有執行動作許可的實體可以強制具有更多許可的實體執行該動作。在 中AWS，跨服務模擬可能會導致混淆代理人問題。

在某個服務 (*呼叫服務*) 呼叫另一個服務 (*被呼叫服務*) 時，可能會發生跨服務模擬。可以操縱呼叫服務來使用其許可，以其不應有存取許可的方式對其他客戶的資源採取動作。為了避免這種情況， AWS提供的工具可協助您保護所有 服務的資料，其服務主體已獲得您帳戶中資源的存取權。如需詳細資訊，請參閱《*IAM 使用者指南*》中的[混淆代理問題](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html)。

若要限制 Amazon RDS 為特定資源提供另一項服務的許可，建議在資源政策中使用 [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` 值不包含帳戶 ID，例如使用 Amazon S3 儲存貯體的 Amazon 資源名稱 (ARN) 時。在這些情況下，請務必同時使用兩個全域條件內容索引鍵來限制許可。在某些情況下，可以同時使用全域條件內容索引鍵和包含帳號 ID 的 `aws:SourceArn` 值。在這些情況下，當在相同政策陳述式中使用 `aws:SourceAccount` 值和 `aws:SourceArn` 裡的帳戶時，請確認兩者使用同樣的帳戶 ID。如果您想要僅允許一個資源與跨服務存取相關聯，請使用 `aws:SourceArn`。如果您想要允許指定AWS帳戶中的任何資源與跨服務使用相關聯，請使用 `aws:SourceAccount`。

請確定 `aws:SourceArn` 的值是 Amazon RDS 資源類型的 ARN。如需詳細資訊，請參閱[Amazon RDS 中的 Amazon Resource Name (ARN)](USER_Tagging.ARN.md)。

防範混淆代理人問題的最有效方法是使用 `aws:SourceArn` 全域條件內容索引鍵，以及資源的完整 ARN。在某些情況下，您可能不知道資源的完整 ARN，或者指定了多個資源。在這些情況下，請針對 ARN 的未知部分，使用含有萬用字元 (`*`) 的全域條件內容索引鍵 (`aws:SourceArn`)。例如，`arn:aws:rds:*:123456789012:*`。

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

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Sid": "ConfusedDeputyPreventionExamplePolicy",
    "Effect": "Allow",
    "Principal": {
      "Service": "rds.amazonaws.com"
    },
    "Action": "sts:AssumeRole",
    "Condition": {
      "ArnLike": {
        "aws:SourceArn": "arn:aws:rds:us-east-1:123456789012:db:mydbinstance"
      },
      "StringEquals": {
        "aws:SourceAccount": "123456789012"
      }
    }
  }
}
```

------

如需更多使用 `aws:SourceArn` 和 `aws:SourceAccount` 全域條件內容索引鍵的政策範例，請參閱以下區段：
+ [授予將通知發佈至 Amazon SNS 主題的許可](USER_Events.GrantingPermissions.md)
+ [手動建立原生備份與還原的 IAM 角色](SQLServer.Procedural.Importing.Native.Enabling.md#SQLServer.Procedural.Importing.Native.Enabling.IAM)
+ [為 SQL Server 資料庫執行個體設定 Windows 身分驗證](USER_SQLServerWinAuth.SettingUp.md)
+ [整合 RDS for SQL Server 與 S3 的先決條件](Appendix.SQLServer.Options.S3-integration.preparing.md)
+ [手動建立適用於 SQL Server 稽核的IAM 角色](Appendix.SQLServer.Options.Audit.IAM.md)
+ [設定 IAM 許可權限以進行 RDS for Oracle 與 Amazon S3 的整合](oracle-s3-integration.preparing.md)
+ [設定對 Amazon S3 儲存貯體的存取權](USER_PostgreSQL.S3Import.AccessPermission.md) (PostgreSQL 匯入)
+ [設定對 Amazon S3 儲存貯體的存取權](postgresql-s3-export-access-bucket.md) (PostgreSQL 匯出)

# 適用於 MariaDB、MySQL 和 PostgreSQL 的 IAM 資料庫身分驗證
<a name="UsingWithRDS.IAMDBAuth"></a>

您可以使用 AWS Identity and Access Management (IAM) 資料庫身分驗證來驗證資料庫執行個體。IAM 資料庫身分驗證可搭配 MariaDB、MySQL 和 PostgreSQL 運作。透過此身分驗證方法，您連線至資料庫執行個體時不需要使用密碼。而是改用身分驗證字符。

*身分驗證字符*是 Amazon RDS 依請求而產生的唯一字元字串。身分驗證字符是使用 AWS Signature 第 4 版產生。每個字符的存留期為 15 分鐘。您不需要將使用者登入資料存放在資料庫，因為身分驗證是利用 IAM 在外部管理。您仍可使用標準資料庫身分驗證。字符僅用於身分驗證，並且在建立後不會影響工作階段。

IAM 資料庫身分驗證提供下列優點：
+ 使用 Secure Socket Layer (SSL) 或 Transport Layer Security (TLS) 來加密往返資料庫的網路流量。如需使用 SSL/TLS 搭配 Amazon RDS 的詳細資訊，請參閱 [使用 SSL/TLS 加密與資料庫執行個體或叢集的連線](UsingWithRDS.SSL.md)。
+ 您可以使用 IAM 來集中管理資料庫資源的存取，而不需要在每個資料庫執行個體上個別地管理存取。
+ 對於 Amazon EC2 上執行的應用程式，您可以使用 EC2 執行個體專用的設定檔登入資料 (而非密碼) 來存取資料庫，如此安全性更高。

通常，當應用程式每秒建立的連線少於 200 個，且您不希望直接以應用程式程式碼管理使用者名稱和密碼時，請考慮使用 IAM 資料庫身分驗證。

Amazon Web Services (AWS) JDBC 驅動程式支援 IAM 資料庫身分驗證。如需詳細資訊，請參閱 [Amazon Web Services (AWS) JDBC 驅動程式 GitHub 儲存庫](https://github.com/aws/aws-advanced-jdbc-wrapper)中的 [AWS IAM 身分驗證外掛程式](https://github.com/aws/aws-advanced-jdbc-wrapper/blob/main/docs/using-the-jdbc-driver/using-plugins/UsingTheIamAuthenticationPlugin.md)。

Amazon Web Services (AWS) Python 驅動程式支援 IAM 資料庫身分驗證。如需詳細資訊，請參閱 [Amazon Web Services (AWS) Python 驅動程式 GitHub 儲存庫](https://github.com/aws/aws-advanced-python-wrapper)中的 [AWS IAM 身分驗證外掛程式](https://github.com/aws/aws-advanced-python-wrapper/blob/main/docs/using-the-python-driver/using-plugins/UsingTheIamAuthenticationPlugin.md)。

瀏覽下列主題，了解設定 IAM 進行資料庫身分驗證的程序：
+ [啟用和停用 IAM 資料庫身分驗證](UsingWithRDS.IAMDBAuth.Enabling.md)
+ [建立並使用 IAM 政策進行 IAM 資料庫存取](UsingWithRDS.IAMDBAuth.IAMPolicy.md)
+ [使用 IAM 身分驗證建立資料庫帳戶](UsingWithRDS.IAMDBAuth.DBAccounts.md)
+ [使用 IAM 身分驗證連接至資料庫執行個體](UsingWithRDS.IAMDBAuth.Connecting.md) 

## 區域和版本可用性
<a name="UsingWithRDS.IAMDBAuth.Availability"></a>

功能可用性和支援會因每個資料庫引擎的特定版本而有所不同。如需 Amazon RDS 和 IAM 資料庫身分驗證的引擎、版本和區域可用性的詳細資訊，請參閱 [支援 Amazon RDS 中 IAM 資料庫身分驗證的區域和資料庫引擎](Concepts.RDS_Fea_Regions_DB-eng.Feature.IamDatabaseAuthentication.md)。

## CLI 和開發套件支援
<a name="UsingWithRDS.IAMDBAuth.cli-sdk"></a>

IAM 資料庫身分驗證適用於 [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/rds/generate-db-auth-token.html)和下列語言特定 AWS SDKs：
+ [適用於 .NET 的 AWS SDK](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/RDS/TRDSAuthTokenGenerator.html)
+ [適用於 C\$1\$1 的 AWS SDK](https://docs.aws.amazon.com/sdk-for-cpp/latest/api/class_aws_1_1_r_d_s_1_1_r_d_s_client.html#ae134ffffed5d7672f6156d324e7bd392)
+ [適用於 Go 的 AWS SDK](https://docs.aws.amazon.com/sdk-for-go/api/service/rds/#pkg-overview)
+ [適用於 Java 的 AWS SDK](https://docs.aws.amazon.com/sdk-for-java/latest/reference/software/amazon/awssdk/services/rds/RdsUtilities.html)
+ [適用於 JavaScript 的 AWS SDK](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/modules/_aws_sdk_rds_signer.html)
+ [適用於 PHP 的 AWS SDK](https://docs.aws.amazon.com/aws-sdk-php/v3/api/class-Aws.Rds.AuthTokenGenerator.html)
+ [適用於 Python (Boto3) 的 AWS SDK](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/rds.html#RDS.Client.generate_db_auth_token)
+ [適用於 Ruby 的 AWS SDK](https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/RDS/AuthTokenGenerator.html)

## IAM 資料庫身分驗證的限制
<a name="UsingWithRDS.IAMDBAuth.Limitations"></a>

使用 IAM 資料庫身分驗證，會套用以下限制：
+ 目前，IAM 資料庫驗證不支援所有全域條件內容金鑰。

  如需有關全域條件內容索引鍵的詳細資訊，請參閱《*IAM 使用者指南*》中的 [AWS 全域條件內容索引鍵](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html)。
+ 對於 PostgreSQL，如果 IAM 角色 (`rds_iam`) 新增至使用者 (包括 RDS 主要使用者)，則 IAM 身分驗證優先於密碼身分驗證，因此使用者必須以 IAM 使用者身分登入。
+ 對於 PostgreSQL，Amazon RDS 不支援同時啟用 IAM 和 Kerberos 身分驗證方法。
+ 對於 PostgreSQL，您無法使用 IAM 身分驗證來建立複寫連線。
+ 您無法使用自訂 Route 53 DNS 記錄，替代資料庫執行個體端點來產生身分驗證字符。
+ CloudWatch 和 CloudTrail 不會記錄 IAM 身分驗證。這些服務不會追蹤授權 IAM 角色啟用資料庫連線的 `generate-db-auth-token` API 呼叫。
+ IAM 資料庫身分驗證需要資料庫執行個體上的運算資源。您的資料庫必須擁有 300 到 1000 MiB 的額外記憶體，才能提供可靠的連線能力。若要查看工作負載所需的記憶體，請在啟用 IAM 資料庫身分驗證前後，比較增強型監控處理清單中 RDS 程序的 RES 欄。請參閱 [在 RDS 主控台中檢視作業系統指標](USER_Monitoring.OS.Viewing.md)。

  如果您使用的是爆量類別執行個體，請減少緩衝區和快取等其他參數所使用的記憶體數量，以避免記憶體不足。
+ RDS on Outposts 不支援任何引擎的 IAM 資料庫身分驗證。

## 適用於 IAM 資料庫身分驗證的建議
<a name="UsingWithRDS.IAMDBAuth.ConnectionsPerSecond"></a>

使用 IAM 資料庫身分驗證時，建議您採取以下做法：
+ 當您的應用程式每秒需要少於 200 個新的 IAM 資料庫驗證連線時，請使用 IAM 資料庫驗證。

  搭配 Amazon RDS 使用的資料庫引擎完全不限制每秒的身分驗證嘗試次數。不過，當您使用 IAM 資料庫身分驗證時，應用程式必須產生身分驗證字符。然後，應用程式會使用該字符來連接至資料庫執行個體。如果您超過每秒新連線數上限，IAM 資料庫身分驗證的額外負荷會導致連線調節。

  請考慮在應用程式中使用連線集區，以緩解持續建立連線的問題。如此可以減少 IAM 資料庫身分驗證的額外負荷，並允許您的應用程式重複使用現有連線。或者，請考慮針對這些使用案例採用 RDS Proxy。RDS Proxy需額外收費。請參閱 [RDS Proxy 定價](https://aws.amazon.com/rds/proxy/pricing/)。
+ IAM 資料庫身分驗證字符的大小取決於許多因素，包括 IAM 標籤的數量、IAM 服務政策、ARN 長度，以及其他 IAM 和資料庫屬性。此字符的最小大小一般約為 1 KB，但可以更大。因為此字符用作連線字串中的密碼，以使用 IAM 身分驗證連線至資料庫，所以您應該確保資料庫驅動程式 (例如 ODBC) 和/或任何工具不會限制或由於其大小而以其他方式截斷此字符。截斷的字符將導致資料庫和 IAM 執行的身分驗證失敗。
+ 如果您是在建立 IAM 資料庫身分驗證字符時使用臨時憑證，則在使用 IAM 資料庫身分驗證字符發出連線請求時，臨時憑證必須仍然有效。

## 不支援的 AWS 全域條件內容索引鍵
<a name="UsingWithRDS.IAMDBAuth.GlobalContextKeys"></a>

 IAM 資料庫身分驗證不支援下列 AWS 全域條件內容金鑰子集。
+ `aws:Referer`
+ `aws:SourceIp`
+ `aws:SourceVpc`
+ `aws:SourceVpce`
+ `aws:UserAgent`
+ `aws:VpcSourceIp`

如需詳細資訊，請參閱《IAM 使用者指南》**中的[AWS 全域條件內容金鑰](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html)。

# 啟用和停用 IAM 資料庫身分驗證
<a name="UsingWithRDS.IAMDBAuth.Enabling"></a>

依預設，資料庫執行個體上會停用 IAM 資料庫身分驗證。您可以使用 AWS 管理主控台 AWS CLI或 API 啟用或停用 IAM 資料庫身分驗證。

您可以在執行下列其中一個動作時啟用 IAM 資料庫身分驗證：
+ 若要建立啟用 IAM 資料庫身分驗證的新資料庫執行個體，請參閱[建立 Amazon RDS 資料庫執行個體](USER_CreateDBInstance.md)。
+ 若要修改資料庫執行個體以啟用 IAM 資料庫身分驗證，請參閱[修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。
+ 如要從啟用 IAM 資料庫身分驗證的快照還原資料庫執行個體，請參閱 [還原至資料庫執行個體](USER_RestoreFromSnapshot.md)。
+ 若要在啟用 IAM 資料庫身分驗證的情況下，將資料庫執行個體叢集還原至某個時間點，請參閱[將 Amazon RDS 的資料庫執行個體還原至指定時間](USER_PIT.md)。

## 主控台
<a name="UsingWithRDS.IAMDBAuth.Enabling.Console"></a>

每個建立或修改工作流程都有一個 **Database authentication (資料庫身分驗證)** 區段，您可以在其中啟用或停用 IAM 資料庫身分驗證。在該區段中，選擇 **Password and IAM database authentication (密碼和 IAM 資料庫身分驗證)** 以啟用 IAM 資料庫身分驗證。

**為現有資料庫執行個體啟用或停用 IAM 資料庫身分驗證**

1. 前往 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)，開啟 Amazon RDS 主控台。

1. 在導覽窗格中，選擇 **Databases** (資料庫)。

1. 選擇想要修改的資料庫執行個體。
**注意**  
 確認資料庫執行個體與 IAM 身分驗證相容。查看 [區域和版本可用性](UsingWithRDS.IAMDBAuth.md#UsingWithRDS.IAMDBAuth.Availability) 中的相容性要求。

1. 選擇 **Modify (修改)**。

1. 在**資料庫身分驗證**區段中，選擇**密碼和 IAM 資料庫身分驗證** 以啟用 IAM 資料庫身分驗證。選擇**密碼身分驗證**或**密碼和 Kerberos 身分驗證**以停用 IAM 身分驗證。

1. 您也可以選擇啟用將 IAM 資料庫身分驗證日誌發佈至 CloudWatch Logs。在**日誌匯出**下，選擇 **iam-db-auth-error 日誌**選項。將日誌發佈到 CloudWatch Logs 會消耗儲存空間，而且您需要支付該儲存空間的費用。請務必刪除您不再需要的任何 CloudWatch Logs。

1. 選擇 **Continue (繼續)**。

1. 若要立即套用變更，請在 **Scheduling of modifications (修改排程)** 區段中選擇 **Immediately (立即)**。

1. 選擇 **Modify DB instance** (修改資料庫執行個體) 。

## AWS CLI
<a name="UsingWithRDS.IAMDBAuth.Enabling.CLI"></a>

若要使用 建立具有 IAM 身分驗證的新資料庫執行個體 AWS CLI，請使用 [https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html)命令。指定 `--enable-iam-database-authentication` 選項，如以下範例所示。

```
aws rds create-db-instance \
    --db-instance-identifier mydbinstance \
    --db-instance-class db.m3.medium \
    --engine MySQL \
    --allocated-storage 20 \
    --master-username masterawsuser \
    --manage-master-user-password \
    --enable-iam-database-authentication
```

若要將現有資料庫執行個體更新為進行或不進行 IAM 身分驗證，請使用 AWS CLI 命令 [https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html)。視需要指定 `--enable-iam-database-authentication` 或 `--no-enable-iam-database-authentication` 選項。

**注意**  
 確認資料庫執行個體與 IAM 身分驗證相容。查看 [區域和版本可用性](UsingWithRDS.IAMDBAuth.md#UsingWithRDS.IAMDBAuth.Availability) 中的相容性要求。

依預設，Amazon RDS 會在下一次維護時段執行修改。如果您不想等待，而希望儘快啟用 IAM 資料庫身分驗證，請使用 `--apply-immediately` 參數。

以下範例示範如何對現有的資料庫執行個體立即啟用 IAM 身分驗證。

```
aws rds modify-db-instance \
    --db-instance-identifier mydbinstance \
    --apply-immediately \
    --enable-iam-database-authentication
```

如果您要還原資料庫執行個體，請使用下列其中一個 AWS CLI 命令：
+ `[restore-db-instance-to-point-in-time](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-to-point-in-time.html)`
+ `[restore-db-instance-from-db-snapshot](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-instance-from-db-snapshot.html)`

IAM 資料庫身分驗證設定預設為來源快照的設定。若要變更此設定，請視需要設定 `--enable-iam-database-authentication` 或 `--no-enable-iam-database-authentication` 選項。

## RDS API
<a name="UsingWithRDS.IAMDBAuth.Enabling.API"></a>

若要使用 API 建立支援 IAM 身分驗證的新資料庫執行個體，請使用 API 操作 [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html)。將 `EnableIAMDatabaseAuthentication` 參數設為 `true`。

若要更新現有資料庫執行個體進行或不進行 IAM 身分驗證，請使用 API 操作 [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html)。將 `EnableIAMDatabaseAuthentication` 參數設為 `true` 以啟用 IAM 身分驗證，或設為 `false` 表示停用。

**注意**  
 確認資料庫執行個體與 IAM 身分驗證相容。查看 [區域和版本可用性](UsingWithRDS.IAMDBAuth.md#UsingWithRDS.IAMDBAuth.Availability) 中的相容性要求。

如果您要還原資料庫執行個體，請使用下列其中一個 API 操作：
+ [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceFromDBSnapshot.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceFromDBSnapshot.html)
+  [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceToPointInTime.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBInstanceToPointInTime.html)

IAM 資料庫身分驗證設定預設為來源快照的設定。若要變更此設定，請將 `EnableIAMDatabaseAuthentication` 參數設為 `true` 以啟用 IAM 身分驗證，或設為 `false` 表示停用。

# 建立並使用 IAM 政策進行 IAM 資料庫存取
<a name="UsingWithRDS.IAMDBAuth.IAMPolicy"></a>

若要允許使用者或角色連接資料庫執行個體，您必須建立 IAM 政策。然後，您可以將政策連接到許可集或角色。

**注意**  
若要進一步了解 IAM 政策，請參閱[Amazon RDS 的 Identity and access management](UsingWithRDS.IAM.md)。

以下範例政策可讓使用者利用 IAM 資料庫身分驗證來連接資料庫執行個體。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "rds-db:connect"
            ],
            "Resource": [
                "arn:aws:rds-db:us-east-2:111122223333:dbuser:db-ABCDEFGHIJKL01234/db_user"
            ]
        }
    ]
}
```

------

**重要**  
具有管理員許可的使用者可以存取資料庫執行個體，而不需 IAM 政策中的明確許可。如果您想要將管理員的存取權限制為資料庫執行個體，您可以建立具有適當、特殊權限較低的許可的 IAM 角色，並將其指派給管理員。

**注意**  
請勿混淆 `rds-db:` 前綴和其他以 `rds:` 開頭的 RDS API 操作前綴。您只能對 IAM 資料庫身分驗證使用 `rds-db:` 字首和 `rds-db:connect` 動作。它們不適用於任何其他內容。

範例政策包含單一陳述式與下列元素：
+ `Effect` – 指定 `Allow` 以授權存取資料庫執行個體。如果您未明確允許存取，預設將會拒絕存取。
+ `Action` – 指定 `rds-db:connect` 以允許連線至資料庫執行個體。
+ `Resource` – 指定 Amazon Resource Name (ARN) 以描述一個資料庫執行個體中的一個資料庫帳戶。ARN 格式如下。

  ```
  arn:aws:rds-db:region:account-id:dbuser:DbiResourceId/db-user-name
  ```

  請在此格式中更換下列項目：
  + `region` 是資料庫執行個體 AWS 的區域。在範例政策中， AWS 區域為 `us-east-2`。
  + `account-id` 是資料庫執行個體的 AWS 帳號。在此範例政策中，帳戶號碼是 `1234567890`。使用者的帳戶必須與資料庫執行個體的帳戶相同。

    若要執行跨帳户存取權，請使用資料庫執行個體帳戶中，上述的政策來建立 IAM 角色，並允許您的其他帳戶擔任該角色。
  + `DbiResourceId` 是資料庫執行個體的識別符。此識別符對 AWS 區域是唯一的，絕不會變更。在此範例政策中，識別符是 `db-ABCDEFGHIJKL01234`。

    若要在適用於 Amazon RDS AWS 管理主控台 的 中尋找資料庫執行個體資源 ID，請選擇資料庫執行個體以查看其詳細資訊。然後選擇 **Configuration (組態)** 標籤。**Resource ID (資源 ID)** 顯示在 **Configuration (組態)** 區段中。

    或者，您可以使用 AWS CLI 命令列出目前 AWS 區域中所有資料庫執行個體的識別符和資源 IDs，如下所示。

    ```
    aws rds describe-db-instances --query "DBInstances[*].[DBInstanceIdentifier,DbiResourceId]"
    ```

    若您使用的是 Amazon Aurora，請指定 `DbClusterResourceId` 而非 `DbiResourceId`。如需詳細資訊，請參閱《*Amazon Aurora 使用者指南*》中的[建立並使用 IAM 政策進行 IAM 資料庫存取](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/UsingWithRDS.IAMDBAuth.IAMPolicy.html)。
**注意**  
如果您是透過 RDS Proxy 連線至資料庫，請指定代理資源 ID，例如 `prx-ABCDEFGHIJKL01234`。如需搭配 RDS Proxy 使用 IAM 資料庫驗證的相關資訊，請參閱[使用 IAM 身分驗證連線至資料庫](rds-proxy-connecting.md#rds-proxy-connecting-iam)。
  + `db-user-name` 是要與 IAM 身分驗證產生關聯的資料庫帳戶的名稱。在範例政策中，資料庫帳戶是 `db_user`。

您可以建構其他 ARN 來支援各種存取模式。下列政策允許存取資料庫執行個體中的兩個不同資料庫帳戶：

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
      {
         "Effect": "Allow",
         "Action": [
             "rds-db:connect"
         ],
         "Resource": [
             "arn:aws:rds-db:us-east-2:123456789012:dbuser:db-ABCDEFGHIJKL01234/jane_doe",
             "arn:aws:rds-db:us-east-2:123456789012:dbuser:db-ABCDEFGHIJKL01234/mary_roe"
         ]
      }
   ]
}
```

------

下列政策使用「\$1」字元來比對特定 AWS 帳戶和 AWS 區域的所有資料庫執行個體和資料庫帳戶。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "rds-db:connect"
            ],
            "Resource": [
                "arn:aws:rds-db:us-east-2:111122223333:dbuser:*/*"
            ]
        }
    ]
}
```

------

下列政策符合特定 AWS 帳戶和 AWS 區域的所有資料庫執行個體。不過，此政策僅授權存取具有 `jane_doe` 資料庫帳戶的資料庫執行個體。

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
      {
         "Effect": "Allow",
         "Action": [
             "rds-db:connect"
         ],
         "Resource": [
             "arn:aws:rds-db:us-east-2:123456789012:dbuser:*/jane_doe"
         ]
      }
   ]
}
```

------

使用者或角色只能存取資料庫使用者可存取的資料庫。例如，假設資料庫執行個體有一個名為 *dev* 的資料庫，還有另一個名為 *test* 的資料庫。如果資料庫使用者 `jane_doe` 只能存取 *dev*，則任何以 `jane_doe` 使用者存取該資料庫執行個體的使用者或角色，也只能存取 *dev*。其他資料庫物件同樣受此存取限制，例如資料表和檢視等。

管理員必須建立 IAM 政策，授予實體在其所需的指定資源上執行特定 API 操作的許可。管理員接著必須將這些政策連接至需要這些許可的許可集或角色。如需政策範例，請參閱 [Amazon RDS 以身分為基礎的政策範例](security_iam_id-based-policy-examples.md)。

## 將政 IAM 政策連接到許可集或角色
<a name="UsingWithRDS.IAMDBAuth.IAMPolicy.Attaching"></a>

在您建立 IAM 政策以允許資料庫身分驗證之後，您必須將該政策連接至許可集或角色。如需本主題的教學課程，請參閱《*IAM 使用者指南*》中的[建立並連接您的第一個客戶受管原則](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_managed-policies.html)。

在您進行教學課程時，可使用本節所示的其中一個政策範例做為起點，並依您的需求進行自訂。在教學課程結束時，您會有一個具有連接政策且可使用 `rds-db:connect` 動作的許可集。

**注意**  
您可以將多個許可集或角色映射至相同的資料庫使用者帳戶。例如，假設 IAM 政策指定下列資源 ARN。  

```
arn:aws:rds-db:us-east-2:123456789012:dbuser:db-12ABC34DEFG5HIJ6KLMNOP78QR/jane_doe
```
如果您將此政策連接至 *Jane*、*Bob* 和 *Diego*，則每個使用者都能使用 `jane_doe` 資料庫帳戶連線至指定的資料庫執行個體。

# 使用 IAM 身分驗證建立資料庫帳戶
<a name="UsingWithRDS.IAMDBAuth.DBAccounts"></a>

採用 IAM 資料庫身分驗證時，不需要指派資料庫密碼給您所建立的使用者帳戶。如果您移除已映射至資料庫帳戶的使用者，則應該使用 `DROP USER` 陳述式來一併移除該資料庫帳戶。

**注意**  
用於 IAM 身分驗證的使用者名稱必須與資料庫中的使用者名稱大小寫相符。

**Topics**
+ [

## 搭配 IAM 身分驗證使用 MariaDB and MySQL
](#UsingWithRDS.IAMDBAuth.DBAccounts.MySQL)
+ [

## 搭配 PostgreSQL 使用 IAM 身分驗證
](#UsingWithRDS.IAMDBAuth.DBAccounts.PostgreSQL)

## 搭配 IAM 身分驗證使用 MariaDB and MySQL
<a name="UsingWithRDS.IAMDBAuth.DBAccounts.MySQL"></a>

使用 MariaDB 和 MySQL 時，身分驗證是由 AWS處理`AWSAuthenticationPlugin`，這是與 IAM 無縫搭配運作的外掛程式，可驗證您的使用者。以主要使用者身分或可以建立使用者並授予權限的不同使用者身分連線至資料庫執行個體。連線後，發出 `CREATE USER` 陳述式，如下列範例所示。

```
CREATE USER 'jane_doe' IDENTIFIED WITH AWSAuthenticationPlugin AS 'RDS'; 
```

`IDENTIFIED WITH` 子句可讓 MariaDB and MySQL 使用 `AWSAuthenticationPlugin` 來驗證資料庫帳戶 (`jane_doe`)。`AS 'RDS'` 子句指的是身分驗證方法。確定指定的資料庫使用者名稱與 IAM 資料庫存取的 IAM 政策中的資源相同。如需詳細資訊，請參閱[建立並使用 IAM 政策進行 IAM 資料庫存取](UsingWithRDS.IAMDBAuth.IAMPolicy.md)。

**注意**  
如果您看到以下訊息，表示 AWS提供的外掛程式不適用於目前的資料庫執行個體。  
`ERROR 1524 (HY000): Plugin 'AWSAuthenticationPlugin' is not loaded`  
若要對此錯誤進行故障診斷，請確認您使用支援的組態，且已在資料庫執行個體上啟用 IAM 資料庫身分驗證。如需更多詳細資訊，請參閱 [區域和版本可用性](UsingWithRDS.IAMDBAuth.md#UsingWithRDS.IAMDBAuth.Availability) 及 [啟用和停用 IAM 資料庫身分驗證](UsingWithRDS.IAMDBAuth.Enabling.md)。

使用 `AWSAuthenticationPlugin` 建立帳戶之後，管理此帳戶的方式就像管理其他資料庫帳戶一樣。例如，您可以使用 `GRANT` 和 `REVOKE` 陳述式來修改帳戶權限，或使用 `ALTER USER` 陳述式來修改各種帳戶屬性。

使用 IAM 時，資料庫網路流量會使用 SSL/TLS 加密。若要允許 SSL 連線，請透過下列命令修改使用者帳戶。

```
ALTER USER 'jane_doe'@'%' REQUIRE SSL;     
```

 

## 搭配 PostgreSQL 使用 IAM 身分驗證
<a name="UsingWithRDS.IAMDBAuth.DBAccounts.PostgreSQL"></a>

若要搭配 PostgreSQL 使用 IAM 身分驗證，請以主要使用者身分或可以建立使用者並授予權限的不同使用者身分連線至資料庫執行個體。連線後，請建立資料庫使用者，然後將 `rds_iam` 角色授予他們，如下列範例所示。

```
CREATE USER db_userx; 
GRANT rds_iam TO db_userx;
```

確定指定的資料庫使用者名稱與 IAM 資料庫存取的 IAM 政策中的資源相同。如需詳細資訊，請參閱[建立並使用 IAM 政策進行 IAM 資料庫存取](UsingWithRDS.IAMDBAuth.IAMPolicy.md)。您必須授予 `rds_iam` 角色才能使用 IAM 身分驗證。您也可以使用巢狀成員資格或角色的間接授予。

# 使用 IAM 身分驗證連接至資料庫執行個體
<a name="UsingWithRDS.IAMDBAuth.Connecting"></a>

採用 IAM 資料庫身分驗證時，您會使用身分驗證字符來連接資料庫執行個體。*身分驗證字符*是可用來代替密碼的字元字串。產生身分驗證字符之後，過期之前的有效期限為 15 分鐘。如果您嘗試使用過期的字符來連接，則會拒絕連接請求。

每個身分驗證字符必須附帶有效的簽章，並使用 AWS 簽章第 4 版。(如需詳細資訊，請參閱 *AWS 一般參考* 中的 [Signature 第 4 版簽署程序](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html)。) AWS CLI 及 AWS SDK (例如 適用於 Java 的 AWS SDK 或 適用於 Python (Boto3) 的 AWS SDK) 可以自動簽署您建立的每個字符。

當您從另一項 AWS 服務 (例如 AWS Lambda) 連線至 Amazon RDS 時，您可以使用身分驗證字符。使用字符就可以避免將密碼寫在程式碼中。或是您可使用 AWS 開發套件，以程式設計方式建立及簽署身分驗證字符。

取得已簽署的 IAM 身分驗證字符之後，您就可以連接至 Amazon RDS 資料庫執行個體。接下來，您可以了解如何使用命令列工具或 AWS 開發套件來這樣做，例如 適用於 Java 的 AWS SDK 或 適用於 Python (Boto3) 的 AWS SDK。

如需詳細資訊，請參閱下列部落格文章：
+ [使用 IAM 身分驗證將 SQL Workbench/J 連線至 Aurora MySQL 或 Amazon RDS for MySQL](https://aws.amazon.com/blogs/database/use-iam-authentication-to-connect-with-sql-workbenchj-to-amazon-aurora-mysql-or-amazon-rds-for-mysql/)
+ [Using IAM authentication to connect with pgAdmin Amazon Aurora PostgreSQL or Amazon RDS for PostgreSQL](https://aws.amazon.com/blogs/database/using-iam-authentication-to-connect-with-pgadmin-amazon-aurora-postgresql-or-amazon-rds-for-postgresql/)

**先決條件**  
以下是使用 IAM 身分驗證連線至資料庫執行個體的先決條件：
+ [啟用和停用 IAM 資料庫身分驗證](UsingWithRDS.IAMDBAuth.Enabling.md)
+ [建立並使用 IAM 政策進行 IAM 資料庫存取](UsingWithRDS.IAMDBAuth.IAMPolicy.md)
+ [使用 IAM 身分驗證建立資料庫帳戶](UsingWithRDS.IAMDBAuth.DBAccounts.md)

**Topics**
+ [

# 使用 IAM 身分驗證和 AWS 驅動程式連線至資料庫執行個體
](IAMDBAuth.Connecting.Drivers.md)
+ [

# 從命令列 AWS CLI 和 mysql 用戶端使用 IAM 身分驗證連線至資料庫執行個體
](UsingWithRDS.IAMDBAuth.Connecting.AWSCLI.md)
+ [

# 從命令列： AWS CLI 和 psql 用戶端使用 IAM 身分驗證連線至資料庫執行個體
](UsingWithRDS.IAMDBAuth.Connecting.AWSCLI.PostgreSQL.md)
+ [

# 使用 IAM 身分驗證和 連線至資料庫執行個體 適用於 .NET 的 AWS SDK
](UsingWithRDS.IAMDBAuth.Connecting.NET.md)
+ [

# 使用 IAM 身分驗證和 連線至資料庫執行個體 適用於 Go 的 AWS SDK
](UsingWithRDS.IAMDBAuth.Connecting.Go.md)
+ [

# 使用 IAM 身分驗證和 連線至資料庫執行個體 適用於 Java 的 AWS SDK
](UsingWithRDS.IAMDBAuth.Connecting.Java.md)
+ [

# 使用 IAM 身分驗證和 連線至資料庫執行個體 適用於 Python (Boto3) 的 AWS SDK
](UsingWithRDS.IAMDBAuth.Connecting.Python.md)

# 使用 IAM 身分驗證和 AWS 驅動程式連線至資料庫執行個體
<a name="IAMDBAuth.Connecting.Drivers"></a>

驅動程式AWS套件旨在支援更快的切換和容錯移轉時間，以及使用 AWS Secrets Manager、 AWS Identity and Access Management(IAM) 和聯合身分進行身分驗證。AWS 驅動程式依賴監控資料庫執行個體狀態，並注意執行個體拓撲以判斷新的寫入器。相較於開放原始碼驅動程式的數十秒，此方法可將切換和容錯移轉時間縮短為短短幾秒。

如需 AWS 驅動程式的詳細資訊，請參閱 [RDS for MariaDB](MariaDB.Connecting.Drivers.md#MariaDB.Connecting.JDBCDriver)、[RDS for MySQL](MySQL.Connecting.Drivers.md#MySQL.Connecting.JDBCDriver) 或 [RDS for PostgreSQL](PostgreSQL.Connecting.JDBCDriver.md) 資料庫執行個體的對應語言驅動程式。

**注意**  
RDS for MariaDB 支援的唯一功能是使用 AWS Secrets Manager、AWS Identity and Access Management (IAM) 和聯合身分進行身分驗證。

# 從命令列 AWS CLI 和 mysql 用戶端使用 IAM 身分驗證連線至資料庫執行個體
<a name="UsingWithRDS.IAMDBAuth.Connecting.AWSCLI"></a>

您可以使用 AWS CLI 和 `mysql`命令列工具，從命令列連線至 Amazon RDS 資料庫執行個體，如下所述。

**先決條件**  
以下是使用 IAM 身分驗證連線至資料庫執行個體的先決條件：
+ [啟用和停用 IAM 資料庫身分驗證](UsingWithRDS.IAMDBAuth.Enabling.md)
+ [建立並使用 IAM 政策進行 IAM 資料庫存取](UsingWithRDS.IAMDBAuth.IAMPolicy.md)
+ [使用 IAM 身分驗證建立資料庫帳戶](UsingWithRDS.IAMDBAuth.DBAccounts.md)

**注意**  
有關使用 SQL Workbench/J 與 IAM 身分驗證連接到您的資料庫的資訊，請參閱部落格文章 [使用 IAM 身分驗證將 SQL Workbench/J 連線至 Aurora MySQL 或 Amazon RDS for MySQL](https://aws.amazon.com/blogs/database/use-iam-authentication-to-connect-with-sql-workbenchj-to-amazon-aurora-mysql-or-amazon-rds-for-mysql/)。

**Topics**
+ [

## 產生 IAM 身分驗證字符
](#UsingWithRDS.IAMDBAuth.Connecting.AWSCLI.AuthToken)
+ [

## 連接至資料庫執行個體
](#UsingWithRDS.IAMDBAuth.Connecting.AWSCLI.Connect)

## 產生 IAM 身分驗證字符
<a name="UsingWithRDS.IAMDBAuth.Connecting.AWSCLI.AuthToken"></a>

以下範例顯示如何使用 AWS CLI來取得已簽署的身分驗證字符。

```
aws rds generate-db-auth-token \
   --hostname rdsmysql.123456789012.us-west-2.rds.amazonaws.com \
   --port 3306 \
   --region us-west-2 \
   --username jane_doe
```

範例中的參數如下：
+ `--hostname` – 您想要存取之資料庫執行個體的主機名稱
+ `--port` – 用於連線資料庫執行個體的連接埠號碼
+ `--region` – 資料庫執行個體執行所在的 AWS 區域
+ `--username` – 您想要存取的資料庫帳戶

字符開頭的前幾個字元看起來如下所示。

```
rdsmysql.123456789012.us-west-2.rds.amazonaws.com:3306/?Action=connect&DBUser=jane_doe&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Expires=900...
```

**注意**  
您無法使用自訂 Route 53 DNS 記錄，替代資料庫執行個體端點來產生身分驗證字符。

## 連接至資料庫執行個體
<a name="UsingWithRDS.IAMDBAuth.Connecting.AWSCLI.Connect"></a>

連線的一般格式如下所示。

```
mysql --host=hostName --port=portNumber --ssl-ca=full_path_to_ssl_certificate --enable-cleartext-plugin --user=userName --password=authToken
```

參數如下：
+ `--host` – 您想要存取之資料庫執行個體的主機名稱
+ `--port` – 用於連線資料庫執行個體的連接埠號碼
+ `--ssl-ca` – 包含公有金鑰之 SSL 憑證檔案的完整路徑

  如需 SSL/TLS 支援 MariaDB 的詳細資訊，請參閱 [Amazon RDS 支援在 MariaDB 資料庫執行個體上啟用 SSL/TLS 加密。](MariaDB.Concepts.SSLSupport.md)。

  如需 SSL/TLS 支援 MySQL 的詳細資訊，請參閱 [Amazon RDS 對 MySQL 資料庫執行個體的 SSL/TLS 支援](MySQL.Concepts.SSLSupport.md)。

  若要下載 SSL 憑證，請參閱[使用 SSL/TLS 加密與資料庫執行個體或叢集的連線](UsingWithRDS.SSL.md)。
+ `--enable-cleartext-plugin` – 指定 `AWSAuthenticationPlugin` 必須用於此連線的值

  如果您使用的是 MariaDB 用戶端，該 `--enable-cleartext-plugin` 選項不是必需的。
+ `--user` – 您想要存取的資料庫帳戶
+ `--password` – 已簽署的 IAM 身分驗證字符

身分驗證字符由數百個字元組成。在命令列上可能會顯得雜亂。此問題的一個解決方法是將字符儲存到環境變數，然後在連接時使用該變數。以下範例顯示此解決方法的一種型態。在範例中，*/sample\$1dir/* 是包含公有金鑰之 SSL 憑證檔案的完整路徑。

```
RDSHOST="mysqldb.123456789012.us-east-1.rds.amazonaws.com"
TOKEN="$(aws rds generate-db-auth-token --hostname $RDSHOST --port 3306 --region us-west-2 --username jane_doe )"

mysql --host=$RDSHOST --port=3306 --ssl-ca=/sample_dir/global-bundle.pem --enable-cleartext-plugin --user=jane_doe --password=$TOKEN
```

使用 `AWSAuthenticationPlugin` 來連接時會以 SSL 保護連線。若要確認是否如此，請在 `mysql>` 命令提示中輸入下列命令。

```
show status like 'Ssl%';
```

輸出中的以下幾行顯示更多詳細資訊。

```
+---------------+-------------+
| Variable_name | Value                                                                                                                                                                                                                                |
+---------------+-------------+
| ...           | ...
| Ssl_cipher    | AES256-SHA                                                                                                                                                                                                                           |
| ...           | ...
| Ssl_version   | TLSv1.1                                                                                                                                                                                                                              |
| ...           | ...
+-----------------------------+
```

如果要透過 Proxy 連線到資料庫執行個體，請參閱 [使用 IAM 身分驗證連線至資料庫](rds-proxy-connecting.md#rds-proxy-connecting-iam)。

# 從命令列： AWS CLI 和 psql 用戶端使用 IAM 身分驗證連線至資料庫執行個體
<a name="UsingWithRDS.IAMDBAuth.Connecting.AWSCLI.PostgreSQL"></a>

您可以使用 AWS CLI 和 psql 命令列工具，從命令列連線至 Amazon RDS for PostgreSQL 資料庫執行個體，如下所述。

**先決條件**  
以下是使用 IAM 身分驗證連線至資料庫執行個體的先決條件：
+ [啟用和停用 IAM 資料庫身分驗證](UsingWithRDS.IAMDBAuth.Enabling.md)
+ [建立並使用 IAM 政策進行 IAM 資料庫存取](UsingWithRDS.IAMDBAuth.IAMPolicy.md)
+ [使用 IAM 身分驗證建立資料庫帳戶](UsingWithRDS.IAMDBAuth.DBAccounts.md)

**注意**  
如需有關使用 pgAdmin 搭配 IAM 身分驗證連線到資料庫的資訊，請參閱部落格文章 [使用 IAM 身分驗證與 pgAdmin Amazon Aurora PostgreSQL 或 Amazon RDS for PostgreSQL](https://aws.amazon.com/blogs/database/using-iam-authentication-to-connect-with-pgadmin-amazon-aurora-postgresql-or-amazon-rds-for-postgresql/) 連線。

**Topics**
+ [

## 產生 IAM 身分驗證字符
](#UsingWithRDS.IAMDBAuth.Connecting.AWSCLI.AuthToken.PostgreSQL)
+ [

## 連接至 Amazon RDS PostgreSQL 執行個體
](#UsingWithRDS.IAMDBAuth.Connecting.AWSCLI.Connect.PostgreSQL)

## 產生 IAM 身分驗證字符
<a name="UsingWithRDS.IAMDBAuth.Connecting.AWSCLI.AuthToken.PostgreSQL"></a>

身分驗證字符由數百個字元組成，因此在命令列上可能會顯得雜亂。此問題的一個解決方法是將字符儲存到環境變數，然後在連接時使用該變數。下列範例示範如何使用 AWS CLI 來取得使用 `generate-db-auth-token`命令簽署的身分驗證字符，並將其存放在`PGPASSWORD`環境變數中。

```
export RDSHOST="rdspostgres.123456789012.us-west-2.rds.amazonaws.com"
export PGPASSWORD="$(aws rds generate-db-auth-token --hostname $RDSHOST --port 5432 --region us-west-2 --username jane_doe )"
```

在範例中，`generate-db-auth-token` 命令的參數如下所示：
+ `--hostname` – 您想要存取之資料庫執行個體的主機名稱
+ `--port` – 用於連線資料庫執行個體的連接埠號碼
+ `--region` – 資料庫執行個體執行所在的 AWS 區域
+ `--username` – 您想要存取的資料庫帳戶

所產生字符開頭的前幾個字元看起來如下所示。

```
rdspostgres.123456789012.us-west-2.rds.amazonaws.com:5432/?Action=connect&DBUser=jane_doe&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Expires=900...
```

**注意**  
您無法使用自訂 Route 53 DNS 記錄，替代資料庫執行個體端點來產生身分驗證字符。

## 連接至 Amazon RDS PostgreSQL 執行個體
<a name="UsingWithRDS.IAMDBAuth.Connecting.AWSCLI.Connect.PostgreSQL"></a>

使用 psql 連線的一般格式如下所示。

```
psql "host=hostName port=portNumber sslmode=verify-full sslrootcert=full_path_to_ssl_certificate dbname=DBName user=userName password=authToken"
```

參數如下：
+ `host` – 您想要存取之資料庫執行個體的主機名稱
+ `port` – 用於連線資料庫執行個體的連接埠號碼
+ `sslmode` – 要使用的 SSL 模式

  當您使用 `sslmode=verify-full` 時，SSL 連線會根據 SSL 憑證中的端點來驗證資料庫執行個體端點。
+ `sslrootcert` – 包含公有金鑰之 SSL 憑證檔案的完整路徑

  如需詳細資訊，請參閱[將 SSL 與 PostgreSQL 資料庫執行個體搭配使用](PostgreSQL.Concepts.General.SSL.md)。

  若要下載 SSL 憑證，請參閱[使用 SSL/TLS 加密與資料庫執行個體或叢集的連線](UsingWithRDS.SSL.md)。
+ `dbname` – 您想要存取的資料庫
+ `user` – 您想要存取的資料庫帳戶
+ `password` – 已簽署的 IAM 身分驗證字符

**注意**  
您無法使用自訂 Route 53 DNS 記錄，替代資料庫執行個體端點來產生身分驗證字符。

以下範例示範使用 psql 進行連線。在範例中，psql 針對主機使用環境變數 `RDSHOST`，產生的字符則使用環境變數 `PGPASSWORD`。此外，*/sample\$1dir/* 是包含公有金鑰之 SSL 憑證檔案的完整路徑。

```
export RDSHOST="rdspostgres.123456789012.us-west-2.rds.amazonaws.com"
export PGPASSWORD="$(aws rds generate-db-auth-token --hostname $RDSHOST --port 5432 --region us-west-2 --username jane_doe )"
                    
psql "host=$RDSHOST port=5432 sslmode=verify-full sslrootcert=/sample_dir/global-bundle.pem dbname=DBName user=jane_doe password=$PGPASSWORD"
```

如果要透過 Proxy 連線到資料庫執行個體，請參閱 [使用 IAM 身分驗證連線至資料庫](rds-proxy-connecting.md#rds-proxy-connecting-iam)。

# 使用 IAM 身分驗證和 連線至資料庫執行個體 適用於 .NET 的 AWS SDK
<a name="UsingWithRDS.IAMDBAuth.Connecting.NET"></a>

您可以使用 連線到 RDS for MariaDB、MySQL 或 PostgreSQL 資料庫執行個體 適用於 .NET 的 AWS SDK ，如下所述。

**先決條件**  
以下是使用 IAM 身分驗證連線至資料庫執行個體的先決條件：
+ [啟用和停用 IAM 資料庫身分驗證](UsingWithRDS.IAMDBAuth.Enabling.md)
+ [建立並使用 IAM 政策進行 IAM 資料庫存取](UsingWithRDS.IAMDBAuth.IAMPolicy.md)
+ [使用 IAM 身分驗證建立資料庫帳戶](UsingWithRDS.IAMDBAuth.DBAccounts.md)

**範例**  
以下程式碼範例顯示如何產生身分驗證字符，然後用來連線至資料庫執行個體。

若要執行此程式碼範例，您需要在 AWS 網站上[適用於 .NET 的 AWS SDK](https://aws.amazon.com/sdk-for-net/)找到的 。`AWSSDK.CORE` 和 `AWSSDK.RDS` 套件是必需的。若要連接到資料庫執行個體，請使用資料庫引擎的 .NET 資料庫連接器，例如 MariaDB 或 MySQL 的 MySqlConnector 或 PostgreSQL 的 Npgsql。

此程式碼連接到 MariaDB 或 MySQL 資料庫執行個體。視需要修改下列變數的值：
+ `server` – 您想要存取之資料庫執行個體的端點
+ `user` – 您想要存取的資料庫帳戶
+ `database` – 您想要存取的資料庫
+ `port` – 用於連線資料庫執行個體的連接埠號碼
+ `SslMode` – 要使用的 SSL 模式

  當您使用 `SslMode=Required` 時，SSL 連線會根據 SSL 憑證中的端點來驗證資料庫執行個體端點。
+ `SslCa` – Amazon RDS 之 SSL 憑證的完整路徑

  若要下載憑證，請參閱[使用 SSL/TLS 加密與資料庫執行個體或叢集的連線](UsingWithRDS.SSL.md)。

**注意**  
您無法使用自訂 Route 53 DNS 記錄，替代資料庫執行個體端點來產生身分驗證字符。

```
using System;
using System.Data;
using MySql.Data;
using MySql.Data.MySqlClient;
using Amazon;

namespace ubuntu
{
  class Program
  {
    static void Main(string[] args)
    {
      var pwd = Amazon.RDS.Util.RDSAuthTokenGenerator.GenerateAuthToken(RegionEndpoint.USEast1, "mysqldb.123456789012.us-east-1.rds.amazonaws.com", 3306, "jane_doe");
      // for debug only Console.Write("{0}\n", pwd);  //this verifies the token is generated

      MySqlConnection conn = new MySqlConnection($"server=mysqldb.123456789012.us-east-1.rds.amazonaws.com;user=jane_doe;database=mydB;port=3306;password={pwd};SslMode=Required;SslCa=full_path_to_ssl_certificate");
      conn.Open();

      // Define a query
      MySqlCommand sampleCommand = new MySqlCommand("SHOW DATABASES;", conn);

      // Execute a query
      MySqlDataReader mysqlDataRdr = sampleCommand.ExecuteReader();

      // Read all rows and output the first column in each row
      while (mysqlDataRdr.Read())
        Console.WriteLine(mysqlDataRdr[0]);

      mysqlDataRdr.Close();
      // Close connection
      conn.Close();
    }
  }
}
```

此程式碼會連線至 PostgreSQL 資料庫執行個體。

視需要修改下列變數的值：
+ `Server` – 您想要存取之資料庫執行個體的端點
+ `User ID` – 您想要存取的資料庫帳戶
+ `Database` – 您想要存取的資料庫
+ `Port` – 用於連線資料庫執行個體的連接埠號碼
+ `SSL Mode` – 要使用的 SSL 模式

  當您使用 `SSL Mode=Required` 時，SSL 連線會根據 SSL 憑證中的端點來驗證資料庫執行個體端點。
+ `Root Certificate` – Amazon RDS 之 SSL 憑證的完整路徑

  若要下載憑證，請參閱[使用 SSL/TLS 加密與資料庫執行個體或叢集的連線](UsingWithRDS.SSL.md)。

**注意**  
您無法使用自訂 Route 53 DNS 記錄，替代資料庫執行個體端點來產生身分驗證字符。

```
using System;
using Npgsql;
using Amazon.RDS.Util;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            var pwd = RDSAuthTokenGenerator.GenerateAuthToken("postgresmydb.123456789012.us-east-1.rds.amazonaws.com", 5432, "jane_doe");
// for debug only Console.Write("{0}\n", pwd);  //this verifies the token is generated

            NpgsqlConnection conn = new NpgsqlConnection($"Server=postgresmydb.123456789012.us-east-1.rds.amazonaws.com;User Id=jane_doe;Password={pwd};Database=mydb;SSL Mode=Require;Root Certificate=full_path_to_ssl_certificate");
            conn.Open();

            // Define a query
                   NpgsqlCommand cmd = new NpgsqlCommand("select count(*) FROM pg_user", conn);

            // Execute a query
            NpgsqlDataReader dr = cmd.ExecuteReader();

            // Read all rows and output the first column in each row
            while (dr.Read())
                Console.Write("{0}\n", dr[0]);

            // Close connection
            conn.Close();
        }
    }
}
```

如果要透過 Proxy 連線到資料庫執行個體，請參閱 [使用 IAM 身分驗證連線至資料庫](rds-proxy-connecting.md#rds-proxy-connecting-iam)。

# 使用 IAM 身分驗證和 連線至資料庫執行個體 適用於 Go 的 AWS SDK
<a name="UsingWithRDS.IAMDBAuth.Connecting.Go"></a>

您可以使用 連線到 RDS for MariaDB、MySQL 或 PostgreSQL 資料庫執行個體 適用於 Go 的 AWS SDK ，如下所述。

**先決條件**  
以下是使用 IAM 身分驗證連線至資料庫執行個體的先決條件：
+ [啟用和停用 IAM 資料庫身分驗證](UsingWithRDS.IAMDBAuth.Enabling.md)
+ [建立並使用 IAM 政策進行 IAM 資料庫存取](UsingWithRDS.IAMDBAuth.IAMPolicy.md)
+ [使用 IAM 身分驗證建立資料庫帳戶](UsingWithRDS.IAMDBAuth.DBAccounts.md)

**範例**  
若要執行這些程式碼範例，您需要在 AWS 網站上[適用於 Go 的 AWS SDK](https://aws.amazon.com/sdk-for-go/)找到的 。

視需要修改下列變數的值：
+ `dbName` – 您想要存取的資料庫
+ `dbUser` – 您想要存取的資料庫帳戶
+ `dbHost` – 您想要存取之資料庫執行個體的端點
**注意**  
您無法使用自訂 Route 53 DNS 記錄，替代資料庫執行個體端點來產生身分驗證字符。
+ `dbPort` – 用於連線資料庫執行個體的連接埠號碼
+ `region` – 資料庫執行個體執行所在的 AWS 區域

此外，請確定範例程式碼中匯入的程式庫存在於您的系統上。

**重要**  
本節中的範例使用下列程式碼來提供從本機環境存取資料庫的登入資料：  
`creds := credentials.NewEnvCredentials()`  
如果您從 AWS 服務存取資料庫，例如 Amazon EC2 或 Amazon ECS，您可以將程式碼取代為下列程式碼：  
`sess := session.Must(session.NewSession())`  
`creds := sess.Config.Credentials`  
如果您進行此變更，請確定您新增了下列匯入：  
`"github.com/aws/aws-sdk-go/aws/session"`

**Topics**
+ [

## 使用 IAM 身分驗證和 適用於 Go 的 AWS SDK V2 進行連線
](#UsingWithRDS.IAMDBAuth.Connecting.GoV2)
+ [

## 使用 IAM 身分驗證和 適用於 Go 的 AWS SDK V1 進行連線。
](#UsingWithRDS.IAMDBAuth.Connecting.GoV1)

## 使用 IAM 身分驗證和 適用於 Go 的 AWS SDK V2 進行連線
<a name="UsingWithRDS.IAMDBAuth.Connecting.GoV2"></a>

您可以使用 IAM 身分驗證和 適用於 Go 的 AWS SDK V2 連線到資料庫執行個體。

以下程式碼範例顯示如何產生身分驗證字符，然後用來連線至資料庫執行個體。

此程式碼連接到 MariaDB 或 MySQL 資料庫執行個體。

```
package main
                
import (
     "context"
     "database/sql"
     "fmt"

     "github.com/aws/aws-sdk-go-v2/config"
     "github.com/aws/aws-sdk-go-v2/feature/rds/auth"
     _ "github.com/go-sql-driver/mysql"
)

func main() {

     var dbName string = "DatabaseName"
     var dbUser string = "DatabaseUser"
     var dbHost string = "mysqldb.123456789012.us-east-1.rds.amazonaws.com"
     var dbPort int = 3306
     var dbEndpoint string = fmt.Sprintf("%s:%d", dbHost, dbPort)
     var region string = "us-east-1"

    cfg, err := config.LoadDefaultConfig(context.TODO())
    if err != nil {
    	panic("configuration error: " + err.Error())
    }

    authenticationToken, err := auth.BuildAuthToken(
    	context.TODO(), dbEndpoint, region, dbUser, cfg.Credentials)
    if err != nil {
	    panic("failed to create authentication token: " + err.Error())
    }

    dsn := fmt.Sprintf("%s:%s@tcp(%s)/%s?tls=true&allowCleartextPasswords=true",
        dbUser, authenticationToken, dbEndpoint, dbName,
    )

    db, err := sql.Open("mysql", dsn)
    if err != nil {
        panic(err)
    }

    err = db.Ping()
    if err != nil {
        panic(err)
    }
}
```

此程式碼會連線至 PostgreSQL 資料庫執行個體。

```
package main

import (
     "context"
     "database/sql"
     "fmt"

     "github.com/aws/aws-sdk-go-v2/config"
     "github.com/aws/aws-sdk-go-v2/feature/rds/auth"
     _ "github.com/lib/pq"
)

func main() {

     var dbName string = "DatabaseName"
     var dbUser string = "DatabaseUser"
     var dbHost string = "postgresmydb.123456789012.us-east-1.rds.amazonaws.com"
     var dbPort int = 5432
     var dbEndpoint string = fmt.Sprintf("%s:%d", dbHost, dbPort)
     var region string = "us-east-1"

    cfg, err := config.LoadDefaultConfig(context.TODO())
    if err != nil {
    	panic("configuration error: " + err.Error())
    }

    authenticationToken, err := auth.BuildAuthToken(
    	context.TODO(), dbEndpoint, region, dbUser, cfg.Credentials)
    if err != nil {
	    panic("failed to create authentication token: " + err.Error())
    }

    dsn := fmt.Sprintf("host=%s port=%d user=%s password=%s dbname=%s",
        dbHost, dbPort, dbUser, authenticationToken, dbName,
    )

    db, err := sql.Open("postgres", dsn)
    if err != nil {
        panic(err)
    }

    err = db.Ping()
    if err != nil {
        panic(err)
    }
}
```

如果要透過 Proxy 連線到資料庫執行個體，請參閱 [使用 IAM 身分驗證連線至資料庫](rds-proxy-connecting.md#rds-proxy-connecting-iam)。

## 使用 IAM 身分驗證和 適用於 Go 的 AWS SDK V1 進行連線。
<a name="UsingWithRDS.IAMDBAuth.Connecting.GoV1"></a>

您可以使用 IAM 身分驗證和 適用於 Go 的 AWS SDK V1 連線到資料庫執行個體 

以下程式碼範例顯示如何產生身分驗證字符，然後用來連線至資料庫執行個體。

此程式碼連接到 MariaDB 或 MySQL 資料庫執行個體。

```
package main
         
import (
    "database/sql"
    "fmt"
    "log"

    "github.com/aws/aws-sdk-go/aws/credentials"
    "github.com/aws/aws-sdk-go/service/rds/rdsutils"
    _ "github.com/go-sql-driver/mysql"
)

func main() {
    dbName := "app"
    dbUser := "jane_doe"
    dbHost := "mysqldb.123456789012.us-east-1.rds.amazonaws.com"
    dbPort := 3306
    dbEndpoint := fmt.Sprintf("%s:%d", dbHost, dbPort)
    region := "us-east-1"

    creds := credentials.NewEnvCredentials()
    authToken, err := rdsutils.BuildAuthToken(dbEndpoint, region, dbUser, creds)
    if err != nil {
        panic(err)
    }

    dsn := fmt.Sprintf("%s:%s@tcp(%s)/%s?tls=true&allowCleartextPasswords=true",
        dbUser, authToken, dbEndpoint, dbName,
    )

    db, err := sql.Open("mysql", dsn)
    if err != nil {
        panic(err)
    }

    err = db.Ping()
    if err != nil {
        panic(err)
    }
}
```

此程式碼會連線至 PostgreSQL 資料庫執行個體。

```
package main

import (
	"database/sql"
	"fmt"

	"github.com/aws/aws-sdk-go/aws/credentials"
	"github.com/aws/aws-sdk-go/service/rds/rdsutils"
	_ "github.com/lib/pq"
)

func main() {
    dbName := "app"
    dbUser := "jane_doe"
    dbHost := "postgresmydb.123456789012.us-east-1.rds.amazonaws.com"
    dbPort := 5432
    dbEndpoint := fmt.Sprintf("%s:%d", dbHost, dbPort)
    region := "us-east-1"

    creds := credentials.NewEnvCredentials()
    authToken, err := rdsutils.BuildAuthToken(dbEndpoint, region, dbUser, creds)
    if err != nil {
        panic(err)
    }

    dsn := fmt.Sprintf("host=%s port=%d user=%s password=%s dbname=%s",
        dbHost, dbPort, dbUser, authToken, dbName,
    )

    db, err := sql.Open("postgres", dsn)
    if err != nil {
        panic(err)
    }

    err = db.Ping()
    if err != nil {
        panic(err)
    }
}
```

如果要透過 Proxy 連線到資料庫執行個體，請參閱 [使用 IAM 身分驗證連線至資料庫](rds-proxy-connecting.md#rds-proxy-connecting-iam)。

# 使用 IAM 身分驗證和 連線至資料庫執行個體 適用於 Java 的 AWS SDK
<a name="UsingWithRDS.IAMDBAuth.Connecting.Java"></a>

您可以使用 連線到 RDS for MariaDB、MySQL 或 PostgreSQL 資料庫執行個體 適用於 Java 的 AWS SDK ，如下所述。

**先決條件**  
以下是使用 IAM 身分驗證連線至資料庫執行個體的先決條件：
+ [啟用和停用 IAM 資料庫身分驗證](UsingWithRDS.IAMDBAuth.Enabling.md)
+ [建立並使用 IAM 政策進行 IAM 資料庫存取](UsingWithRDS.IAMDBAuth.IAMPolicy.md)
+ [使用 IAM 身分驗證建立資料庫帳戶](UsingWithRDS.IAMDBAuth.DBAccounts.md)
+ [設定適用於 Java 的 AWS SDK](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/setup-install.html)

如需如何使用 SDK for Java 2.x 的範例，請參閱[使用 SDK for Java 2.x 的 Amazon RDS 範例](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/java_rds_code_examples.html)。您也可以使用 AWS 進階 JDBC 包裝函式，請參閱[AWS 進階 JDBC 包裝函式文件](https://github.com/aws/aws-advanced-jdbc-wrapper/blob/main/docs/Documentation.md)。

**Topics**
+ [

## 產生 IAM 身分驗證字符
](#UsingWithRDS.IAMDBAuth.Connecting.Java.AuthToken)
+ [

## 手動建構 IAM 身分驗證字符
](#UsingWithRDS.IAMDBAuth.Connecting.Java.AuthToken2)
+ [

## 連接至資料庫執行個體
](#UsingWithRDS.IAMDBAuth.Connecting.Java.AuthToken.Connect)

## 產生 IAM 身分驗證字符
<a name="UsingWithRDS.IAMDBAuth.Connecting.Java.AuthToken"></a>

如果您使用 撰寫程式 適用於 Java 的 AWS SDK，您可以使用 `RdsIamAuthTokenGenerator`類別取得已簽署的身分驗證字符。使用此類別需要您提供 AWS 登入資料。若要這樣做，您可以建立 `DefaultAWSCredentialsProviderChain`類別的執行個體。 `DefaultAWSCredentialsProviderChain`會使用其在[預設登入資料提供者鏈](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/credentials.html#credentials-default)中找到的第一個 AWS 存取金鑰和私密金鑰。如需有關 AWS 存取金鑰的詳細資訊，請參閱[管理使用者的存取金鑰](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html)。

**注意**  
您無法使用自訂 Route 53 DNS 記錄，替代資料庫執行個體端點來產生身分驗證字符。

建立 `RdsIamAuthTokenGenerator` 的執行個體之後，您可以呼叫 `getAuthToken` 方法來取得已簽署的字符。提供 AWS 區域、主機名稱、連接埠名稱和使用者名稱。以下程式碼範例示範如何執行此作業。

```
package com.amazonaws.codesamples;

import com.amazonaws.auth.DefaultAWSCredentialsProviderChain;
import com.amazonaws.services.rds.auth.GetIamAuthTokenRequest;
import com.amazonaws.services.rds.auth.RdsIamAuthTokenGenerator;

public class GenerateRDSAuthToken {

    public static void main(String[] args) {

	    String region = "us-west-2";
	    String hostname = "rdsmysql.123456789012.us-west-2.rds.amazonaws.com";
	    String port = "3306";
	    String username = "jane_doe";
	
	    System.out.println(generateAuthToken(region, hostname, port, username));
    }

    static String generateAuthToken(String region, String hostName, String port, String username) {

	    RdsIamAuthTokenGenerator generator = RdsIamAuthTokenGenerator.builder()
		    .credentials(new DefaultAWSCredentialsProviderChain())
		    .region(region)
		    .build();

	    String authToken = generator.getAuthToken(
		    GetIamAuthTokenRequest.builder()
		    .hostname(hostName)
		    .port(Integer.parseInt(port))
		    .userName(username)
		    .build());
	    
	    return authToken;
    }

}
```

## 手動建構 IAM 身分驗證字符
<a name="UsingWithRDS.IAMDBAuth.Connecting.Java.AuthToken2"></a>

在 Java 中，產生身分驗證字符最簡單的方式就是使用 `RdsIamAuthTokenGenerator`。此類別會為您建立身分驗證字符，然後使用 AWS 簽章第 4 版進行簽署。如需詳細資訊，請參閱 *AWS 一般參考* 中的 [Signature 第 4 版簽署程序](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html)。

不過，您也可以手動建構和簽署身分驗證字符，如下列程式碼範例所示。

```
package com.amazonaws.codesamples;

import com.amazonaws.SdkClientException;
import com.amazonaws.auth.DefaultAWSCredentialsProviderChain;
import com.amazonaws.auth.SigningAlgorithm;
import com.amazonaws.util.BinaryUtils;
import org.apache.commons.lang3.StringUtils;

import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import java.nio.charset.Charset;
import java.security.MessageDigest;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.SortedMap;
import java.util.TreeMap;

import static com.amazonaws.auth.internal.SignerConstants.AWS4_TERMINATOR;
import static com.amazonaws.util.StringUtils.UTF8;

public class CreateRDSAuthTokenManually {
    public static String httpMethod = "GET";
    public static String action = "connect";
    public static String canonicalURIParameter = "/";
    public static SortedMap<String, String> canonicalQueryParameters = new TreeMap();
    public static String payload = StringUtils.EMPTY;
    public static String signedHeader = "host";
    public static String algorithm = "AWS4-HMAC-SHA256";
    public static String serviceName = "rds-db";
    public static String requestWithoutSignature;

    public static void main(String[] args) throws Exception {

        String region = "us-west-2";
        String instanceName = "rdsmysql.123456789012.us-west-2.rds.amazonaws.com";
        String port = "3306";
        String username = "jane_doe";
	
        Date now = new Date();
        String date = new SimpleDateFormat("yyyyMMdd").format(now);
        String dateTimeStamp = new SimpleDateFormat("yyyyMMdd'T'HHmmss'Z'").format(now);
        DefaultAWSCredentialsProviderChain creds = new DefaultAWSCredentialsProviderChain();
	    String awsAccessKey = creds.getCredentials().getAWSAccessKeyId();
	    String awsSecretKey = creds.getCredentials().getAWSSecretKey();
        String expiryMinutes = "900";
        
        System.out.println("Step 1:  Create a canonical request:");
        String canonicalString = createCanonicalString(username, awsAccessKey, date, dateTimeStamp, region, expiryMinutes, instanceName, port);
        System.out.println(canonicalString);
        System.out.println();

        System.out.println("Step 2:  Create a string to sign:");        
        String stringToSign = createStringToSign(dateTimeStamp, canonicalString, awsAccessKey, date, region);
        System.out.println(stringToSign);
        System.out.println();

        System.out.println("Step 3:  Calculate the signature:");        
        String signature = BinaryUtils.toHex(calculateSignature(stringToSign, newSigningKey(awsSecretKey, date, region, serviceName)));
        System.out.println(signature);
        System.out.println();

        System.out.println("Step 4:  Add the signing info to the request");                
        System.out.println(appendSignature(signature));
        System.out.println();
        
    }

    //Step 1: Create a canonical request date should be in format YYYYMMDD and dateTime should be in format YYYYMMDDTHHMMSSZ
    public static String createCanonicalString(String user, String accessKey, String date, String dateTime, String region, String expiryPeriod, String hostName, String port) throws Exception {
        canonicalQueryParameters.put("Action", action);
        canonicalQueryParameters.put("DBUser", user);
        canonicalQueryParameters.put("X-Amz-Algorithm", "AWS4-HMAC-SHA256");
        canonicalQueryParameters.put("X-Amz-Credential", accessKey + "%2F" + date + "%2F" + region + "%2F" + serviceName + "%2Faws4_request");
        canonicalQueryParameters.put("X-Amz-Date", dateTime);
        canonicalQueryParameters.put("X-Amz-Expires", expiryPeriod);
        canonicalQueryParameters.put("X-Amz-SignedHeaders", signedHeader);
        String canonicalQueryString = "";
        while(!canonicalQueryParameters.isEmpty()) {
            String currentQueryParameter = canonicalQueryParameters.firstKey();
            String currentQueryParameterValue = canonicalQueryParameters.remove(currentQueryParameter);
            canonicalQueryString = canonicalQueryString + currentQueryParameter + "=" + currentQueryParameterValue;
            if (!currentQueryParameter.equals("X-Amz-SignedHeaders")) {
                canonicalQueryString += "&";
            }
        }
        String canonicalHeaders = "host:" + hostName + ":" + port + '\n';
        requestWithoutSignature = hostName + ":" + port + "/?" + canonicalQueryString;

        String hashedPayload = BinaryUtils.toHex(hash(payload));
        return httpMethod + '\n' + canonicalURIParameter + '\n' + canonicalQueryString + '\n' + canonicalHeaders + '\n' + signedHeader + '\n' + hashedPayload;

    }

    //Step 2: Create a string to sign using sig v4
    public static String createStringToSign(String dateTime, String canonicalRequest, String accessKey, String date, String region) throws Exception {
        String credentialScope = date + "/" + region + "/" + serviceName + "/aws4_request";
        return algorithm + '\n' + dateTime + '\n' + credentialScope + '\n' + BinaryUtils.toHex(hash(canonicalRequest));

    }

    //Step 3: Calculate signature
    /**
     * Step 3 of the &AWS; Signature version 4 calculation. It involves deriving
     * the signing key and computing the signature. Refer to
     * http://docs.aws.amazon
     * .com/general/latest/gr/sigv4-calculate-signature.html
     */
    public static byte[] calculateSignature(String stringToSign,
                                            byte[] signingKey) {
        return sign(stringToSign.getBytes(Charset.forName("UTF-8")), signingKey,
                SigningAlgorithm.HmacSHA256);
    }

    public static byte[] sign(byte[] data, byte[] key,
                          SigningAlgorithm algorithm) throws SdkClientException {
        try {
            Mac mac = algorithm.getMac();
            mac.init(new SecretKeySpec(key, algorithm.toString()));
            return mac.doFinal(data);
        } catch (Exception e) {
            throw new SdkClientException(
                    "Unable to calculate a request signature: "
                            + e.getMessage(), e);
        }
    }

    public static byte[] newSigningKey(String secretKey,
                                   String dateStamp, String regionName, String serviceName) {
        byte[] kSecret = ("AWS4" + secretKey).getBytes(Charset.forName("UTF-8"));
        byte[] kDate = sign(dateStamp, kSecret, SigningAlgorithm.HmacSHA256);
        byte[] kRegion = sign(regionName, kDate, SigningAlgorithm.HmacSHA256);
        byte[] kService = sign(serviceName, kRegion,
                SigningAlgorithm.HmacSHA256);
        return sign(AWS4_TERMINATOR, kService, SigningAlgorithm.HmacSHA256);
    }

    public static byte[] sign(String stringData, byte[] key,
                       SigningAlgorithm algorithm) throws SdkClientException {
        try {
            byte[] data = stringData.getBytes(UTF8);
            return sign(data, key, algorithm);
        } catch (Exception e) {
            throw new SdkClientException(
                    "Unable to calculate a request signature: "
                            + e.getMessage(), e);
        }
    }

    //Step 4: append the signature
    public static String appendSignature(String signature) {
        return requestWithoutSignature + "&X-Amz-Signature=" + signature;
    }

    public static byte[] hash(String s) throws Exception {
        try {
            MessageDigest md = MessageDigest.getInstance("SHA-256");
            md.update(s.getBytes(UTF8));
            return md.digest();
        } catch (Exception e) {
            throw new SdkClientException(
                    "Unable to compute hash while signing request: "
                            + e.getMessage(), e);
        }
    }
}
```

## 連接至資料庫執行個體
<a name="UsingWithRDS.IAMDBAuth.Connecting.Java.AuthToken.Connect"></a>

以下程式碼範例顯示如何產生身分驗證權杖，然後用來連接至執行 MariaDB 或 MySQL 的執行個體。

若要執行此程式碼範例，您需要在 AWS 網站上[適用於 Java 的 AWS SDK](https://aws.amazon.com/sdk-for-java/)找到的 。此外，您還需要下列項目：
+ MySQL Connector/J。本程式碼範本經過 `mysql-connector-java-5.1.33-bin.jar` 的測試。
+ 區域特有的 Amazon RDS 中繼憑證 AWS 。(如需詳細資訊，請參閱「[使用 SSL/TLS 加密與資料庫執行個體或叢集的連線](UsingWithRDS.SSL.md)」。) 在執行時間，類別載入器會在此 Java 程式碼範例所在的同一個目錄中尋找憑證，因此類別載入器可以找到憑證。
+ 視需要修改下列變數的值：
  + `RDS_INSTANCE_HOSTNAME` – 您想要存取之資料庫執行個體的主機名稱。
  + `RDS_INSTANCE_PORT` – 用於連線至 PostgreSQL 資料庫執行個體的連接埠號碼。
  + `REGION_NAME` – 資料庫執行個體執行所在的 AWS 區域。
  + `DB_USER` – 您想要存取的資料庫帳戶。
  + `SSL_CERTIFICATE` – 特定於 AWS 區域的 Amazon RDS SSL 憑證。

    若要下載適用於 AWS 區域的憑證，請參閱[使用 SSL/TLS 加密與資料庫執行個體或叢集的連線](UsingWithRDS.SSL.md)。將 SSL 憑證放入此 Java 程式檔案所在的同一個目錄中，讓類別載入器在執行時間可以找到憑證。

此程式碼範例會從預設 AWS 登入資料提供者鏈結取得登入資料。 [https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/credentials.html#credentials-default](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/credentials.html#credentials-default)

**注意**  
為 `DEFAULT_KEY_STORE_PASSWORD` 指定此處所顯示提示以外的密碼，作為安全最佳實務。

```
package com.amazonaws.samples;

import com.amazonaws.services.rds.auth.RdsIamAuthTokenGenerator;
import com.amazonaws.services.rds.auth.GetIamAuthTokenRequest;
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.auth.DefaultAWSCredentialsProviderChain;
import com.amazonaws.auth.AWSStaticCredentialsProvider;

import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.security.KeyStore;
import java.security.cert.CertificateFactory;
import java.security.cert.X509Certificate;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Properties;

import java.net.URL;

public class IAMDatabaseAuthenticationTester {
    //&AWS; Credentials of the IAM user with policy enabling IAM Database Authenticated access to the db by the db user.
    private static final DefaultAWSCredentialsProviderChain creds = new DefaultAWSCredentialsProviderChain();
    private static final String AWS_ACCESS_KEY = creds.getCredentials().getAWSAccessKeyId();
    private static final String AWS_SECRET_KEY = creds.getCredentials().getAWSSecretKey();

    //Configuration parameters for the generation of the IAM Database Authentication token
    private static final String RDS_INSTANCE_HOSTNAME = "rdsmysql.123456789012.us-west-2.rds.amazonaws.com";
    private static final int RDS_INSTANCE_PORT = 3306;
    private static final String REGION_NAME = "us-west-2";
    private static final String DB_USER = "jane_doe";
    private static final String JDBC_URL = "jdbc:mysql://" + RDS_INSTANCE_HOSTNAME + ":" + RDS_INSTANCE_PORT;

    private static final String SSL_CERTIFICATE = "rds-ca-2019-us-west-2.pem";

    private static final String KEY_STORE_TYPE = "JKS";
    private static final String KEY_STORE_PROVIDER = "SUN";
    private static final String KEY_STORE_FILE_PREFIX = "sys-connect-via-ssl-test-cacerts";
    private static final String KEY_STORE_FILE_SUFFIX = ".jks";
    private static final String DEFAULT_KEY_STORE_PASSWORD = "changeit";

    public static void main(String[] args) throws Exception {
        //get the connection
        Connection connection = getDBConnectionUsingIam();

        //verify the connection is successful
        Statement stmt= connection.createStatement();
        ResultSet rs=stmt.executeQuery("SELECT 'Success!' FROM DUAL;");
        while (rs.next()) {
        	    String id = rs.getString(1);
            System.out.println(id); //Should print "Success!"
        }

        //close the connection
        stmt.close();
        connection.close();
        
        clearSslProperties();
        
    }

    /**
     * This method returns a connection to the db instance authenticated using IAM Database Authentication
     * @return
     * @throws Exception
     */
    private static Connection getDBConnectionUsingIam() throws Exception {
        setSslProperties();
        return DriverManager.getConnection(JDBC_URL, setMySqlConnectionProperties());
    }

    /**
     * This method sets the mysql connection properties which includes the IAM Database Authentication token
     * as the password. It also specifies that SSL verification is required.
     * @return
     */
    private static Properties setMySqlConnectionProperties() {
        Properties mysqlConnectionProperties = new Properties();
        mysqlConnectionProperties.setProperty("verifyServerCertificate","true");
        mysqlConnectionProperties.setProperty("useSSL", "true");
        mysqlConnectionProperties.setProperty("user",DB_USER);
        mysqlConnectionProperties.setProperty("password",generateAuthToken());
        return mysqlConnectionProperties;
    }

    /**
     * This method generates the IAM Auth Token.
     * An example IAM Auth Token would look like follows:
     * btusi123---cmz7kenwo2ye---rds---cn-north-1.amazonaws.com.rproxy.goskope.com.cn:3306/?Action=connect&DBUser=iamtestuser&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20171003T010726Z&X-Amz-SignedHeaders=host&X-Amz-Expires=899&X-Amz-Credential=AKIAPFXHGVDI5RNFO4AQ%2F20171003%2Fcn-north-1%2Frds-db%2Faws4_request&X-Amz-Signature=f9f45ef96c1f770cdad11a53e33ffa4c3730bc03fdee820cfdf1322eed15483b
     * @return
     */
    private static String generateAuthToken() {
        BasicAWSCredentials awsCredentials = new BasicAWSCredentials(AWS_ACCESS_KEY, AWS_SECRET_KEY);

        RdsIamAuthTokenGenerator generator = RdsIamAuthTokenGenerator.builder()
                .credentials(new AWSStaticCredentialsProvider(awsCredentials)).region(REGION_NAME).build();
        return generator.getAuthToken(GetIamAuthTokenRequest.builder()
                .hostname(RDS_INSTANCE_HOSTNAME).port(RDS_INSTANCE_PORT).userName(DB_USER).build());
    }

    /**
     * This method sets the SSL properties which specify the key store file, its type and password:
     * @throws Exception
     */
    private static void setSslProperties() throws Exception {
        System.setProperty("javax.net.ssl.trustStore", createKeyStoreFile());
        System.setProperty("javax.net.ssl.trustStoreType", KEY_STORE_TYPE);
        System.setProperty("javax.net.ssl.trustStorePassword", DEFAULT_KEY_STORE_PASSWORD);
    }

    /**
     * This method returns the path of the Key Store File needed for the SSL verification during the IAM Database Authentication to
     * the db instance.
     * @return
     * @throws Exception
     */
    private static String createKeyStoreFile() throws Exception {
        return createKeyStoreFile(createCertificate()).getPath();
    }

    /**
     *  This method generates the SSL certificate
     * @return
     * @throws Exception
     */
    private static X509Certificate createCertificate() throws Exception {
        CertificateFactory certFactory = CertificateFactory.getInstance("X.509");
        URL url = new File(SSL_CERTIFICATE).toURI().toURL();
        if (url == null) {
            throw new Exception();
        }
        try (InputStream certInputStream = url.openStream()) {
            return (X509Certificate) certFactory.generateCertificate(certInputStream);
        }
    }

    /**
     * This method creates the Key Store File
     * @param rootX509Certificate - the SSL certificate to be stored in the KeyStore
     * @return
     * @throws Exception
     */
    private static File createKeyStoreFile(X509Certificate rootX509Certificate) throws Exception {
        File keyStoreFile = File.createTempFile(KEY_STORE_FILE_PREFIX, KEY_STORE_FILE_SUFFIX);
        try (FileOutputStream fos = new FileOutputStream(keyStoreFile.getPath())) {
            KeyStore ks = KeyStore.getInstance(KEY_STORE_TYPE, KEY_STORE_PROVIDER);
            ks.load(null);
            ks.setCertificateEntry("rootCaCertificate", rootX509Certificate);
            ks.store(fos, DEFAULT_KEY_STORE_PASSWORD.toCharArray());
        }
        return keyStoreFile;
    }
    
    /**
     * This method clears the SSL properties.
     * @throws Exception
     */
    private static void clearSslProperties() throws Exception {
           System.clearProperty("javax.net.ssl.trustStore");
           System.clearProperty("javax.net.ssl.trustStoreType");
           System.clearProperty("javax.net.ssl.trustStorePassword"); 
    }
    
}
```

如果要透過 Proxy 連線到資料庫執行個體，請參閱 [使用 IAM 身分驗證連線至資料庫](rds-proxy-connecting.md#rds-proxy-connecting-iam)。

# 使用 IAM 身分驗證和 連線至資料庫執行個體 適用於 Python (Boto3) 的 AWS SDK
<a name="UsingWithRDS.IAMDBAuth.Connecting.Python"></a>

您可以使用 連線到 RDS for MariaDB、MySQL 或 PostgreSQL 資料庫執行個體 適用於 Python (Boto3) 的 AWS SDK ，如下所述。

**先決條件**  
以下是使用 IAM 身分驗證連線至資料庫執行個體的先決條件：
+ [啟用和停用 IAM 資料庫身分驗證](UsingWithRDS.IAMDBAuth.Enabling.md)
+ [建立並使用 IAM 政策進行 IAM 資料庫存取](UsingWithRDS.IAMDBAuth.IAMPolicy.md)
+ [使用 IAM 身分驗證建立資料庫帳戶](UsingWithRDS.IAMDBAuth.DBAccounts.md)

此外，請確定範例程式碼中匯入的程式庫存在於您的系統上。

**範例**  
程式碼範例使用設定檔進行共用登入資料。如需指定登入資料的資訊，請參閱 適用於 Python (Boto3) 的 AWS SDK 文件中的[登入](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/credentials.html)資料。

以下程式碼範例顯示如何產生身分驗證字符，然後用來連線至資料庫執行個體。

若要執行此程式碼範例，您需要在 AWS 網站上[適用於 Python (Boto3) 的 AWS SDK](https://aws.amazon.com/sdk-for-python/)找到的 。

視需要修改下列變數的值：
+ `ENDPOINT` – 您想要存取之資料庫執行個體的端點
+ `PORT` – 用於連線資料庫執行個體的連接埠號碼
+ `USER` – 您想要存取的資料庫帳戶
+ `REGION` – 資料庫執行個體執行所在的 AWS 區域
+ `DBNAME` – 您想要存取的資料庫
+ `SSLCERTIFICATE` – Amazon RDS 之 SSL 憑證的完整路徑

  對於 `ssl_ca`，指定 SSL 憑證。若要下載 SSL 憑證，請參閱[使用 SSL/TLS 加密與資料庫執行個體或叢集的連線](UsingWithRDS.SSL.md)。

**注意**  
您無法使用自訂 Route 53 DNS 記錄，替代資料庫執行個體端點來產生身分驗證字符。

此程式碼連接到 MariaDB 或 MySQL 資料庫執行個體。

在執行此程式碼之前，請遵循 [Python 套件索引](https://pypi.org/project/PyMySQL/)中的指示，來安裝 PyMySQL 驅動程式。

```
import pymysql
import sys
import boto3
import os

ENDPOINT="mysqldb.123456789012.us-east-1.rds.amazonaws.com"
PORT="3306"
USER="jane_doe"
REGION="us-east-1"
DBNAME="mydb"
os.environ['LIBMYSQL_ENABLE_CLEARTEXT_PLUGIN'] = '1'

#gets the credentials from .aws/credentials
session = boto3.Session(profile_name='default')
client = session.client('rds')

token = client.generate_db_auth_token(DBHostname=ENDPOINT, Port=PORT, DBUsername=USER, Region=REGION)

try:
    conn =  pymysql.connect(auth_plugin_map={'mysql_clear_password':None},host=ENDPOINT, user=USER, password=token, port=PORT, database=DBNAME, ssl_ca='SSLCERTIFICATE', ssl_verify_identity=True, ssl_verify_cert=True)
    cur = conn.cursor()
    cur.execute("""SELECT now()""")
    query_results = cur.fetchall()
    print(query_results)
except Exception as e:
    print("Database connection failed due to {}".format(e))
```

此程式碼會連線至 PostgreSQL 資料庫執行個體。

在執行此程式碼之前，請按照 [Psycopg 文件](https://pypi.org/project/psycopg2/)中的指示來安裝 `psycopg2`。

```
import psycopg2
import sys
import boto3
import os

ENDPOINT="postgresmydb.123456789012.us-east-1.rds.amazonaws.com"
PORT="5432"
USER="jane_doe"
REGION="us-east-1"
DBNAME="mydb"

#gets the credentials from .aws/credentials
session = boto3.Session(profile_name='RDSCreds')
client = session.client('rds')

token = client.generate_db_auth_token(DBHostname=ENDPOINT, Port=PORT, DBUsername=USER, Region=REGION)

try:
    conn = psycopg2.connect(host=ENDPOINT, port=PORT, database=DBNAME, user=USER, password=token, sslrootcert="SSLCERTIFICATE")
    cur = conn.cursor()
    cur.execute("""SELECT now()""")
    query_results = cur.fetchall()
    print(query_results)
except Exception as e:
    print("Database connection failed due to {}".format(e))
```

如果要透過 Proxy 連線到資料庫執行個體，請參閱 [使用 IAM 身分驗證連線至資料庫](rds-proxy-connecting.md#rds-proxy-connecting-iam)。

# IAM 資料庫身分驗證的疑難排解
<a name="UsingWithRDS.IAMDBAuth.Troubleshooting"></a>

您可在下列內容中找到某些常見 IAM 資料庫身分驗證問題的疑難排解想法，以及 IAM 資料庫身分驗證的 CloudWatch 日誌和指標的相關資訊。

## 將 IAM 資料庫身分驗證錯誤日誌匯出至 CloudWatch Logs
<a name="UsingWithRDS.IAMDBAuth.Troubleshooting.ErrorLogs"></a>

IAM 資料庫身分驗證錯誤日誌會存放在資料庫主機上，您可以將這些日誌匯出至您的 CloudWatch Logs 帳戶。使用此頁面中的日誌和修補方法對 IAM 資料庫身分驗證問題進行疑難排解。

您可以從主控台 AWS CLI、和 RDS API 啟用日誌匯出至 CloudWatch Logs 的功能。如需主控台指示，請參閱 [將資料庫日誌發佈至 Amazon CloudWatch Logs](USER_LogAccess.Procedural.UploadtoCloudWatch.md)。

若要在從 AWS CLI 建立資料庫執行個體時，將您的 IAM 資料庫身分驗證錯誤日誌匯出至 CloudWatch Logs，請使用下列命令：

```
aws rds create-db-instance --db-instance-identifier mydbinstance \
--region us-east-1 \
--db-instance-class db.t3.large \
--allocated-storage 50 \
--engine postgres \
--engine-version 16 \
--port 5432 \
--master-username master \
--master-user-password password \
--publicly-accessible \
--enable-iam-database-authentication \
--enable-cloudwatch-logs-exports=iam-db-auth-error
```

若要在從 AWS CLI 修改資料庫執行個體時，將您的 IAM 資料庫身分驗證錯誤日誌匯出至 CloudWatch Logs，請使用下列命令：

```
aws rds modify-db-instance --db-instance-identifier mydbinstance \
--region us-east-1 \
--cloudwatch-logs-export-configuration '{"EnableLogTypes":["iam-db-auth-error"]}'
```

若要驗證資料庫執行個體是否正在將 IAM 資料庫身分驗證日誌匯出至 CloudWatch Logs，請檢查 `EnabledCloudwatchLogsExports` 參數是否在 `describe-db-instances` 命令的輸出中設定為 `iam-db-auth-error`。

```
aws rds describe-db-instances --region us-east-1 --db-instance-identifier mydbinstance
            ...
            
             "EnabledCloudwatchLogsExports": [
                "iam-db-auth-error"
            ],
            ...
```

## IAM 資料庫身分驗證 CloudWatch 指標
<a name="UsingWithRDS.IAMDBAuth.Troubleshooting.CWMetrics"></a>

Amazon RDS 為您的 Amazon CloudWatch 帳戶提供近乎即時的 IAM 資料庫身分驗證指標。下表列出可使用 CloudWatch 的 IAM 資料庫身分驗證指標：


| 指標 | 描述 | 
| --- | --- | 
|  `IamDbAuthConnectionRequests`  |  使用 IAM 資料庫身分驗證提出的連線要求總數。  | 
|  `IamDbAuthConnectionSuccess`  |  IAM 資料庫身分驗證要求成功總數。  | 
|  `IamDbAuthConnectionFailure`  |  失敗的 IAM 資料庫身分驗證請求總數。  | 
|  `IamDbAuthConnectionFailureInvalidToken`  | 由於字符無效而失敗的 IAM 資料庫身分驗證請求總數。 | 
|  `IamDbAuthConnectionFailureInsufficientPermissions`  |  由於政策或許可不正確而失敗的 IAM 資料庫身分驗證要求總數。  | 
|  `IamDbAuthConnectionFailureThrottling`  |  由於 IAM 資料庫身分驗證限流而失敗的 IAM 資料庫身分驗證要求總數。  | 
|  `IamDbAuthConnectionFailureServerError`  |  由於 IAM 資料庫身分驗證功能中的內部伺服器錯誤而失敗的 IAM 資料庫身分驗證要求總數。  | 

## 常見問題與解決方案
<a name="UsingWithRDS.IAMDBAuth.Troubleshooting.IssuesSolutions"></a>

 使用 IAM 資料庫身分驗證時可能會遇到下列問題。使用資料表中的修補步驟來解決問題：


| 錯誤 | 指標 | 原因 | 解決方案 | 
| --- | --- | --- | --- | 
|  `[ERROR] Failed to authenticate the connection request for user db_user because the provided token is malformed or otherwise invalid. (Status Code: 400, Error Code: InvalidToken)`  |  `IamDbAuthConnectionFailure` `IamDbAuthConnectionFailureInvalidToken`  |  連線要求中的 IAM 資料庫驗證字符不是有效的 SigV4a 字符，或者格式不正確。  |  檢查應用程式中的字符產生策略。在某些情況下，請確定您使用有效的格式傳遞字符。截斷字符 (或不正確的字串格式) 會使字符無效。  | 
|  `[ERROR] Failed to authenticate the connection request for user db_user because the token age is longer than 15 minutes. (Status Code: 400, Error Code:ExpiredToken)`  |  `IamDbAuthConnectionFailure` `IamDbAuthConnectionFailureInvalidToken`  |  IAM 資料庫身分驗證字符已過期。字符的有效時間為 15 分鐘。  |  檢查您應用程式中的字符快取和/或字符重複使用邏輯。您不應重複使用超過 15 分鐘的字符。  | 
|  `[ERROR] Failed to authorize the connection request for user db_user because the IAM policy assumed by the caller 'arn:aws:sts::123456789012:assumed-role/ <RoleName>/ <RoleSession>' is not authorized to perform `rds-db:connect` on the DB instance. (Status Code: 403, Error Code:NotAuthorized)`  |  `IamDbAuthConnectionFailure` `IamDbAuthConnectionFailureInsufficientPermissions`  |  此錯誤可能由下列原因造成： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/UsingWithRDS.IAMDBAuth.Troubleshooting.html)  |  驗證您在應用程式中擔任的 IAM 角色和/或政策。請確定您擔任以產生字符的政策，與連線至資料庫的政策相同。  | 
|  `[ERROR] Failed to authorize the connection request for user db_user due to IAM DB authentication throttling. (Status Code: 429, Error Code: ThrottlingException)`  |  `IamDbAuthConnectionFailure` `IamDbAuthConnectionFailureThrottling`  | 您在短時間內對資料庫提出太多連線要求。IAM 資料庫身分驗證限流限制為每秒 200 個連線。 |  降低使用 IAM 身分驗證建立新連線的速率。請考慮使用 RDS Proxy 實作連線集區，以便在應用程式中重複使用已建立的連線。  | 
|  `[ERROR] Failed to authorize the connection request for user db_user due to an internal IAM DB authentication error. (Status Code: 500, Error Code: InternalError)`  |  `IamDbAuthConnectionFailure` `IamDbAuthConnectionFailureThrottling` |  使用 IAM 資料庫身分驗證授權資料庫連線時發生內部錯誤。  |  請聯絡 https://aws.amazon.com/premiumsupport/ 以調查問題。  | 

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

請使用以下資訊來協助您診斷和修復使用 Amazon RDS 和 IAM 時發生的常見問題。

**Topics**
+ [

## 我未獲授權在 Amazon RDS 中執行動作
](#security_iam_troubleshoot-no-permissions)
+ [

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

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

## 我未獲授權在 Amazon RDS 中執行動作
<a name="security_iam_troubleshoot-no-permissions"></a>

如果 AWS 管理主控台 告知您無權執行 動作，則必須聯絡您的管理員尋求協助。您的管理員是為您提供簽署憑證的人員。

以下範例錯誤會在 `mateojackson` 使用者嘗試使用主控台檢視 *Widget* 的詳細資訊，但卻沒有 `rds:GetWidget` 許可時發生。

```
User: arn:aws:iam::123456789012:user/mateojackson is not authorized to perform: rds:GetWidget on resource: my-example-widget
```

在此情況下，Mateo 會請求管理員更新他的政策，允許他使用 `my-example-widget` 動作存取 `rds:GetWidget` 資源。

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

若您收到錯誤，告知您並未獲得執行 `iam:PassRole` 動作的授權，您必須聯絡您的管理員以取得協助。您的管理員是為您提供簽署憑證的人員。要求該人員更新您的政策，允許您將角色傳遞給 Amazon RDS。

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

以下範例錯誤會在名為 `marymajor` 的使用者嘗試使用主控台在 Amazon RDS 中執行動作時發生。不過， 動作需要服務具有服務角色授予的許可。Mary 沒有將角色傳遞至該服務的許可。

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

在這種情況下，Mary 會請求管理員更新她的政策，允許她執行 `iam:PassRole` 動作。

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

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

若要進一步了解，請參閱以下內容：
+ 若要了解 Amazon RDS 是否支援這些功能，請參閱[Amazon RDS 如何搭配 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/id_roles_compare-resource-policies.html)。

# 在 Amazon RDS 中記錄和監控
<a name="Overview.LoggingAndMonitoring"></a>

監控是維護 Amazon RDS 和您的 AWS 解決方案可靠性、可用性和效能的重要部分。您應該從 AWS 解決方案的所有部分收集監控資料，以便在發生多點失敗時更輕鬆地偵錯。 AWS 提供數種工具來監控 Amazon RDS 資源並回應潛在事件：

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

**AWS CloudTrail 日誌**  
對於使用者、角色或 AWS 服務在 Amazon RDS 中採取的動作，CloudTrail 會提供記錄。CloudTrail 將 Amazon RDS 的所有 API 呼叫擷取為事件，包括來自主控台的呼叫以及來自對 Amazon RDS API 操作發出的程式碼呼叫。使用由 CloudTrail 收集的資訊，您就可以判斷傳送至 Amazon RDS 的請求、提出請求的 IP 地址、提出請求的對象、提出請求的時間，以及其他詳細資訊。如需詳細資訊，請參閱 [在 AWS CloudTrail 中監控 Amazon RDS API 呼叫](logging-using-cloudtrail.md)。

**Enhanced Monitoring (增強型監控)**  
 Amazon RDS 可針對資料庫執行個體執行所在的作業系統 (OS) 即時提供指標。您可以使用主控台來檢視資料庫執行個體的指標，或在您所選的監控系統中利用來自 Amazon CloudWatch Logs 的增強型監控 JSON 輸出。如需詳細資訊，請參閱 [使用增強型監控來監控作業系統指標](USER_Monitoring.OS.md)。

**Amazon RDS 績效詳情**  
Performance Insights 會延伸現有 Amazon RDS 監控功能的基礎，藉此說明資料庫效能，並幫助您分析可能影響效能的任何問題。利用績效詳情儀表板，您可以將資料庫負載視覺化，並依等候、SQL 陳述式、主機或使用者篩選負載。如需詳細資訊，請參閱 [在 Amazon RDS 上使用績效詳情監控資料庫負載](USER_PerfInsights.md)。

**資料庫日誌**  
您可以使用 、 或 RDS API 檢視 AWS 管理主控台 AWS CLI、下載和監看資料庫日誌。如需詳細資訊，請參閱 [監控 Amazon RDS 日誌檔案](USER_LogAccess.md)。

** Amazon RDS 建議事項**  
 Amazon RDS 提供自動化的資料庫資源建議。這些建議事項會透過分析資料庫執行個體、組態、用量及效能資料以提供最佳實務指南。如需詳細資訊，請參閱 [Amazon RDS 的建議](monitoring-recommendations.md)。

** Amazon RDS 事件通知**  
 Amazon RDS 使用 Amazon Simple Notification Service (Amazon SNS) 在 Amazon RDS 事件發生時提供通知。這些通知可以是 AWS 區域 Amazon SNS 支援的任何通知形式，例如電子郵件、文字訊息或對 HTTP 端點的呼叫。如需詳細資訊，請參閱 [使用 Amazon RDS 事件通知](USER_Events.md)。

**AWS Trusted Advisor**  
Trusted Advisor 利用從為數十萬 AWS 客戶提供服務的最佳實務。 會 Trusted Advisor 檢查您的 AWS 環境，然後在有機會節省成本、改善系統可用性和效能，或協助填補安全漏洞時提出建議。所有 AWS 客戶都可以存取五個 Trusted Advisor 檢查。擁有商業或企業支援計劃的客戶可以檢視所有 Trusted Advisor 檢查。  
Trusted Advisor 具有下列 Amazon RDS 相關檢查：  
+  Amazon RDS 閒置資料庫執行個體
+  Amazon RDS 安全群組存取風險
+  Amazon RDS 備份
+  Amazon RDS 多個可用區域
如需這些檢查的詳細資訊，請參閱 [Trusted Advisor 最佳實務 (檢查)](https://aws.amazon.com/premiumsupport/trustedadvisor/best-practices/)。

如需監控 Amazon RDS 的詳細資訊，請參閱 [監控 Amazon RDS 執行個體中的指標](CHAP_Monitoring.md)。

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

在多個 AWS 合規計劃中，第三方稽核人員會評估 Amazon RDS 的安全與合規。這些計劃包括 SOC、PCI、FedRAMP、HIPAA 等等。

如需特定合規計劃範圍內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)。

您使用 Amazon RDS 時的合規責任取決於資料的機密性、組織的合規目標，以及適用的法律和法規。 AWS提供下列資源來協助合規：
+ [安全與合規快速入門指南](https://aws.amazon.com/quickstart/?awsf.quickstart-homepage-filter=categories%23security-identity-compliance) – 這些部署指南討論架構考量，並提供在其中部署以安全與合規為重心的基準環境的步驟AWS。
+ [Amazon Web Services 上的 HIPAA 安全與合規架構 ](https://docs.aws.amazon.com/pdfs/whitepapers/latest/architecting-hipaa-security-and-compliance-on-aws/architecting-hipaa-security-and-compliance-on-aws.pdf) – 本白皮書說明公司如何使用 AWS來建立符合 HIPAA 規範的應用程式。
+ [AWS合規資源](https://aws.amazon.com/compliance/resources/) – 此工作手冊和指南集合可能適用於您的產業和位置。
+ [AWS Config](https://docs.aws.amazon.com/config/latest/developerguide/evaluate-config.html) – AWS此服務會評估資源組態符合內部實務、產業準則和法規的程度。
+ [AWS Security Hub CSPM](https://docs.aws.amazon.com/securityhub/latest/userguide/what-is-securityhub.html) – 這AWS 服務可讓您全面檢視其中的安全狀態AWS。Security Hub CSPM 使用安全控制來評估您的AWS資源，並檢查是否符合安全產業標準和最佳實務。如需支援的服務和控制項清單，請參閱 [Security Hub CSPM 控制項參考](https://docs.aws.amazon.com/securityhub/latest/userguide/securityhub-controls-reference.html)。

# Amazon RDS 的復原功能
<a name="disaster-recovery-resiliency"></a>

AWS 全球基礎設施是以 AWS 區域與可用區域為中心建置的。AWS區域提供多個分開且隔離的實際可用區域，它們以低延遲、高輸送量和高度備援聯網功能相互連結。透過可用區域，您所設計與操作的應用程式和資料庫，就能夠在可用區域之間自動容錯移轉，而不會發生中斷。可用區域的可用性、容錯能力和擴充能力，均較單一或多個資料中心的傳統基礎設施還高。

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

除了 AWS 全球基礎設施外，Amazon RDS 還提供支援資料復原和備份需求的多項功能。

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

Amazon RDS 建立並儲存您的資料庫執行個體的自動備份。Amazon RDS 會建立資料庫執行個體的儲存體磁碟區快照，因此會備份整個資料庫執行個體，而不只是個別的資料庫。

Amazon RDS 會在資料庫執行個體的備份時段建立資料庫執行個體的自動備份。Amazon RDS 會根據您指定的備份保留期儲存資料庫執行個體的自動備份。如有需要，您可將資料庫復原至備份保留期間的任何時間點。您也可以手動建立資料庫快照，以手動備份資料庫執行個體。

如果來源資料庫執行個體失敗，您可透過還原由此資料庫快照建立資料庫執行個體，做為災難復原解決方案。

如需更多詳細資訊，請參閱 [備份、還原和匯出資料](CHAP_CommonTasks.BackupRestore.md)。

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

Amazon RDS 會使用 MariaDB、MySQL、Oracle 與 PostgreSQL 資料庫引擎的內建複寫功能，從來源資料庫執行個體建立一種特殊類型的資料庫執行個體，稱為僅供讀取複本。對來源資料庫執行個體所做的更新，會以非同步方式複製到僅供讀取複本。您可以將讀取查詢從應用程式路由到僅供讀取複本，以減少來源資料庫執行個體的負載。使用僅供讀取複本，您可以彈性地擴展超越單一資料庫執行個體的容量限制，以處理高讀取量的資料庫工作負載。您可以在來源資料庫執行個體失敗時，提升僅供讀取複本為獨立的執行個體，以做為災難復原解決方案。針對某些資料庫引擎，Amazon RDS 也支援其他複寫選項。

如需更多詳細資訊，請參閱 [使用資料庫執行個體僅供讀取複本](USER_ReadRepl.md)。

## 容錯移轉
<a name="disaster-recovery-resiliency.failover"></a>

使用異地同步備份部署，Amazon RDS 可為資料庫執行個體提供高可用性和容錯移轉支援。Amazon RDS 使用幾個不同技術來提供容錯移轉支援。Oracle、PostgreSQL、MySQL 和 MariaDB 資料庫執行個體的異地同步備份部署是採用 Amazon 的容錯移轉來實作，而 SQL Server 資料庫執行個體則會使用 SQL Server 資料庫鏡像 (DBM) 技術。

如需更多詳細資訊，請參閱 [設定及管理 Amazon RDS 的多可用區域部署](Concepts.MultiAZ.md)。

# Amazon RDS 中的基礎設施安全
<a name="infrastructure-security"></a>

Amazon Relational Database Service 是受管服務，受到 AWS 全球網路安全的保護。如需 AWS 安全服務以及如何 AWS 保護基礎設施的資訊，請參閱[AWS 雲端安全](https://aws.amazon.com/security/)。若要使用基礎設施安全的最佳實務來設計您的 AWS 環境，請參閱*安全支柱 AWS Well-Architected Framework* 中的[基礎設施保護](https://docs.aws.amazon.com/wellarchitected/latest/security-pillar/infrastructure-protection.html)。

您可以使用 AWS 發佈的 API 呼叫，透過網路存取 Amazon RDS。使用者端必須支援下列專案：
+ Transport Layer Security (TLS)。我們需要 TLS 1.2 並建議使用 TLS 1.3。
+ 具備完美轉送私密(PFS)的密碼套件，例如 DHE (Ephemeral Diffie-Hellman)或 ECDHE (Elliptic Curve Ephemeral Diffie-Hellman)。現代系統(如 Java 7 和更新版本)大多會支援這些模式。

此外，Amazon RDS 提供有助於支援基礎設施安全的功能。

## 安全群組
<a name="infrastructure-security.security-groups"></a>

安全群組會控制進出資料庫執行個體流量的存取權限。資料庫執行個體的網路存取預設是關閉的。您可以在允許從 IP 地址範圍、連接埠或安全群組存取的安全群組中指定規則。設定傳入規則後，相同規則就會套用到與該安全群組相關聯的所有資料庫執行個體。

如需詳細資訊，請參閱[使用安全群組控制存取](Overview.RDSSecurityGroups.md)。

## Public accessibility (公開存取性)
<a name="infrastructure-security.publicly-accessible"></a>

當您根據 Amazon VPC 服務啟動虛擬私有雲端 (VPC) 內的資料庫執行個體時，您可以開啟或關閉該資料庫執行個體的公開存取性。請使用 *Public accessibility (公開存取權限)* 參數，來指定您建立的資料庫執行個體是否有解析為公有 IP 地址的 DNS。使用此參數，您就可以指定資料庫執行個體是否可供公開存取。您可以修改 *Public accessibility (公開存取權限)* 參數，藉此修改資料庫執行個體設定，以開啟或關閉公開存取權限。

如需詳細資訊，請參閱[在 VPC 中的網際網路中隱藏資料庫執行個體](USER_VPC.WorkingWithRDSInstanceinaVPC.md#USER_VPC.Hiding)。

**注意**  
如果您的資料庫執行個體位於 VPC 中，但無法公開存取，您也可以使用 an AWS Site-to-Site VPN 連線或 Direct Connect 連線從私有網路存取。如需詳細資訊，請參閱[網際網路流量隱私權](inter-network-traffic-privacy.md)。

# Amazon RDS API 和界面 VPC 端點 (AWS PrivateLink)
<a name="vpc-interface-endpoints"></a>

您可以建立*界面 VPC 端點*，以在您的 VPC 與 Amazon RDS API 端點之間建立私有連線。界面端點是採用 [AWS PrivateLink](https://aws.amazon.com/privatelink) 技術。

AWS PrivateLink 可讓您在沒有網際網路閘道、NAT 裝置、VPN 連線或 Direct Connect 連線的情況下，私下存取 Amazon RDS API 操作。VPC 中的資料庫執行個體不需要公有 IP 地址，就能與 Amazon RDS API 端點進行通訊，以啟動、修改或終止資料庫執行個體。您的資料庫執行個體也不需要公有 IP 地址，就能使用任何可用的 RDS API 操作。您的 VPC 與 Amazon RDS 之間的流量，都會在 Amazon 網路的範圍內。

每個界面端點都是由您子網路中的一或多個彈性網路界面表示。如需彈性網路界面的詳細資訊，請參閱 *Amazon EC2 使用者指南*中的[彈性網路界面](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html)。

如需 VPC 端點的詳細資訊，請參閱《*Amazon* [VPC 使用者指南》中的界面 VPC 端點 (AWS PrivateLink)](https://docs.aws.amazon.com/vpc/latest/userguide/vpce-interface.html)。如需 RDS API 操作的資訊，請參閱 [Amazon RDS API 參考](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/)。

您連線至資料庫執行個體時不需要界面 VPC 端點。如需詳細資訊，請參閱[在 VPC 中存取資料庫執行個體的案例](USER_VPC.Scenarios.md)。

## VPC 端點的考量事項
<a name="vpc-endpoint-considerations"></a>

在設定 Amazon RDS API 端點的界面 VPC 端點前，請務必檢閱《*Amazon VPC 使用者指南*》中的[界面端點屬性和限制](https://docs.aws.amazon.com/vpc/latest/userguide/vpce-interface.html#vpce-interface-limitations)。

所有與管理 Amazon RDS 資源相關的 RDS API 操作都從使用 AWS PrivateLink的 VPC 提供。

RDS API 端點支援 VPC 端點政策。根據預設，允許透過端點對 RDS API 操作進行完整存取。如需詳細資訊，請參閱《*Amazon VPC 使用者指南*》中的[使用 VPC 端點控制對服務的存取](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints-access.html)。

## 可用性
<a name="rds-and-vpc-interface-endpoints-availability"></a>

Amazon RDS API 目前在下列 AWS 區域中支援 VPC 端點：
+ 美國東部 (俄亥俄)
+ 美國東部 (維吉尼亞北部)
+ 美國西部 (加利佛尼亞北部)
+ 美國西部 (奧勒岡)
+ 非洲 (開普敦)
+ 亞太區域 (香港)
+ Asia Pacific (Mumbai)
+ 亞太區域 (紐西蘭)
+ 亞太地區 (大阪)
+ 亞太區域 (首爾)
+ 亞太區域 (新加坡)
+ 亞太地區 (雪梨)
+ 亞太區域 (台北)
+ 亞太區域 (泰國)
+ 亞太地區 (東京)
+ 加拿大 (中部)
+ 加拿大西部 (卡加利)
+ 中國 (北京)
+ 中國 (寧夏)
+ 歐洲 (法蘭克福)
+ 歐洲 (蘇黎世)
+ 歐洲 (愛爾蘭)
+ 歐洲 (倫敦)
+ 歐洲 (巴黎)
+ 歐洲 (斯德哥爾摩)
+ 歐洲 (米蘭)
+ 以色列 (特拉維夫)
+ 墨西哥 (中部)
+ Middle East (Bahrain)
+ 南美洲 (聖保羅)
+ AWS GovCloud （美國東部）
+ AWS GovCloud （美國西部）

## 為 Amazon RDS API 建立界面 VPC 端點
<a name="vpc-endpoint-create"></a>

您可以使用 Amazon VPC 主控台或 AWS Command Line Interface () 為 Amazon RDS API 建立 VPC 端點AWS CLI。如需詳細資訊，請參閱 *Amazon VPC 使用者指南*中的[建立介面端點](https://docs.aws.amazon.com/vpc/latest/userguide/vpce-interface.html#create-interface-endpoint)。

使用服務名稱 `com.amazonaws.region.rds`，為 Amazon RDS API 建立 VPC 端點。

排除中國 AWS 的區域，如果您為端點啟用私有 DNS，您可以使用 VPC 端點對 Amazon RDS 提出 API 請求，並使用其區域的預設 DNS 名稱 AWS ，例如 `rds.us-east-1.amazonaws.com`。對於中國 （北京） 和中國 （寧夏） AWS 區域，您可以`rds-api---cn-northwest-1.amazonaws.com.rproxy.goskope.com.cn`分別使用 `rds-api---cn-north-1.amazonaws.com.rproxy.goskope.com.cn`和 使用 VPC 端點提出 API 請求。

如需詳細資訊，請參閱《Amazon VPC 使用者指南》**中的[透過介面端點存取服務](https://docs.aws.amazon.com/vpc/latest/userguide/vpce-interface.html#access-service-though-endpoint)。

## 為 Amazon RDS API 建立 VPC 端點政策
<a name="vpc-endpoint-policy"></a>

您可以將端點政策連接至控制 Amazon RDS API 存取權限的 VPC 端點。此政策會指定下列資訊：
+ 可執行動作的主體。
+ 可執行的動作。
+ 可供執行動作的資源。

如需詳細資訊，請參閱《*Amazon VPC 使用者指南*》中的[使用 VPC 端點控制對服務的存取](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints-access.html)。

**範例：Amazon RDS API 動作的 VPC 端點政策**  
以下是 Amazon RDS API 端點政策的範例。連接至端點後，此政策會針對所有資源上的所有委託人，授予列出的 Amazon RDS API 動作的存取權限。

```
{
   "Statement":[
      {
         "Principal":"*",
         "Effect":"Allow",
         "Action":[
            "rds:CreateDBInstance",
            "rds:ModifyDBInstance",
            "rds:CreateDBSnapshot"
         ],
         "Resource":"*"
      }
   ]
}
```

**範例：拒絕來自指定 AWS 帳戶的所有存取的 VPC 端點政策**  
下列 VPC 端點政策拒絕 AWS 使用端點帳戶對資源`123456789012`的所有存取。此政策允許來自其他帳戶的所有動作。

```
{
  "Statement": [
    {
      "Action": "*",
      "Effect": "Allow",
      "Resource": "*",
      "Principal": "*"
    },
    {
      "Action": "*",
      "Effect": "Deny",
      "Resource": "*",
      "Principal": { "AWS": [ "123456789012" ] }
     }
   ]
}
```

# Amazon RDS 的安全最佳實務
<a name="CHAP_BestPractices.Security"></a>

使用 AWS Identity and Access Management (IAM) 帳戶來控制對 Amazon RDS API 操作的存取，尤其是建立、修改或刪除 Amazon RDS 資源的操作。這類資源包含資料庫執行個體、安全群組和參數群組。同時也請使用 IAM 控制執行常見管理動作的動作，例如備份和還原資料庫執行個體。
+ 為管理 Amazon RDS 資源的每個人 (包括您自己) 建立個別使用者。請勿使用 AWS 根登入資料來管理 Amazon RDS 資源。
+ 授予每個使用者執行其職責所需最低程度的許可。
+ 使用 IAM 群組來有效管理多個使用者的許可。
+ 定期輪替您的 IAM 登入資料。
+ 設定 AWS Secrets Manager 自動輪換 Amazon RDS 的秘密。如需更多詳細資訊，請參閱 *AWS Secrets Manager 使用者指南*中的[輪換 AWS Secrets Manager 密碼](https://docs.aws.amazon.com/secretsmanager/latest/userguide/rotating-secrets.html)。您也可以透過 AWS Secrets Manager 程式設計方式從 擷取登入資料。如需更多詳細資訊，請參閱 *AWS Secrets Manager 使用者指南*中的[擷取密碼值](https://docs.aws.amazon.com/secretsmanager/latest/userguide/manage_retrieve-secret.html)。

如需 Amazon RDS 安全性的詳細資訊，請參閱[Amazon RDS 的安全性](UsingWithRDS.md)。如需關於 IAM 的詳細資訊，請參閱 [AWS Identity and Access Management](https://docs.aws.amazon.com/IAM/latest/UserGuide/Welcome.html)。如需 IAM 最佳實務的資訊，請參閱 [IAM 最佳實務](https://docs.aws.amazon.com/IAM/latest/UserGuide/IAMBestPractices.html)。

AWS Security Hub CSPM 使用安全控制來評估資源組態和安全標準，以協助您遵守各種合規架構。如需使用 Security Hub CSPM 評估 RDS 資源的詳細資訊，請參閱 AWS Security Hub 《 使用者指南》中的 [Amazon Relational Database Service 控制項](https://docs.aws.amazon.com/securityhub/latest/userguide/rds-controls.html)。

您可以使用 Security Hub CSPM 來監控 RDS 的使用，因為它與安全最佳實務相關。如需詳細資訊，請參閱[什麼是 AWS Security Hub CSPM？](https://docs.aws.amazon.com/securityhub/latest/userguide/what-is-securityhub.html)。

使用 AWS CLI、 AWS 管理主控台或 RDS API 來變更主要使用者的密碼。如果您使用其他工具 (如 SQL 用戶端) 來變更主要使用者的密碼，可能會導致系統意外撤銷使用者權限。

# 使用安全群組控制存取
<a name="Overview.RDSSecurityGroups"></a>

VPC 安全群組會控制進出資料庫執行個體流量的存取權限。根據預設，您資料庫執行個體的網路存取是關閉的。您可以在允許從 IP 地址範圍、連接埠或安全群組存取的安全群組中指定規則。設定傳入規則後，相同規則就會套用到與該安全群組相關聯的所有資料庫執行個體。您最多可在安全群組中指定 20 條規則。

## VPC 安全群組概觀
<a name="Overview.RDSSecurityGroups.VPCSec"></a>

每個 VPC 安全群組都可能可以讓特定來源存取 VPC 中與該 VPC 安全群組相關聯的資料庫執行個體。來源可以是地址的來源 (例如，203.0.113.0/24) 或另一個 VPC 安全群組。藉由指定 VPC 安全群組做為來源，您允許從使用來源 VPC 安全群組的所有執行個體 (通常指的是應用程式伺服器) 傳入的流量。VPC 安全群組可以擁有同時掌管入站和出站流量的規則。但是，傳出流量規則通常不適用於資料庫執行個體。僅在資料庫執行個體充當用戶端時，傳出流量規則才適用。例如，傳出流量規則適用於具有傳出資料庫連結的 Oracle 資料庫執行個體。您必須使用 [Amazon EC2 API](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Welcome.html) 或 VPC 主控台上的 **Security Group** (安全群組) 選項，才能建立 VPC 安全群組。

為您的 VPC 安全群組建立允許存取 VPC 中執行個體的規則時，您必須針對規則允許存取的每個地址範圍指定一個連接埠。例如，如果您想要對 VPC 中的執行個體開啟安全殼 (SSH) 存取，則可以建立一個規則，允許存取所指定之地址範圍的 TCP 連接埠 22。

您可以設定多個 VPC 安全群組，允許存取 VPC 中不同執行個體的不同連接埠。例如，您可以建立 VPC 安全群組，允許存取 VPC 中 Web 伺服器的 TCP 連接埠 80。然後，您可以建立另一個 VPC 安全群組，允許存取 VPC 中 RDS for MySQL 資料庫執行個體的 TCP 連接埠 3306。

如需 VPC 安全群組的詳細資訊，請參閱《Amazon Virtual Private Cloud 使用者指南》**中的[安全群組](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html)。

**注意**  
如果您的資料庫執行個體位於 VPC 中，但無法公開存取，您也可以使用 an AWS Site-to-Site VPN 連線或 Direct Connect 連線從私有網路存取。如需詳細資訊，請參閱 [網際網路流量隱私權](inter-network-traffic-privacy.md)。

## 安全群組案例
<a name="Overview.RDSSecurityGroups.Scenarios"></a>

VPC 中資料庫執行個體的常見使用方式，是與在相同 VPC 的 Amazon EC2 執行個體中執行的應用程式伺服器共享資料，這是由 VPC 外的應用程式用戶端存取的。在此案例中，您可以使用 上的 RDS 和 VPC 頁面 AWS 管理主控台 或 RDS 和 EC2 API 操作來建立必要的執行個體和安全群組：

1. 建立 VPC 安全群組 (例如，`sg-0123ec2example`)，並定義使用用戶端應用程式之 IP 地址做為來源的傳入規則。此安全群組可讓您的用戶端應用程式連接至 VPC 中使用此安全群組的 EC2 執行個體。

1. 建立應用程式的 EC2 執行個體，並將 EC2 執行個體新增至您在前一個步驟中建立的 VPC 安全群組 (`sg-0123ec2example`)。

1. 建立第二個 VPC 安全群組 (例如，`sg-6789rdsexample`)，並建立新規則，方法為指定您在步驟 1 中建立的 VPC 安全群組 (`sg-0123ec2example`) 做為來源。

1. 建立新的資料庫執行個體，並將資料庫執行個體新增至您在前一個步驟中建立的 VPC 安全群組 (`sg-6789rdsexample`)。當建立資料庫執行個體時，請使用您為步驟 3 中所建立 VPC 安全群組 (`sg-6789rdsexample`) 規則指定的相同連接埠號碼。

此案例可以下列圖表顯示。

![\[VPC 中的資料庫執行個體和 EC2 執行個體\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/con-VPC-sec-grp.png)


如需此案例中設定 VPC 的詳細說明，請參閱 [教學課程：建立要與資料庫執行個體搭配使用的 VPC (僅限 IPv4)](CHAP_Tutorials.WebServerDB.CreateVPC.md)。如需使用 VPC 的詳細資訊，請參閱 [Amazon VPC 和 Amazon RDS](USER_VPC.md)。

## 建立 VPC 安全群組
<a name="Overview.RDSSecurityGroups.Create"></a>

您可以使用 VPC 主控台，建立資料庫執行個體的 VPC 安全群組。如需建立安全群組的相關資訊，請參閱《Amazon Virtual Private Cloud 使用者指南》**中的[建立安全群組以存取在您的 VPC 中您的資料庫執行個體](CHAP_SettingUp.md#CHAP_SettingUp.SecurityGroup)和[安全群組](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html)。

## 將安全群組與資料庫執行個體建立關聯
<a name="Overview.RDSSecurityGroups.Associate"></a>

您可以使用 RDS 主控台上的**修改**、Amazon RDS API `ModifyDBInstance` 或 `modify-db-instance` AWS CLI 命令，將安全群組與資料庫執行個體建立關聯。

下列 CLI 範例會建立特定 VPC 安全群組的關聯，並從資料庫執行個體中移除資料庫安全群組

```
aws rds modify-db-instance --db-instance-identifier dbName --vpc-security-group-ids sg-ID
```

 如需修改資料庫執行個體的相關資訊，請參閱 [修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。如需您從資料庫快照還原資料庫執行個體時的安全群組考量，請參閱 [安全群組考量](USER_RestoreFromSnapshot.md#USER_RestoreFromSnapshot.Security)。

**注意**  
如果連接埠值設定為非預設值，RDS 主控台會為您的資料庫顯示不同的安全群組規則名稱。

對於 RDS for Oracle 資料庫執行個體，可以透過填入 Oracle Enterprise Manager Database Express (OEM)、Oracle Management Agent for Enterprise Manager Cloud Control (OEM Agent) 和 Oracle Secure Sockets Layer 選項的安全群組選項設定，來關聯其他安全群組。在此情況下，與資料庫執行個體相關聯的安全群組和選項設定都會套用至資料庫執行個體。如需這些選項的詳細資訊，請參閱 [Oracle Enterprise Manager](Oracle.Options.OEM.md)、[適用於 Enterprise Manager Cloud Control 的 Oracle Management Agent](Oracle.Options.OEMAgent.md) 和 [Oracle Secure Sockets Layer](Appendix.Oracle.Options.SSL.md)。

# 主要使用者帳戶權限
<a name="UsingWithRDS.MasterAccounts"></a>

在您建立新的資料庫執行個體時，您使用的預設主要使用者會取得該資料庫執行個體的特定權限。您無法在資料庫執行個體建立之後變更主要使用者名稱。

**重要**  
我們強烈建議您不要直接在您的應用程式中使用主要使用者。而是遵循最佳實務，使用以應用程式所需的最低權限建立的資料庫使用者。

**注意**  
如果您不慎除主要使用者的許可，則可以透過修改資料庫執行個體並設定新的主要使用者密碼來還原它們。如需修改資料庫執行個體的詳細資訊，請參閱  [修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)  。

下表顯示主要使用者針對每一個資料庫引擎取得的權限和資料庫角色。


|  資料庫引擎  |  系統權限  |  資料庫角色  | 
| --- | --- | --- | 
|  RDS for Db2  |  主要使用者會指派給 `masterdba` 群組，並指派 `master_user_role`。  `SYSMON`、`DBADM` 搭配 `DATAACCESS` AND `ACCCESSCTRL`、`BINDADD`、`CONNECT`、`CREATETAB`、`CREATE_SECURE_OBJECT`、`EXPLAIN`、`IMPLICIT_SCHEMA`、`LOAD`、`SQLADM`、`WLMADM`  |   `DBA`,`DBA_RESTRICTED`, `DEVELOPER`,`ROLE_NULLID_PACKAGES`, `ROLE_PROCEDURES`,`ROLE_TABLESPACES`  如需詳細資訊，請參閱 [Amazon RDS for Db2 預設角色](db2-default-roles.md)。  | 
|  RDS for MariaDB  |   `SELECT`,`INSERT`,`UPDATE`,`DELETE`, `CREATE`,`DROP`,`RELOAD`, `PROCESS`,`REFERENCES`,`INDEX`, `ALTER`,`SHOW DATABASES`,`CREATE TEMPORARY TABLES`,`LOCK TABLES`, `EXECUTE`,`REPLICATION CLIENT`,`CREATE VIEW`,`SHOW VIEW`,`CREATE ROUTINE`, `ALTER ROUTINE`,`CREATE USER`, `EVENT`,`TRIGGER`,`REPLICATION SLAVE`  從 RDS for MariaDB 11.4 版開始，主要使用者也會取得 `SHOW CREATE ROUTINE` 權限。  |  —  | 
|  RDS for MySQL 8.0.36 和更高版本  |   `SELECT`,`INSERT`,`UPDATE`, `DELETE`,`CREATE`,`DROP`, `RELOAD`,`PROCESS`, `REFERENCES`,`INDEX`,`ALTER`, `SHOW DATABASES`,`CREATE TEMPORARY TABLES`,`LOCK TABLES`,`EXECUTE`, `REPLICATION SLAVE`,`REPLICATION CLIENT`, `CREATE VIEW`,`SHOW VIEW`,`CREATE ROUTINE`,`ALTER ROUTINE`,`CREATE USER`,`EVENT`,`TRIGGER`, `CREATE ROLE`,`DROP ROLE`, `APPLICATION_PASSWORD_ADMIN`, `ROLE_ADMIN`,`SET_USER_ID`, `XA_RECOVER_ADMIN`   |   `rds_superuser_role`  如需 `rds_superuser_role` 的相關資訊，請參閱 [RDS for MySQL 的角色型權限模型](Appendix.MySQL.CommonDBATasks.privilege-model.md)。  | 
|  低於 8.0.36 的 RDS for MySQL 版本  |   `SELECT`,`INSERT`,`UPDATE`, `DELETE`,`CREATE`,`DROP`, `RELOAD`,`PROCESS`, `REFERENCES`,`INDEX`,`ALTER`, `SHOW DATABASES`,`CREATE TEMPORARY TABLES`,`LOCK TABLES`,`EXECUTE`, `REPLICATION CLIENT`,`CREATE VIEW`, `SHOW VIEW`,`CREATE ROUTINE`,`ALTER ROUTINE`,`CREATE USER`,`EVENT`, `TRIGGER`,`REPLICATION SLAVE`   |  —  | 
|  RDS for PostgreSQL  |   `CREATE ROLE`,`CREATE DB`, `PASSWORD VALID UNTIL INFINITY`,`CREATE EXTENSION`,`ALTER EXTENSION`,`DROP EXTENSION`,`CREATE TABLESPACE`,`ALTER <OBJECT> OWNER`,`CHECKPOINT`, `PG_CANCEL_BACKEND()`, `PG_TERMINATE_BACKEND()`,`SELECT PG_STAT_REPLICATION`,`EXECUTE PG_STAT_STATEMENTS_RESET()`,`OWN POSTGRES_FDW_HANDLER()`,`OWN POSTGRES_FDW_VALIDATOR()`,`OWN POSTGRES_FDW`, `EXECUTE PG_BUFFERCACHE_PAGES()`,`SELECT PG_BUFFERCACHE`   |   `RDS_SUPERUSER`  如需 RDS\$1SUPERUSER 的詳細資訊，請參閱 [了解 PostgreSQL 角色和許可](Appendix.PostgreSQL.CommonDBATasks.Roles.md)。  | 
|  RDS for Oracle  |   `ADMINISTER DATABASE TRIGGER`,`ALTER DATABASE LINK`,`ALTER PUBLIC DATABASE LINK`, `AUDIT SYSTEM`,`CHANGE NOTIFICATION`, `DROP ANY DIRECTORY`,`EXEMPT ACCESS POLICY`,`EXEMPT IDENTITY POLICY`,`EXEMPT REDACTION POLICY`,`FLASHBACK ANY TABLE`, `GRANT ANY OBJECT PRIVILEGE`,`RESTRICTED SESSION`,`SELECT ANY TABLE`,`UNLIMITED TABLESPACE`   |   `DBA`   `DBA` 角色無需下列權限：  `ALTER DATABASE`,`ALTER SYSTEM`, `CREATE ANY DIRECTORY`,`CREATE EXTERNAL JOB`,`CREATE PLUGGABLE DATABASE`, `GRANT ANY PRIVILEGE`,`GRANT ANY ROLE`,`READ ANY FILE GROUP`    | 
|  Amazon RDS for Microsoft SQL Server  |   `ADMINISTER BULK OPERATIONS`,`ALTER ANY CONNECTION`,`ALTER ANY CREDENTIAL`, `ALTER ANY EVENT SESSION`,`ALTER ANY LINKED SERVER`,`ALTER ANY LOGIN`,`ALTER ANY SERVER AUDIT`,`ALTER ANY SERVER ROLE`, `ALTER SERVER STATE`,`ALTER TRACE`, `CONNECT SQL`,`CREATE ANY DATABASE`, `VIEW ANY DATABASE`,`VIEW ANY DEFINITION`,`VIEW SERVER STATE`,`ALTER ON ROLE SQLAgentOperatorRole`   |   `DB_OWNER` (資料庫層級角色)、`PROCESSADMIN` (伺服器層級角色)、`SETUPADMIN` (伺服器層級角色)、`SQLAgentUserRole` (資料庫層級角色)、`SQLAgentReaderRole` (資料庫層級角色) 和 `SQLAgentOperatorRole` (資料庫層級角色)  | 

# 使用 Amazon RDS 的服務連結角色
<a name="UsingWithRDS.IAM.ServiceLinkedRoles"></a>

Amazon RDS 使用 AWS Identity and Access Management (IAM)[ 服務連結角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#iam-term-service-linked-role)。服務連結角色是直接連結至 Amazon RDS 的一種特殊 IAM 角色類型。服務連結角色是由 Amazon RDS 預先定義，並包含該服務代表您呼叫其他 AWS 服務所需的所有許可。

服務連結角色可讓您更輕鬆使用 Amazon RDS，因為您不需要手動新增必要許可。Amazon RDS 定義其服務連結角色的許可，除非另有定義，否則僅有 Amazon RDS 可以擔任其角色。定義的許可包括信任政策和許可政策，並且該許可政策不能附加到任何其他 IAM 實體。

您必須先刪除角色的相關資源，才能刪除角色。如此可保護您的 Amazon RDS 資源，避免您不小心移除資源的存取許可。

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

## Amazon RDS 的服務連結角色許可
<a name="service-linked-role-permissions"></a>

Amazon RDS 使用名為 AWSServiceRoleForRDS 的服務連結角色，以允許 Amazon RDS 代表資料庫執行個體呼叫 AWS 服務。

AWSServiceRoleForRDS 服務連結角色信任下列服務可擔任該角色：
+ `rds.amazonaws.com`

此服務連結角色具有名為 `AmazonRDSServiceRolePolicy` 的許可政策，該政策會授予此角色在帳戶中操作的許可。

如需有關此政策的詳細資訊，包括 JSON 政策文件，請參閱《AWS 受管政策參考指南》**中的 [AmazonRDSServiceRolePolicy](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonRDSServiceRolePolicy.html)。

**注意**  
您必須設定許可，IAM 實體 (如使用者、群組或角色) 才可建立、編輯或刪除服務連結角色。如果您遇到下列錯誤訊息：  
**無法建立資源。請確認您擁有建立服務連結角色的許可。否則請等待，然後再試一次。**  
 請確定您已啟用下列許可：  

```
{
    "Action": "iam:CreateServiceLinkedRole",
    "Effect": "Allow",
    "Resource": "arn:aws:iam::*:role/aws-service-role/rds.amazonaws.com/AWSServiceRoleForRDS",
    "Condition": {
        "StringLike": {
            "iam:AWSServiceName":"rds.amazonaws.com"
        }
    }
}
```
 如需詳細資訊，請參閱 *IAM 使用者指南*中的[服務連結角色許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#service-linked-role-permissions)。

### 為 Amazon RDS 建立服務連結角色
<a name="create-service-linked-role"></a>

您不需要手動建立一個服務連結角色。當您建立資料庫執行個體時，Amazon RDS 會為您建立服務連結角色。

**重要**  
Amazon RDS 自 2017 年 12 月 1 日開始支援服務連結角色，若您在這之前就有使用此服務，則 Amazon RDS 會在帳戶中建立 AWSServiceRoleForRDS 角色。若要進一步了解，請參閱[我的 AWS 帳戶中出現的新角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/troubleshoot_roles.html#troubleshoot_roles_new-role-appeared)。

若您刪除此服務連結角色，之後需要再次建立，您可以在帳戶中使用相同程序重新建立角色。當您建立資料庫執行個體時，Amazon RDS 會再次為您建立服務連結角色。

### 為 Amazon RDS 編輯服務連結角色
<a name="edit-service-linked-role"></a>

Amazon RDS 不允許您編輯 AWSServiceRoleForRDS 服務連結角色。因為有各種實體可能會參考服務連結角色，所以您無法在建立角色之後變更角色名稱。然而，您可使用 IAM 來編輯角色描述。如需詳細資訊，請參閱《*IAM 使用者指南*》中的[編輯服務連結角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#edit-service-linked-role)。

### 為 Amazon RDS 刪除服務連結角色
<a name="delete-service-linked-role"></a>

若您不再使用需要服務連結角色的功能或服務，我們建議您刪除該角色。如此一來，您就沒有未主動監控或維護的未使用實體。但是，您必須先刪除所有資料庫執行個體，才能刪除服務連結角色。

#### 清除服務連結角色
<a name="service-linked-role-review-before-delete"></a>

您必須先確認服務連結角色沒有作用中的工作階段，並移除該角色使用的資源，之後才能使用 IAM 將其刪除。

**檢查服務連結角色是否於 IAM 主控台有作用中的工作階段**

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

1. 在 IAM 主控台的導覽窗格中，選擇**角色**。然後選擇 AWSServiceRoleForRDS 角色的名稱 (而非核取方塊)。

1. 在所選角色的**摘要**頁面中，選擇**上次存取**索引標籤。

1. 在**上次存取**索引標籤上，檢閱服務連結角色的近期活動。
**注意**  
如果您不確定 Amazon RDS 是否正在使用 AWSServiceRoleForRDS 角色，可嘗試刪除該角色。如果服務正在使用該角色，則刪除會失敗，而您可以檢視正在使用該角色的 AWS 區域。如果服務正在使用該角色，您必須先等到工作階段結束，才能刪除該角色。您無法撤銷服務連結角色的工作階段。

如果您想要移除 AWSServiceRoleForRDS 角色，首先務必要刪除*所有*資料庫執行個體。

##### 刪除您的所有執行個體
<a name="delete-service-linked-role.delete-rds-instances"></a>

使用下列其中一個程序來刪除您的每一個執行個體。

**刪除執行個體 (主控台)**

1. 前往 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)，開啟 Amazon RDS 主控台。

1. 在導覽窗格中，選擇 **Databases** (資料庫)。

1. 選擇想要刪除的執行個體。

1. 對於 **Actions** (動作)，請選擇 **Delete** (刪除)。

1. 若出現 **Create final Snapshot? (是否建立最終快照？)** 提示訊息，請選擇 **Yes (是)** 或 **No (否)**。

1. 如果您在前一個步驟中選擇 **Yes (是)**，則對於 **Final snapshot name (最終快照名稱)**，輸入您的最終快照名稱。

1. 選擇 **刪除**。

**刪除執行個體 (CLI)**  
請參閱 *AWS CLI 命令參考*中的 `[delete-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/delete-db-instance.html)`。

**刪除執行個體 (API)**  
請參閱 *Amazon RDS API 參考*中的 `[DeleteDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DeleteDBInstance.html)`。

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

## Amazon RDS Custom 的服務連結角色許可
<a name="slr-permissions-custom"></a>

Amazon RDS Custom 使用名為 的服務連結角色`AWSServiceRoleForRDSCustom`，以允許 RDS Custom 代表 RDS 資料庫資源呼叫 AWS 服務。

AWSServiceRoleForRDSCustom 服務連結角色信任下列服務可擔任該角色：
+ `custom.rds.amazonaws.com`

此服務連結角色具有名為 `AmazonRDSCustomServiceRolePolicy` 的許可政策，該政策會授予此角色在帳戶中操作的許可。

為 RDS Custom 建立、編輯或刪除服務連結角色的運作方式與 Amazon RDS 相同。如需詳細資訊，請參閱[AWS 受管政策：AmazonRDSCustomServiceRolePolicy](rds-security-iam-awsmanpol.md#rds-security-iam-awsmanpol-AmazonRDSCustomServiceRolePolicy)。

**注意**  
您必須設定許可，IAM 實體 (如使用者、群組或角色) 才可建立、編輯或刪除服務連結角色。如果您遇到下列錯誤訊息：  
**無法建立資源。請確認您擁有建立服務連結角色的許可。否則請等待，然後再試一次。**  
 請確定您已啟用下列許可：  

```
{
    "Action": "iam:CreateServiceLinkedRole",
    "Effect": "Allow",
    "Resource": "arn:aws:iam::*:role/aws-service-role/custom.rds.amazonaws.com/AmazonRDSCustomServiceRolePolicy",
    "Condition": {
        "StringLike": {
            "iam:AWSServiceName":"custom.rds.amazonaws.com"
        }
    }
}
```
 如需詳細資訊，請參閱 *IAM 使用者指南*中的[服務連結角色許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#service-linked-role-permissions)。

## Amazon RDS Beta 的服務連結角色許可
<a name="slr-permissions-rdsbeta"></a>

Amazon RDS 使用名為 的服務連結角色`AWSServiceRoleForRDSBeta`，以允許 Amazon RDS 代表 RDS 資料庫資源呼叫 AWS 服務。

AWSServiceRoleForRDSBeta 服務連結角色信任下列服務可擔任該角色：
+ `rds.amazonaws.com`

此服務連結角色具有名為 `AmazonRDSBetaServiceRolePolicy` 的許可政策，該政策會授予此角色在帳戶中操作的許可。如需詳細資訊，請參閱[AWS 受管政策：AmazonRDSBetaServiceRolePolicy](rds-security-iam-awsmanpol.md#rds-security-iam-awsmanpol-AmazonRDSBetaServiceRolePolicy)。

**注意**  
您必須設定許可，IAM 實體 (如使用者、群組或角色) 才可建立、編輯或刪除服務連結角色。如果您遇到下列錯誤訊息：  
**無法建立資源。請確認您擁有建立服務連結角色的許可。否則請等待，然後再試一次。**  
 請確定您已啟用下列許可：  

```
{
    "Action": "iam:CreateServiceLinkedRole",
    "Effect": "Allow",
    "Resource": "arn:aws:iam::*:role/aws-service-role/custom.rds.amazonaws.com/AmazonRDSBetaServiceRolePolicy",
    "Condition": {
        "StringLike": {
            "iam:AWSServiceName":"custom.rds.amazonaws.com"
        }
    }
}
```
 如需詳細資訊，請參閱 *IAM 使用者指南*中的[服務連結角色許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#service-linked-role-permissions)。

## Amazon RDS 預覽的服務連結角色
<a name="slr-permissions-rdspreview"></a>

Amazon RDS 使用名為 的服務連結角色`AWSServiceRoleForRDSPreview`，以允許 Amazon RDS 代表 RDS 資料庫資源呼叫 AWS 服務。

AWSServiceRoleForRDSPreview 服務連結角色信任下列服務擔任該角色：
+ `rds.amazonaws.com`

此服務連結角色具有名為 `AmazonRDSPreviewServiceRolePolicy` 的許可政策，該政策會授予此角色在帳戶中操作的許可。如需詳細資訊，請參閱[AWS 受管政策：AmazonRDSPreviewServiceRolePolicy](rds-security-iam-awsmanpol.md#rds-security-iam-awsmanpol-AmazonRDSPreviewServiceRolePolicy)。

**注意**  
您必須設定許可，IAM 實體 (如使用者、群組或角色) 才可建立、編輯或刪除服務連結角色。如果您遇到下列錯誤訊息：  
**無法建立資源。請確認您擁有建立服務連結角色的許可。否則請等待，然後再試一次。**  
 請確定您已啟用下列許可：  

```
{
    "Action": "iam:CreateServiceLinkedRole",
    "Effect": "Allow",
    "Resource": "arn:aws:iam::*:role/aws-service-role/custom.rds.amazonaws.com/AmazonRDSPreviewServiceRolePolicy",
    "Condition": {
        "StringLike": {
            "iam:AWSServiceName":"custom.rds.amazonaws.com"
        }
    }
}
```
 如需詳細資訊，請參閱 *IAM 使用者指南*中的[服務連結角色許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#service-linked-role-permissions)。

# Amazon VPC 和 Amazon RDS
<a name="USER_VPC"></a>

Amazon Virtual Private Cloud (Amazon VPC) 可讓您在 Virtual Private Cloud (VPC) 中啟動 Amazon RDS 資料庫執行個體叢集等 AWS 資源。

使用 VPC 時，您可以掌控您的虛擬聯網環境。您可以選擇自己的 IP 地址範圍、建立子網路，以及設定路由和存取控制清單。在 VPC 中執行資料庫執行個體無需額外成本。

帳戶有預設 VPC。系統會在預設 VPC 中建立所有新的資料庫執行個體，除非您另外指定。

**Topics**
+ [

# 在 VPC 中使用資料庫執行個體
](USER_VPC.WorkingWithRDSInstanceinaVPC.md)
+ [

# 更新資料庫執行個體的 VPC
](USER_VPC.VPC2VPC.md)
+ [

# 在 VPC 中存取資料庫執行個體的案例
](USER_VPC.Scenarios.md)
+ [

# 教學課程：建立要與資料庫執行個體搭配使用的 VPC (僅限 IPv4)
](CHAP_Tutorials.WebServerDB.CreateVPC.md)
+ [

# 教學課程：建立要與資料庫執行個體搭配使用的 (VPC)(雙堆疊模式)
](CHAP_Tutorials.CreateVPCDualStack.md)
+ [

# 將不在 VPC 中的資料庫執行個體移入 VPC
](USER_VPC.Non-VPC2VPC.md)

在以下內容中，您可以找到 Amazon RDS 資料庫執行個體的 VPC 功能相關的討論。如需 Amazon VPC 的詳細資訊，請參閱 [Amazon VPC 入門指南](https://docs.aws.amazon.com/AmazonVPC/latest/GettingStartedGuide/)和 [Amazon VPC 使用者指南](https://docs.aws.amazon.com/vpc/latest/userguide/)。

# 在 VPC 中使用資料庫執行個體
<a name="USER_VPC.WorkingWithRDSInstanceinaVPC"></a>

您的資料庫執行個體位在虛擬私有雲端 (VPC) 內。VPC 是一種虛擬網路，在邏輯上與 AWS 雲端中的其他虛擬網路隔離。Amazon VPC 可讓您在 VPC 中啟動 AWS 資源，例如 Amazon RDS 資料庫執行個體或 Amazon EC2 執行個體。VPC 可以是您帳戶隨附的預設 VPC，或是您自行建立的 VPC。所有 VPCs都與 AWS 您的帳戶相關聯。

您的預設 VPC 有三個子網路，可供您在 VPC 內隔離資源。預設的 VPC 也有網際網路閘道，只要利用網際網路閘道，即可允許從 VPC 以外的位置存取 VPC 內的資源。

如需涉及 VPC 內外 Amazon RDS 資料庫執行個體的藍本清單，請參閱 [在 VPC 中存取資料庫執行個體的案例](USER_VPC.Scenarios.md)。

**Topics**
+ [

## 在 VPC 中使用資料庫執行個體
](#Overview.RDSVPC.Create)
+ [

## VPC 加密控制
](#USER_VPC.EncryptionControl)
+ [

## 使用資料庫子網路群組
](#USER_VPC.Subnets)
+ [

## 共用子網路
](#USER_VPC.Shared_subnets)
+ [

## Amazon RDS IP 定址
](#USER_VPC.IP_addressing)
+ [

## 在 VPC 中的網際網路中隱藏資料庫執行個體
](#USER_VPC.Hiding)
+ [

## 在 VPC 中建立資料庫執行個體
](#USER_VPC.InstanceInVPC)

於下列教學課程中，您可學習建立可用於常見 Amazon RDS 案例的 VPC：
+ [教學課程：建立要與資料庫執行個體搭配使用的 VPC (僅限 IPv4)](CHAP_Tutorials.WebServerDB.CreateVPC.md)
+ [教學課程：建立要與資料庫執行個體搭配使用的 (VPC)(雙堆疊模式)](CHAP_Tutorials.CreateVPCDualStack.md)

## 在 VPC 中使用資料庫執行個體
<a name="Overview.RDSVPC.Create"></a>

在 VPC 中使用資料庫執行個體的要訣如下：
+ 您的 VPC 必須至少要有兩個子網路。這些子網路必須位於 AWS 區域 您要部署資料庫執行個體的 中的兩個不同可用區域。*子網路*是指可供您指定之 VPC 的 IP 地址範圍區段，您可根據安全與運作需求將資料庫執行個體分組。

  對於異地同步備份部署，在 中為兩個或多個可用區域定義子網路， AWS 區域 可讓 Amazon RDS 視需要在另一個可用區域中建立新的待命。即使是單一可用區部署也務必要這麼做，以便未來需要將它們轉換為異地同步備份部署。
**注意**  
本地區域的資料庫子網路群組只能有一個子網路。
+ 如果您要開放資料庫執行個體在 VPC 中供公開存取，須啟用 VPC 屬性 *DNS hostnames* (DNS 主機名稱) 和 *DNS resolution* (DNS 解析)。
+ 您的 VPC 必須具備您所建立的資料庫子網路群組。您可以透過指定您所建立的子網路來建立資料庫子網路群組。Amazon RDS 會選擇該子網路群組內的子網路和 IP 地址，以與您的資料庫執行個體建立關聯。資料庫執行個體使用包含子網路的可用區域。
+ 您的 VPC 必須具備能允許存取資料庫執行個體的 VPC 安全群組。

  如需詳細資訊，請參閱[在 VPC 中存取資料庫執行個體的案例](USER_VPC.Scenarios.md)。
+ 您每個子網路中的 CIDR 區塊大小必須足以容納備用 IP 地址，以供 Amazon RDS 在維護活動 (包括容錯移轉與運算擴展) 期間使用。例如，10.0.0.0/24 和 10.0.1.0/24 等範圍通常就夠大了。
+ VPC 的*執行個體租用*屬性可以是 *default (預設)* 或 *dedicated (專用)*。所有預設 VPC 已將執行個體租用屬性設為預設，且預設的 VPC 可支援任何資料庫執行個體類別。

  若您選擇讓資料庫執行個體位於執行個體租用屬性設為「專用」的專屬 VPC 中，資料庫執行個體的資料庫執行個體類別必須選擇獲核准的 Amazon EC2 專用預留執行個體類型。舉例來說，r5.large EC2 專用預留執行個體對應到 db.r5.large 資料庫執行個體類別。如需 VPC 中執行個體租用的相關資訊，請參閱《Amazon Elastic Compute Cloud 使用者指南》**中的[專用執行個體](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/dedicated-instance.html)。

  如需進一步了解專用執行個體中可能出現的執行個體類型，請參閱 Amazon EC2 定價頁面上的 [Amazon EC2 專用執行個體](https://aws.amazon.com/ec2/purchasing-options/dedicated-instances/)。
**注意**  
將執行個體租用屬性設定為專用於資料庫執行個體時，並不保證資料庫執行個體會在專用執行個體上執行。
+ 選項群組指派給資料庫執行個體後，就會與資料庫執行個體的 VPC 建立關聯。在這樣的連結設定下，若嘗試將資料庫執行個體還原至不同的 VPC，將無法使用指派給資料庫執行個體的選項群組。
+ 若將資料庫執行個體還原至不同的 VPC，您必須將預設選項群組指派給該資料庫執行個體，指派連結至該 VPC 的選項群組，或是建立新的選項群組並將其指派給該資料庫執行個體。若使用 Oracle TDE 等持續或永久選項，將資料庫執行個體還原至不同的 VPC 時，您必須建立包含持續或永久選項的新選項群組。

## VPC 加密控制
<a name="USER_VPC.EncryptionControl"></a>

VPC 加密控制可讓您針對 VPCs 內的所有網路流量強制執行encryption-in-transit。透過確保在指定的 VPCs 中只能佈建具備加密功能的 Nitro 型硬體，來使用加密控制來符合法規合規要求。加密控制也會在 API 請求時間攔截相容性問題，而不是在佈建期間。您現有的工作負載會繼續運作，而且只會封鎖新的不相容請求。

將 VPC 控制模式設定為 ，以設定您的 VPC 加密控制：
+ *停用* （預設）
+ *監控*
+ *強制執行*

若要檢查 VPC 目前的控制模式，請使用 AWS 管理主控台 或 [DescribeVpcs](https://docs.aws.amazon.com//AWSEC2/latest/APIReference/API_DescribeVpcs.html) CLI 或 API 命令。

如果您的 VPC 強制執行加密，您只能佈建支援該 VPC 中傳輸中加密的 Nitro 型資料庫執行個體。如需詳細資訊，請參閱 [資料庫執行個體類別的類型](Concepts.DBInstanceClass.Types.md)。如需 Nitro 執行個體的相關資訊，請參閱《*Amazon EC2 使用者指南*》中的[在 AWS Nitro 系統上建置的執行個體](https://docs.aws.amazon.com/ec2/latest/instancetypes/ec2-nitro-instances.html)。

**注意**  
如果您嘗試在加密強制執行的 VPC 中佈建不相容資料庫執行個體，Amazon RDS 會傳回`VpcEncryptionControlViolationException`例外狀況。

## 使用資料庫子網路群組
<a name="USER_VPC.Subnets"></a>

*Subnets* (子網路) 是可供您指定之 VPC 的 IP 地址範圍區段，您可根據安全與運作需求將資源分組。*資料庫子網路群組*是一種子網路集合 (通常為私有)，您必須先在 VPC 中建立這些群組，然後指定群組供您的資料庫執行個體使用。透過使用資料庫子網路群組，您可以在使用 AWS CLI 或 RDS API 建立資料庫執行個體時指定特定 VPC。如果使用主控台，您可以選擇要使用的 VPC 和子網路群組。

各個資料庫子網路群組在指定的 AWS 區域中，皆應在至少兩個可用區域中具有子網路。在 VPC 中建立資料庫執行個體時，您必須為其選擇資料庫子網路群組。從資料庫子網路群組中，Amazon RDS 會選擇子網路和該子網路內的 IP 地址，以便與中的資料庫執行個體建立關聯。資料庫使用包含子網路的可用區域。 Amazon RDS 一律會從具有可用 IP 位址空間的子網路指派 IP 位址。

若多可用區域部署的主要資料庫執行個體發生故障，Amazon RDS 可擢升相對應的待命執行個體，稍後使用任一其他可用區域子網路的 IP 地址建立新的待命執行個體。

資料庫子網路群組中的子網路可設為公開或私有，視您針對子網路的網路存取控制清單 (網路 ACL) 和路由表所設定的組態而定，子網路為公開或私有。若要使資料庫執行個體可公開存取，其資料庫子網路群組中的所有子網路皆必須為公有。若與可公開存取的資料庫執行個體關聯的子網路從公有變更為私有，則可能會影響資料庫執行個體可用性。

如要建立支援雙堆疊模式的資料庫子網路群組，請確保新增至資料庫子網路群組的每個子網路皆具有與其關聯的網際網路通訊協定第 6 版 (IPv6) CIDR 區塊。如需詳細資訊，請參閱《*Amazon VPC 使用者指南*》中的 [Amazon RDS IP 定址](#USER_VPC.IP_addressing) 和[遷移至 IPv6](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-migrate-ipv6.html)。

**注意**  
本地區域的資料庫子網路群組只能有一個子網路。

Amazon RDS 在 VPC 中建立資料庫執行個體時，會使用來自您資料庫子網路群組的 IP 地址，將網路介面指派給您的資料庫執行個體。然而，我們強烈建議您使用網域名稱系統 (DNS) 名稱，與您的資料庫執行個體連線。我們如此建議，是因為基本的 IP 地址在容錯移轉期間會有所變動。

**注意**  
在資料庫子網路群組的每個子網路中，請確保為 VPC 中執行的每個資料庫執行個體保留至少一個地址，以供 Amazon RDS 執行復原動作。

## 共用子網路
<a name="USER_VPC.Shared_subnets"></a>

您可以在共用 VPC 中建立資料庫執行個體。

使用共用 VPC 時要記住的一些考量：
+ 您可以將資料庫執行個體從共用 VPC 子網路移至非共用 VPC 子網路，反之亦然。
+ 共用 VPC 的參與者必須在 VPC 中建立安全群組，才能允許他們建立資料庫執行個體。
+ 共用 VPC 中的擁有者和參與者可以使用 SQL 查詢存取資料庫。不過，只有資源的建立者才能對資源進行任何 API 呼叫。



## Amazon RDS IP 定址
<a name="USER_VPC.IP_addressing"></a>

IP 地址可讓您 VPC 中的資源彼此互相通訊，也能和網際網路上的資源通訊。Amazon RDS 同時支援 IPv4 和 IPv6 定址通訊協定。依預設，Amazon RDS 和 Amazon VPC 使用 IPv4 定址通訊協定。您無法關閉此行為。當您建立 VPC 時，請務必指定 IPv4 CIDR 區塊 (私有 IPv4 地址的範圍)。您可選擇將 IPv6 CIDR 區塊指派給 VPC 和子網路，並將 IPv6 地址從該區塊指派給子網路中的資料庫執行個體。

對 IPv6 通訊協定的支援擴展受支援的 IP 地址的數量。使用 IPv6 通訊協定，您可以確保擁有足夠的可用地址，可應對網際網路的未來發展。新的和現有的 RDS 資源可於您的 VPC 中使用 IPv4 和 IPv6 地址。在應用程式的不同部分中使用的兩個通訊協定之間進行設定、保護和轉譯網路流量可能會造成操作額外負荷。您可在 IPv6 通訊協定上對 Amazon RDS 資源進行標準化，以簡化您的網路組態。

**Topics**
+ [

### IPv4 地址
](#USER_VPC.IP_addressing.IPv4)
+ [

### IPv6 地址
](#USER_VPC.IP_addressing.IPv6)
+ [

### 雙堆疊模式
](#USER_VPC.IP_addressing.dual-stack-mode)

### IPv4 地址
<a name="USER_VPC.IP_addressing.IPv4"></a>

在您建立 VPC 時，必須以 CIDR 區塊的形式為 VPC 指定 IPv4 地址的範圍，例如 `10.0.0.0/16`。*資料庫子網路群組*定義資料庫執行個體可以使用之此 CIDR 區塊中的 IP 地址範圍。這些 IP 地址可為私有或公有。

私有 IPv4 地址是無法在網際網路存取的 IP 地址。您可使用私有 IPv4 地址，在相同 VPC 中的資料庫執行個體及其他資源 (例如 Amazon EC2 執行個體) 之間進行通訊。每個資料庫執行個體具有用於在 VPC 中進行通訊的私有 IP 地址。

公有 IP 地址是可從網際網路存取的 IPv4 地址。您可使用公有地址，在資料庫執行個體和網際網路上的資源 (例如 SQL 用戶端) 之間進行通訊。您控制您的資料庫執行個體是否接收公有 IP 地址。

Amazon RDS 會將來自 EC2 公有 IPv4 地址集區的公有彈性 IPv4 地址用於可公開存取的資料庫執行個體。使用 `describe-addresses` CLI、API 或檢視 中的彈性 IPs(EIP) 區段 AWS 時，這些 IP 地址會顯示在您的帳戶中 AWS 管理主控台。每個 RDS 受管 IP 地址都會以設定為 的`service_managed`屬性標示`"rds"`。

雖然您的帳戶中可以看到這些 IPs，但它們仍由 Amazon RDS 完全管理，且無法修改或釋出。Amazon RDS 會在不再使用時，將 IPs 發行回公有 IPv4 地址集區。

CloudTrail 會記錄與 RDS EIP 相關的 API 呼叫，例如 `AllocateAddress`。服務委託人 會叫用這些 API 呼叫`rds.amazonaws.com`。

**注意**  
Amazon RDS 配置的 IPs 不會計入您帳戶的 EIP 限制。

如需示範如何建立僅包含私有 IPv4 地址以用於常見 Amazon RDS 案例之 VPC 的教學課程，請參閱 [教學課程：建立要與資料庫執行個體搭配使用的 VPC (僅限 IPv4)](CHAP_Tutorials.WebServerDB.CreateVPC.md)。

### IPv6 地址
<a name="USER_VPC.IP_addressing.IPv6"></a>

您可以選擇性的將 IPv6 CIDR 區塊與您的 VPC 和子網路建立關聯，並指派該區塊的 IPv6 地址給您 VPC 中的資源。每個 IPv6 地址都是全域唯一的。

您的 VPC 的 IPv6 CIDR 區塊會自動從 Amazon 的 IPv6 地址集區自動指派。您無法自行選擇範圍。

連線至 IPv6 地址時，請確保符合下列條件：
+ 用戶端已設定為允許透過 IPv6 進行用戶端至資料庫的流量。
+ 資料庫執行個體使用的 RDS 安全群組已正確設定，允許透過 IPv6 進行用戶端至資料庫的流量。
+ 用戶端作業系統堆疊允許 IPv6 地址上的流量，且作業系統驅動程式和程式庫會進行設定以選擇正確的預設資料庫執行個體端點 (IPv4 或 IPv6)。

如需 IPv6 的詳細資訊，請參閱《*Amazon VPC 使用者指南*》中的 [IP 定址](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-ip-addressing.html)。

### 雙堆疊模式
<a name="USER_VPC.IP_addressing.dual-stack-mode"></a>

資料庫執行個體可在透過 IPv4 和 IPv6 定址通訊協定進行通訊時，以雙堆疊模式執行。然後，資源可以使用 IPv4, IPv6 或兩種通訊協定與資料庫執行個體通訊。私有雙堆疊模式資料庫執行個體的 IPv6 端點限制為僅限 VPC 存取，可確保您的 IPv6 端點保持私有。公有雙堆疊模式資料庫執行個體提供 IPv4 和 IPv6 端點，您可以從網際網路存取。

**Topics**
+ [

#### 雙堆疊模式和資料庫子網路群組
](#USER_VPC.IP_addressing.dual-stack-db-subnet-groups)
+ [

#### 使用雙堆疊模式資料庫執行個體
](#USER_VPC.IP_addressing.dual-stack-working-with)
+ [

#### 將僅限 IPv4 的資料庫執行個體修改為使用雙堆疊模式
](#USER_VPC.IP_addressing.dual-stack-modifying-ipv4)
+ [

#### 區域和版本可用性
](#USER_VPC.IP_addressing.RegionVersionAvailability)
+ [

#### 雙堆疊網路資料庫執行個體的限制
](#USER_VPC.IP_addressing.dual-stack-limitations)

如需示範如何建立包含 IPv4 和 IPv6 兩個地址以用於常見 Amazon RDS 案例之 VPC 的教學課程，請參閱 [教學課程：建立要與資料庫執行個體搭配使用的 (VPC)(雙堆疊模式)](CHAP_Tutorials.CreateVPCDualStack.md)。

#### 雙堆疊模式和資料庫子網路群組
<a name="USER_VPC.IP_addressing.dual-stack-db-subnet-groups"></a>

如要使用雙堆疊式，請確保與資料庫執行個體關聯之資料庫子網路群組中的每個子網路皆有一個與之關聯的 IPv6 CIDR 區塊。您可建立新的資料庫子網路群組或修改現有資料庫子網路群組，以滿足此要求。於資料庫執行個體 處於雙堆疊模式後，用戶端可進行正常連線。確保客戶端安全防火牆和 RDS 資料庫執行個體安全群組已準確設定，允許透過 IPv6 的流量。如要進行連線，用戶端會使用資料庫執行個體的端點。用戶端應用程式可指定連線至資料庫時所偏好的通訊協定。於雙堆疊模式下，資料庫執行個體會偵測用戶端的偏好網路通訊協定 (IPv4 或 IPv6)，並將該通訊協定用於連線。

若資料庫子網路群組因子網路刪除或 CIDR 斷開關聯而停止支援雙堆疊模式，則與資料庫子網路群組相關聯的資料庫執行個體存在網路狀態不相容的風險。此外，建立新的雙堆疊模式資料庫執行個體時，無法使用資料庫子網路群組。

若要使用 判斷資料庫子網路群組是否支援雙堆疊模式 AWS 管理主控台，請在資料庫子網路群組的詳細資訊頁面上檢視**網路類型**。若要使用 判斷資料庫子網路群組是否支援雙堆疊模式 AWS CLI，請執行 [describe-db-subnet-groups](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-subnet-groups.html) 命令並在輸出`SupportedNetworkTypes`中檢視 。

將僅供讀取複本視為獨立的資料庫執行個體，且可具有不同於主資料庫執行個體的網路類型。若您變更僅供讀取複本之主資料庫執行個體的網路類型，則僅供讀取複本不會受到影響。還原資料庫執行個體時，您可將其還原為支援的任何網路類型。

#### 使用雙堆疊模式資料庫執行個體
<a name="USER_VPC.IP_addressing.dual-stack-working-with"></a>

當您建立或修改資料庫執行個體時，您可指定雙堆疊模式，以允許您的資源透過 IPv4、IPv6 或兩者與資料庫執行個體進行通訊。

當您使用 AWS 管理主控台 建立或修改資料庫執行個體時，您可以在**網路類型**區段中指定雙堆疊模式。下圖顯示主控台中的 **Network type** (網路類型) 區段。

![\[主控台中的網路類型區段，選取了雙堆疊模式。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/dual-stack-mode.png)


當您使用 AWS CLI 建立或修改資料庫執行個體時，請將 `--network-type`選項設定為`DUAL`使用雙堆疊模式。當您使用 RDS API 建立或修改資料庫執行個體時，請將 `NetworkType` 參數設定為 `DUAL`，以使用雙堆疊模式。當您修改資料庫執行個體的網路類型時，可能會出現停機時間。若指定的資料庫引擎版本或資料庫子網路群組不支援雙堆疊模式，則會傳回 `NetworkTypeNotSupported` 錯誤。

如需建立資料庫執行個體的詳細資訊，請參閱 [建立 Amazon RDS 資料庫執行個體](USER_CreateDBInstance.md)。如需修改 資料庫執行個體的詳細資訊，請參閱[修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。

若要使用主控台來決定資料庫執行個體是否處於雙堆疊模式，請檢視資料庫執行個體 **Connectivity & security** (連線能力與安全性) 索引標籤上的 **Network type** (網路類型)。

#### 將僅限 IPv4 的資料庫執行個體修改為使用雙堆疊模式
<a name="USER_VPC.IP_addressing.dual-stack-modifying-ipv4"></a>

您可將僅限 IPv4 的資料庫執行個體修改為使用雙堆疊模式。如此，請變更資料庫執行個體的網路類型。修改可能會造成停機。

建議您在維護時段變更 Amazon RDS 資料庫執行個體的網路類型。目前不支援將新執行個體的網路類型設定為雙堆疊模式。您可以使用 `modify-db-instance` 命令手動設定網路類型。

將資料庫執行個體修改為使用雙堆疊模式之前，請確保其資料庫子網路群組支援雙堆疊模式。若與資料庫執行個體關聯的資料庫子網路群組不支援雙堆疊模式，請於修改資料庫執行個體時指定支援該子網路群組的其他資料庫子網路群組。修改資料庫執行個體的資料庫子網路群組可能會導致停機。

若在將資料庫執行個體變更為使用雙堆疊模式之前修改資料庫執行個體的資料庫子網路群組，請確保該資料庫子網路群組在變更前後對資料庫執行個體有效。

對於 RDS for PostgreSQL、RDS for MySQL、RDS for Oracle 和 RDS for MariaDB 單一可用區執行個體，我們建議您僅搭配設定為 `DUAL` 的 `--network-type` 參數執行 [modify-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) 命令，以將網路變更為雙堆疊模式。在相同的 API 呼叫中新增其他參數和 `--network-type` 參數可能會導致停機時間。若要修改多個參數，請確定已成功完成網路類型修改，然後再傳送另一個具有其他參數的 `modify-db-instance` 請求。

如果您只使用 `--network-type` 參數或在 modify-db-instance 命令中合併參數，則 RDS for PostgreSQL、RDS for MySQL、RDS for Oracle 和 RDS for MariaDB 多可用區資料庫執行個體的網路類型修改會造成短暫停機並觸發容錯移轉。

如果您只使用 `--network-type` 參數或在 `modify-db-instance` 命令中合併參數，則 RDS for SQL Server 單一可用區或多可用區資料庫執行個體的網路類型修改會導致停機。修改網路類型會造成 SQL Server 多可用區執行個體的容錯移轉。

若於變更後無法連線至資料庫執行個體，請確認用戶端和資料庫安全防火牆和路由表已正確設定，以允許流量傳輸至選定網路上的資料庫 (IPv4 或 IPv6)。您可能還需要修改作業系統參數、程式庫或驅動程式才可使用 IPv6 地址進行連線。

當您將資料庫執行個體修改為使用雙堆疊模式時，不可有從單一可用區部署至多可用區部署，或從多可用區部署至單一可用區部署的待處理變更。

**如要將僅限 IPv4 的資料庫執行個體修改為使用雙堆疊模式**

1. 修改資料庫子網路群組以支援雙堆疊模式，或建立支援雙堆疊模式的資料庫子網路群組：

   1. 建立 IPv6 CIDR 區塊與 VPC 的關聯。

      如需詳細資訊，請參閱《Amazon VPC 使用者指南》**中的[將 IPv6 CIDR 區塊新增至 VPC](https://docs.aws.amazon.com/vpc/latest/userguide/modify-vpcs.html#vpc-associate-ipv6-cidr)。

   1. 將 IPv6 CIDR 區塊連接至資料庫子網路群組中的所有子網路。

      如需詳細資訊，請參閱《Amazon VPC 使用者指南》**中的[將 IPv6 CIDR 區塊新增至子網路](https://docs.aws.amazon.com/vpc/latest/userguide/modify-subnets.html#subnet-associate-ipv6-cidr)。

   1. 確認資料庫子網路群組支援雙堆疊模式。

      如果您使用的是 AWS 管理主控台，請選取資料庫子網路群組，並確認**支援的網路類型**值為**雙 IPv4**。

      如果您使用的是 AWS CLI，請執行 [describe-db-subnet-groups](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-subnet-groups.html) 命令，並確認資料庫執行個體`SupportedNetworkType`的值為 `Dual, IPv4`。

1. 修改與資料庫執行個體關聯的安全群組，以允許 IPv6 連線至資料庫，或建立允許 IPv6 連線的新安全群組。

   如需說明，請參閱《*Amazon VPC 使用者指南*》中的[安全群組規則](https://docs.aws.amazon.com/vpc/latest/userguide/security-group-rules.html)。

1. 修改資料庫執行個體以支援雙堆疊模式。若要這麼做，請將 **Network type** (網路類型) 設為 **Dual-stack mode** (雙堆疊模式)。

   若您使用主控台，請確保下列設定正確：
   + **Network type (網路類型)** – **Dual-stack mode (雙堆疊模式)**  
![\[主控台中的網路類型區段，選取了雙堆疊模式。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/dual-stack-mode.png)
   + **DB subnet group** (資料庫子網路群組) – 您在前一步驟中設定的資料庫子網路群組
   + **Security group (安全群組)** – 您在上一個步驟中設定的安全性

   如果您使用的是 AWS CLI，請確定下列設定正確：
   + `--network-type` – `dual`
   + `--db-subnet-group-name` – 您在前一步驟中設定的資料庫子網路群組
   + `--vpc-security-group-ids` – 您在前一步驟中設定的 VPC 安全群組

   例如：

   ```
   aws rds modify-db-instance --db-instance-identifier my-instance --network-type "DUAL"
   ```

1. 確認資料庫執行個體是否支援雙堆疊模式。

   若您使用主控台，請選擇資料庫執行個體的 **Connectivity & security** (連線能力與安全性) (組態) 索引標籤。在該索引標籤，確保 **Network type** (網路類型) 值為 **Dual-stack mode** (雙堆疊模式)。

   如果您使用的是 AWS CLI，請執行 [ describe-db-instances](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html) 命令，並確認資料庫執行個體`NetworkType`的值為 `dual`。

   執行資料庫執行個體端點上的 `dig` 命令來辨識與其關聯的 IPv6 地址。

   ```
   dig db-instance-endpoint AAAA
   ```

   使用資料庫執行個體端點 (非 IPv6 地址)，連線至資料庫執行個體。

#### 區域和版本可用性
<a name="USER_VPC.IP_addressing.RegionVersionAvailability"></a>

功能可用性和支援會因每個資料庫引擎的特定版本以及 AWS 區域而有所不同。如需雙堆疊模式的版本和區域可用性的相關資訊，請參閱 [支援 Amazon RDS 中雙堆疊模式的區域和資料庫引擎](Concepts.RDS_Fea_Regions_DB-eng.Feature.DualStackMode.md)。

#### 雙堆疊網路資料庫執行個體的限制
<a name="USER_VPC.IP_addressing.dual-stack-limitations"></a>

下列限制適用於雙堆疊網路資料庫執行個體：
+ 資料庫執行個體無法僅使用 IPv6 通訊協定。其可專門使用 IPv4，也可使用 IPv4 和 IPv6 通訊協定 (雙堆疊模式)。
+ Amazon RDS 不支援原生 IPv6 子網路。
+ 若為 RDS for SQL Server，使用 Always On AG 可用性群組接聽程式端點的雙堆疊模式資料庫執行個體僅提供 IPv4 地址。
+ 您無法將 RDS Proxy 和雙堆疊模式資料庫執行個體搭配使用。
+ 資料庫執行個體上的 RDS AWS Outposts 無法使用雙堆疊模式。
+ 您無法於本機區域中使用雙堆疊模式和資料庫執行個體。

## 在 VPC 中的網際網路中隱藏資料庫執行個體
<a name="USER_VPC.Hiding"></a>

VPC 中，有個 Amazon EC2 執行個體上有開放存取的 Web 應用程式，同時資料庫執行個體上有不可公開存取的資料庫，這樣的 Amazon RDS 藍本並不罕見。例如，您可以建立具有公有子網路和私有子網路的 VPC。作為 Web 伺服器的 EC2 執行個體可部署於公有子網路中，而資料庫執行個體則可部署於私有子網路中。在這樣的部署下，只有 Web 伺服器可以存取資料庫執行個體。如需這種案例的圖示，請參閱 [由相同 VPC 中的 Amazon EC2 執行個體在 VPC 中存取的資料庫執行個體](USER_VPC.Scenarios.md#USER_VPC.Scenario1)。

當您在 VPC 內啟動資料庫執行個體時，資料庫執行個體在 VPC 內具有流量的私人的 IP 地址。此私人 IP 地址無法公開存取。您可以使用 **Public access** (公用存取) 選項來指定除了私有 IP 地址之外，資料庫執行個體是否還具有公有 IP 地址。如果指定資料庫執行個體為可公開存取，則其 DNS 端點會從 VPC 內解析為私人 IP 地址。它會從 VPC 外部解析為公用 IP 地址。資料庫執行個體的存取權限最終是由其使用的安全群組所控制。若指派給該資料庫執行個體的安全群組沒有包含允許的傳入規則，則該資料庫執行個體就無法開放供公開存取。若要開放公開存取資料庫執行個體，其資料庫子網路群組中的子網路必須具備網際網路閘道。如需詳細資訊，請參閱 [無法連線至 Amazon RDS 資料庫執行個體](CHAP_Troubleshooting.md#CHAP_Troubleshooting.Connecting)

您可以修改 **Public access** (公用存取) 選項，藉此修改資料庫執行個體以開啟或關閉公開存取性。下圖顯示 **Additional connectivity configuration (其他連線能力組態)** 區段中的 **Public access (公用存取)** 選項。若要設定此選項，請開啟 **Connectivity (連線能力)** 區段中的 **Additional connectivity configuration (其他連線能力組態)** 區段。

![\[將其他連線組態區段中的資料庫公開存取選項設定為否。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/VPC-example4.png)


如需有關修改資料庫執行個體以設定 **Public access (公用存取)** 選項的資訊，請參閱[修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。

## 在 VPC 中建立資料庫執行個體
<a name="USER_VPC.InstanceInVPC"></a>

下列步驟可協助您在 VPC 中建立資料庫執行個體。若要使用預設 VPC，您可以從步驟 2 開始，使用系統已為您建立的 VPC 和資料庫子網路群組。您想要建立額外的 VPC 的話，可以建立新的 VPC。

**注意**  
如果您要開放資料庫執行個體在 VPC 中供公開存取，須啟用 VPC 屬性 *DNS hostnames* (DNS 主機名稱) 和 *DNS resolution* (DNS 解析)，更新 VPC 的 DNS 資訊。若要進一步了解如何更新 VPC 執行個體的 DNS 資訊，請參閱[更新 VPC 的 DNS 支援](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-dns.html)。

請依照以下步驟在 VPC 中建立資料庫執行個體：
+ [步驟 1：建立 VPC](#USER_VPC.CreatingVPC) 
+  [步驟 2：建立資料庫子網路群組](#USER_VPC.CreateDBSubnetGroup)
+  [步驟 3：建立 VPC 安全群組](#USER_VPC.CreateVPCSecurityGroup)
+  [步驟 4：在 VPC 中建立資料庫執行個體](#USER_VPC.CreateDBInstanceInVPC) 

### 步驟 1：建立 VPC
<a name="USER_VPC.CreatingVPC"></a>

建立在至少兩個可用區域內有子網路的 VPC。建立資料庫子網路群組時，您會需要使用這些子網路。如有預設的 VPC，則系統會自動為您於所在 AWS 區域的每個可用區域中建立子網路。

如需詳細資訊，請參閱 [建立含私有和公有子網路的 VPC](CHAP_Tutorials.WebServerDB.CreateVPC.md#CHAP_Tutorials.WebServerDB.CreateVPC.VPCAndSubnets) 或 *Amazon VPC 使用者指南*中的[建立 VPC](https://docs.aws.amazon.com/vpc/latest/userguide/working-with-vpcs.html#Create-VPC)。

### 步驟 2：建立資料庫子網路群組
<a name="USER_VPC.CreateDBSubnetGroup"></a>

資料庫子網路群組是一種子網路集合 (通常為私有)，您必須先為 VPC 建立這些群組，然後指定給資料庫執行個體使用。當您使用 AWS CLI 或 RDS API 建立資料庫執行個體時，資料庫子網路群組可讓您指定特定的 VPC。若使用主控台，只需選擇要使用的 VPC 和子網路即可。各個資料庫子網路群組在 AWS 區域中，須至少於兩個可用區域中具有至少一個子網路。作為最佳實務，每個資料庫子網路群組應於 AWS 區域中，為每個可用區域擁有至少有一個子網路。

對於異地同步備份部署，定義 中所有可用區域的子網路 AWS 區域 可讓 Amazon RDS 視需要在另一個可用區域中建立新的待命複本。即使是單一可用區域部署，您也可以遵循此最佳實務，因為未來可能會將它們轉換為多可用區域部署。

若要開放資料庫執行個體供公開存取，資料庫子網路群組中的子網路必須具備網際網路閘道。如需子網路網際網路閘道的詳細資訊，請參閱 *Amazon VPC 使用者指南*中的[使用網際網路閘道連線至網際網路](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Internet_Gateway.html)。

**注意**  
本地區域的資料庫子網路群組只能有一個子網路。

在 VPC 中建立資料庫執行個體時，您可以選擇資料庫子網路群組。Amazon RDS 會選擇子網路和該子網路內的 IP 地址，以便與您的資料庫執行個體建立關聯。如果資料庫子網路群組不存在，建立預設資料庫執行個體時，Amazon RDS 會建立預設子網路群組。Amazon RDS 會建立彈性網路界面，並透過該 IP 地址將該界面與資料庫執行個體相關聯。資料庫執行個體使用包含子網路的可用區域。

對於異地同步備份部署，在 中為兩個或多個可用區域定義子網路 AWS 區域 ，允許 Amazon RDS 在需要時在另一個可用區域中建立新的待命。即使是單一可用區部署也需要這麼做，以便未來需要將它們轉換為多可用區部署。

在此步驟中，您會建立資料庫子網路群組，並新增您為 VPC 建立的子網路。

**建立資料庫子網路群組**

1. 前往 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)，開啟 Amazon RDS 主控台。

1. 在導覽窗格中選擇 **Subnet groups (子網路群組)**。

1. 選擇 **Create DB Subnet Group** (建立資料庫子網路群組)。

1. 在 **Name (名稱)** 欄位輸入您資料庫子網路群組的名稱。

1. 在 **Description (描述)** 欄位輸入您資料庫子網路群組的描述。

1. 對於 **VPC**，選擇預設 VPC 或先前建立的 VPC。

1. 在 **Add subnets (新增子網路)** 區段中，選擇包含 **Availability Zones (可用區域)** 中子網路的可用區域，然後從 **Subnets (子網路)** 選擇子網路。  
![\[建立資料庫子網路群組。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/RDSVPC101.png)
**注意**  
如果您已啟用「本地區域」，您可以在 **Create DB subnet group** (建立資料庫子網路群組) 頁面中選擇「可用區域」群組。在此情況下，請選擇 **Availability Zone group (可用區域群組)**、**Availability Zones (可用區域)** 和 **Subnets (子網路)**。

1. 選擇**建立**。

   您的新資料庫子網路群組會顯示在 RDS 主控台的資料庫子網路群組清單中。您可以選擇資料庫子網路群組，在視窗底部的詳細資訊窗格查看詳細資訊，包括與該群組相關聯的所有子網路。

### 步驟 3：建立 VPC 安全群組
<a name="USER_VPC.CreateVPCSecurityGroup"></a>

建立資料庫執行個體之前，您必須先建立 VPC 安全群組，才能與您的資料庫執行個體建立關聯。如果您沒有建立 VPC 安全群組，您可以在建立資料庫執行個體時使用預設安全群組。如需如何建立資料庫執行個體安全群組的說明，請參閱 [建立私有資料庫執行個體的 VPC 安全群組](CHAP_Tutorials.WebServerDB.CreateVPC.md#CHAP_Tutorials.WebServerDB.CreateVPC.SecurityGroupDB)，或參閱 *Amazon VPC 使用者指南*中的[使用安全群組控制到資源的流量](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html)。

### 步驟 4：在 VPC 中建立資料庫執行個體
<a name="USER_VPC.CreateDBInstanceInVPC"></a>

在此步驟中，您將建立資料庫執行個體，並使用您在先前步驟中建立的 VPC 名稱、資料庫子網路群組以及 VPC 安全群組。

**注意**  
如果您要開放資料庫執行個體在 VPC 中供公開存取，須啟用 VPC 屬性 *DNS hostnames* (DNS 主機名稱) 和 *DNS resolution* (DNS 解析)。如需詳細資訊，請參閱 *Amazon VPC 使用者指南*中的 [VPC 的 DNS 屬性](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-dns.html)。

如需如何建立資料庫執行個體的詳細資訊，請參閱[建立 Amazon RDS 資料庫執行個體](USER_CreateDBInstance.md)。

**Connectivity** (連線) 區段中顯示提示訊息時，請輸入 VPC 名稱、資料庫子網路群組以及 VPC 安全群組。

# 更新資料庫執行個體的 VPC
<a name="USER_VPC.VPC2VPC"></a>

您可以使用AWS 管理主控台將您的資料庫執行個體移動至不同的 VPC。

如需修改資料庫執行個體的相關資訊，請參閱[修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。如下所示，在修改頁面的 **Connectivity** (連線) 區段中，為 **DB Subnet group** (資料庫子網路群組) 輸入新的資料庫子網路群組。新的子網路群組必須是新 VPC 中的子網路群組。

![\[修改資料庫執行個體子網路群組。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/EC2-VPC.png)


如果滿足以下條件，便無法變更資料庫執行個體的 VPC：
+ 資料庫執行個體位於多個可用區域。您可以將資料庫執行個體轉換至單一可用區域、移至新的 VPC，然後再轉換回多可用區域資料庫執行個體。如需詳細資訊，請參閱 [設定及管理 Amazon RDS 的多可用區域部署](Concepts.MultiAZ.md)。
+ 資料庫執行個體具有一或多個僅供讀取複本。您可以移除僅供讀取複本、將資料庫執行個體移到新的 VPC，然後再次新增僅供讀取複本。如需詳細資訊，請參閱 [使用資料庫執行個體僅供讀取複本](USER_ReadRepl.md)。
+ 資料庫執行個體為僅供讀取複本。您可以提升僅供讀取複本，然後將獨立資料庫執行個體移至新的 VPC。如需詳細資訊，請參閱 [提升僅供讀取複本為獨立的資料庫執行個體](USER_ReadRepl.Promote.md)。
+ 目標 VPC 中的子網路群組在資料庫執行個體的可用區域中沒有子網路。您可以將資料庫執行個體可用區域中的子網路新增到資料庫子網路群組，然後將資料庫執行個體移至新的 VPC。如需詳細資訊，請參閱 [使用資料庫子網路群組](USER_VPC.WorkingWithRDSInstanceinaVPC.md#USER_VPC.Subnets)。

# 在 VPC 中存取資料庫執行個體的案例
<a name="USER_VPC.Scenarios"></a>

Amazon RDS 支援下列在 VPC 中存取資料庫執行個體的使用案例：
+ [相同 VPC 中的 Amazon EC2 執行個體](#USER_VPC.Scenario1)
+ [EC2 執行個體位於不同 VPC](#USER_VPC.Scenario3)
+ [連上網際網路的用戶端應用程式](#USER_VPC.Scenario4)
+ [私有網路](#USER_VPC.NotPublic)

## 由相同 VPC 中的 Amazon EC2 執行個體在 VPC 中存取的資料庫執行個體
<a name="USER_VPC.Scenario1"></a>

資料庫執行個體在 VPC 中常見的使用方式，是與在同一 VPC 之 Amazon EC2 執行個體中執行的應用程式伺服器共用資料。

此案例可以下列圖表顯示。

![\[具有公有 Web 伺服器和私有資料庫的 VPC 案例。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/con-VPC-sec-grp.png)


若要管理相同 VPC 中 EC2 執行個體與資料庫執行個體之間的存取權限，最簡單的方式如下：
+ 建立將包含資料庫執行個體的 VPC 安全群組。此安全群組可用來限制資料庫執行個體的存取權限。例如，您可以為此安全群組建立自訂規則，允許使用您在建立自訂規則時指派給資料庫執行個體的連接埠存取 TCP，並可建立一組存取資料庫執行個體的 IP 地址，做為開發或其他用途使用。
+ 建立將包含 EC2 執行個體 (web 伺服器和用戶端) 的 VPC 安全群組。若有需要，此安全群組可允許藉由使用 VPC 路由表存取網際網路上的 EC2 執行個體。舉例來說，您可以在此安全群組上設定規則，允許 TCP 透過連接埠 22 存取 EC2 執行個體。
+ 在您資料庫執行個體的安全群組中建立自訂規則，允許來自您為 EC2 執行個體所建立之安全群組的連線要求。這些規則可能會允許安全群組的所有成員存取資料庫執行個體。

在單獨的可用區域中，還有一個額外的公有和私有子網路。RDS 資料庫子網路群組需要至少兩個可用區域中的子網路。額外的子網路可讓您在未來輕鬆切換到多可用區域資料庫執行個體部署。

如需相關教學課程，了解如何為此案例建立包含公有和私有子網路的 VPC，請參閱[教學課程：建立要與資料庫執行個體搭配使用的 VPC (僅限 IPv4)](CHAP_Tutorials.WebServerDB.CreateVPC.md)。

**提示**  
您可以在建立資料庫執行個體時，自動設定 Amazon EC2 執行個體與資料庫執行個體之間的連線。如需更多詳細資訊，請參閱 [設定與 EC2 執行個體的自動網路連線](USER_CreateDBInstance.md#USER_CreateDBInstance.Prerequisites.VPC.Automatic)。

**若要在允許其他安全群組連線要求的 VPC 安全群組中建立規則，請按照以下步驟操作：**

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

1.  在導覽窗格中，選擇**安全群組**。

1. 選擇或建立要允許其他安全群組成員存取的安全群組。在前一個藍本中，這是您用於資料庫執行個體的安全群組。選擇 **Inbound rules** (傳入規則) 索引標籤，然後選擇 **Edit inbound rules** (編輯對內規則)。

1. 在 **Edit inbound rules** (編輯對內規則) 頁面上，選擇 **Add rule** (新增規則)。

1. 對於**類型**，選擇對應您在建立資料庫執行個體時所使用之連接埠的項目，例如 **MYSQL/Aurora**。

1. 在**來源**方塊中，開始輸入安全群組 ID，這會列出相符的安全群組。選擇安全群組，允許其成員存取由此安全群組所保護的資源。在前一個藍本中，這是您用於 EC2 執行個體的安全群組。

1. 視需要使用**所有 TCP** 做為**類型**並在**來源**方塊中輸入安全群組來建立規則，以重複 TCP 通訊協定的步驟。若您打算使用 UDP 通訊協定，請使用 **All UDP** (所有 UDP) 作為 **Type** (類型)，並在 **Source ** (來源) 中輸入安全群組，以建立規則。

1. 選擇**儲存規則**。

下列畫面顯示安全群組針對其來源的對內規則。

![\[為其他安全群組規則新增安全群組。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/con-vpc-add-sg-rule.png)


如需從 EC2 執行個體連線至資料庫執行個體的詳細資訊，請參閱[連接至 Amazon RDS 資料庫執行個體](CHAP_CommonTasks.Connect.md) 。

## 由不同 VPC 中的 EC2 執行個體存取 VPC 中的資料庫執行個體
<a name="USER_VPC.Scenario3"></a>

當您的資料庫執行個體與您用來存取資料庫執行個體叢集的 EC2 執行個體不在相同 VPC 中時，您就能使用 VPC 對等連線存取該資料庫執行個體。

此案例可以下列圖表顯示。

![\[由不同 VPC 中的 Amazon EC2 執行個體存取 VPC 中的資料庫執行個體。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/RDSVPC2EC2VPC.png)


VPC 對等連線是指兩個 VPC 之間的網路連線，透過此機制，您就可以使用私有 IP 地址在兩者之間路由流量。這兩個 VPC 中的資源能彼此通訊，有如位於相同網路中一樣。您可以在自己的 VPCs 之間建立 VPC 對等互連、在另一個 AWS 帳戶中建立 VPC，或在不同的 VPC 之間建立 VPC 對等互連 AWS 區域。若要進一步了解 VPC 互連，請參閱《Amazon Virtual Private Cloud 使用者指南》**中的 [VPC 互連](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-peering.html)。

## 由用戶端應用程式透過網際網路存取 VPC 中的資料庫執行個體
<a name="USER_VPC.Scenario4"></a>

若要由用戶端應用程式透過網際網路存取 VPC 中的資料庫執行個體，您必須設定單一公有子網路的 VPC 以及網際網路閘道，啟用網際網路通訊。

此案例可以下列圖表顯示。

![\[由用戶端應用程式透過網際網路存取 VPC 中的資料庫執行個體。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/GS-VPC-network.png)


我們建議您使用下列組態：

 
+ 大小為 /16 的 VPC (例如，CIDR: 10.0.0.0/16)。此大小可提供 65,536 個私有 IP 地址。
+ 大小為 /24 的子網路 (例如，CIDR: 10.0.0.0/24)。此大小可提供 256 個私有 IP 地址。
+ 與 VPC 和子網路相關聯的 Amazon RDS 資料庫執行個體。Amazon RDS 會將子網路中的 IP 地址指派給資料庫執行個體。
+ 網際網路閘道會將 VPC 連線至網際網路和其他 AWS 產品。
+ 與資料庫執行個體相關聯的安全群組。安全群組的傳入規則允許您的用戶端應用程式存取您的資料庫執行個體。

如需有關在 VPC 中建立資料庫執行個體的資訊，請參閱 [在 VPC 中建立資料庫執行個體](USER_VPC.WorkingWithRDSInstanceinaVPC.md#USER_VPC.InstanceInVPC)。

## 透過私有網路存取 VPC 中的資料庫執行個體
<a name="USER_VPC.NotPublic"></a>

如果您的資料庫執行個體無法公開存取，可以使用下列選項從私有網路存取：
+ 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 Client VPN 連線。如需詳細資訊，請參閱[什麼是 AWS Client VPN？](https://docs.aws.amazon.com//vpn/latest/clientvpn-admin/what-is.html)

下圖顯示具有 AWS Site-to-Site連線的案例。

![\[透過私有網路存取 VPC 中的資料庫執行個體。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/site-to-site-vpn-connection.png)


如需詳細資訊，請參閱[網際網路流量隱私權](inter-network-traffic-privacy.md)。

# 教學課程：建立要與資料庫執行個體搭配使用的 VPC (僅限 IPv4)
<a name="CHAP_Tutorials.WebServerDB.CreateVPC"></a>

常用案例包括以 Amazon VPC 服務為基礎的虛擬私有雲端 (VPC) 中的資料庫執行個體。此 VPC 與在相同 VPC 中執行的 Web 伺服器共用資料。在本教學課程中，您會針對此案例建立 VPC。

此案例可以下列圖表顯示。如需其他案例的相關資訊，請參閱[在 VPC 中存取資料庫執行個體的案例](USER_VPC.Scenarios.md)。

![\[單一 VPC 案例\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/con-VPC-sec-grp.png)


您的資料庫執行個體僅需供您的 Web 伺服器使用，無需供公有網際網路使用。因此，您建立同時包含公有和私有子網路的 VPC。Web 伺服器是在公有子網路中託管，以便它可以到達公有網際網路。資料庫執行個體被託管於私有子網路中。Web 伺服器可連線至資料庫執行個體，因為其託管於相同 VPC 中。但是，公有網際網路無法使用資料庫執行個體，提供更高的安全性。

本教學課程會在單獨的可用區域中設定額外的公有子網路和私有子網路。教學課程不會使用這些子網路。RDS 資料庫子網路群組需要至少兩個可用區域中的子網路。額外的子網路可讓您在未來更輕鬆地切換到多可用區域資料庫執行個體部署。

本教學課程說明為 Amazon RDS 資料庫執行個體配置 VPC。如需展示如何為此 VPC 案例建立 Web 伺服器的教學課程，請參閱[教學：建立 Web 伺服器和 Amazon RDS 資料庫執行個體](TUT_WebAppWithRDS.md)。如需 Amazon VPC 的詳細資訊，請參閱 [Amazon VPC 入門指南](https://docs.aws.amazon.com/AmazonVPC/latest/GettingStartedGuide/)和 [Amazon VPC 使用者指南](https://docs.aws.amazon.com/vpc/latest/userguide/)。

**提示**  
當您建立資料庫執行個體時，您可以在 Amazon EC2 執行個體和資料庫執行個體之間自動設定網路連線。網路組態與本教學課程中描述的組態類似。如需詳細資訊，請參閱 [設定與 EC2 執行個體的自動網路連線](USER_CreateDBInstance.md#USER_CreateDBInstance.Prerequisites.VPC.Automatic)。 

## 建立含私有和公有子網路的 VPC
<a name="CHAP_Tutorials.WebServerDB.CreateVPC.VPCAndSubnets"></a>

使用下列程序來建立一個同時含公有和私有子網路的 VPC。

**建立 VPC 和子網路**

1. 在 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) 開啟 Amazon VPC 主控台。

1. 在 的右上角 AWS 管理主控台，選擇要在其中建立 VPC 的區域。此範例使用 美國西部 (奧勒岡) 區域。

1. 在左上角，選擇 **VPC Dashboard** (VPC 儀表板)。若要開始建立 VPC，請選擇 **Create VPC** (建立 VPC)。

1. 在 **VPC Settings** (VPC 設定) 的 **Resources to create** (建立資源) 下，選擇 **VPC and more** (VPC 和更多)。

1. 對於 **VPC settings** (VPC 設定)，設定這些值：
   + **Name tag auto-generation** (自動產生名稱標籤) – **tutorial**
   + **IPv4 CIDR block** (IPv4 CIDR 區塊) – **10.0.0.0/16**
   + **IPv6 CIDR block** (IPv6 CIDR 區塊) – **No IPv6 CIDR Block** (無 IPv6 CIDR 區塊)
   + **Tenancy** (租用) – **Default** (預設)
   + **Number of Availability Zones (AZs)** (可用區域 (AZ) 的數量) – **2**
   + **Customize AZs** (自訂可用區域) - 保留預設值。
   + **Number of public subnet** (公有子網路數量) – **2**
   + **Number of private subnets** (私有子網路數量) – **2**
   + **Customize subnets CIDR blocks** (自訂子網路 CIDR 區塊) – 保留預設值。
   + **NAT gateways (\$1)** (NAT 閘道 (\$1)) – **None** (無)
   + **VPC endpoints** (VPC 端點) – **None** (無)
   + **DNS options** (DNS 選項) – 保留預設值。
**注意**  
Amazon RDS 需要至少兩個不同可用區域中的子網路，以支援多可用區域資料庫執行個體部署。本教學課程會建立單一可用區部署，但這項需求可讓您更輕鬆地在未來轉換為多可用區域資料庫執行個體部署。

1. 選擇**建立 VPC**。

## 建立公有 Web 伺服器的 VPC 安全群組
<a name="CHAP_Tutorials.WebServerDB.CreateVPC.SecurityGroupEC2"></a>

接著建立公開存取的 VPC 安全群組。若要連線至 VPC 中的公有 EC2 執行個體，請將傳入規則新增至 VPC 安全群組。這些規則允許流量從網際網路連線。

**建立 VPC 安全群組**

1. 在 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) 開啟 Amazon VPC 主控台。

1. 選擇 **VPC Dashboard (VPC 儀表板)**，再選擇 **Security Groups (安全群組)**，然後選擇 **Create security group (建立安全群組)**。

1. 在 **Create security group (建立安全群組)** 頁面上，設定下列值：
   + **安全群組名稱：****tutorial-securitygroup**
   + **描述:** **Tutorial Security Group**
   + **VPC:** 選擇您先前建立的 VPC，例如：**vpc-*識別符* (tutorial-vpc)** 

1. 將傳入規則新增至安全群組

   1. 決定用於使用安全殼層 (SSH) 連接至 VPC 中 EC2 執行個體的 IP 地址。若要判斷公有 IP 地址，您可以在不同的瀏覽器視窗或索引標籤中使用 [https://checkip.amazonaws.com](https://checkip.amazonaws.com) 中的服務。IP 地址的範例為 `203.0.113.25/32`。

      在許多情況下，您可能透過網際網路服務供應商 (ISP) 或是從沒有靜態 IP 地址的防火牆進行連線。若是如此，請找出用戶端電腦所使用的 IP 地址範圍。
**警告**  
如果您使用 `0.0.0.0/0` 進行 SSH 存取，則可讓所有 IP 地址使用 SSH 存取您的公有執行個體。通常在測試環境中短暫使用此方法是沒有問題的，但在生產環境則不安全。在生產環境中，您應只授權特定 IP 地址或特定範圍的地址可使用 SSH 存取您的執行個體。

   1. 在 **Inbound rules (傳入規則)** 區段中，選擇 **Add rule (新增規則)**。

   1. 針對您的新傳入規則設定下列值，以允許透過 SSH 存取您的 Amazon EC2 執行個體。若是這麼做，則您可以連線至 Amazon EC2 執行個體來安裝 Web 伺服器和其他公用程式。您也會連線至 EC2 執行個體來上傳 Web 伺服器的內容。
      + **類型:** **SSH**
      + **Source (來源):** 來自步驟 a 的 IP 地址或範圍，例如：**203.0.113.25/32**。

   1. 選擇**新增規則**。

   1. 針對您的新傳入規則設定下列值，以允許透過 HTTP 存取您的 Web 伺服器。
      + **Type (類型)**：**HTTP**
      + **來源**：**0.0.0.0/0**

1. 請選擇 **Create security group (建立安全群組)** 以建立安全群組。

   請記下安全群組 ID，因為稍後在本教學中會需要它。

## 建立私有資料庫執行個體的 VPC 安全群組
<a name="CHAP_Tutorials.WebServerDB.CreateVPC.SecurityGroupDB"></a>

若要讓您的資料庫執行個體保持私有，請建立第二個安全群組供私有存取。若要連接至 VPC 中的私有資料庫執行個體，請將傳入規則新增至 VPC 安全群組，僅允許來自 Web 伺服器的流量。

**建立 VPC 安全群組**

1. 在 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) 開啟 Amazon VPC 主控台。

1. 選擇 **VPC Dashboard (VPC 儀表板)**，再選擇 **Security Groups (安全群組)**，然後選擇 **Create security group (建立安全群組)**。

1. 在 **Create security group (建立安全群組)** 頁面上，設定下列值：
   + **安全群組名稱：****tutorial-db-securitygroup**
   + **描述:** **Tutorial DB Instance Security Group**
   + **VPC:** 選擇您先前建立的 VPC，例如：**vpc-*識別符* (tutorial-vpc)**

1. 將傳入規則新增至安全群組

   1. 在 **Inbound rules (傳入規則)** 區段中，選擇 **Add rule (新增規則)**。

   1. 針對您的新傳入規則設定下列值，來允許連接埠 3306 上來自 Amazon EC2 執行個體的 MySQL 流量。如果這樣做，您可以從 Web 伺服器連線至資料庫執行個體。這樣做，您可以將 Web 應用程式中的資料存放並擷取至資料庫。
      + **Type (類型)**：**MySQL/Aurora**
      + **Source** (來源)： 您先前在本教學課程中建立的 **tutorial-securitygroup** 安全群組的識別符，例如：**sg-9edd5cfb**。

1. 請選擇 **Create security group (建立安全群組)** 以建立安全群組。

## 建立資料庫子網路群組
<a name="CHAP_Tutorials.WebServerDB.CreateVPC.DBSubnetGroup"></a>

*資料庫子網路群組*是您在 VPC 中建立，然後指派給資料庫執行個體的子網路的集合。資料庫子網路群組可讓您在建立資料庫執行個體時指定特定的 VPC。

**建立資料庫子網路群組**

1. 識別 VPC 中資料庫的私有子網路。

   1. 在 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) 開啟 Amazon VPC 主控台。

   1. 選擇 **VPC Dashboard** (VPC 儀表板)，然後選擇 **Subnets** (子網路)。

   1. 記下名為 **tutorial-subnet-private1-us-west-2a** 和 **tutorial-subnet-private2-us-west-2b** 之子網路的子網路 ID。

      建立資料庫子網路群組時，您會需要這些子網路 ID。

1. 前往 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)，開啟 Amazon RDS 主控台。

   請確定您連接到 Amazon RDS 主控台，而非 Amazon VPC 主控台。

1. 在導覽窗格中選擇 **Subnet groups (子網路群組)**。

1. 選擇 **Create DB Subnet Group** (建立資料庫子網路群組)。

1. 在 **Create DB subnet group** (建立資料庫子網路群組) 頁面上，於 **Subnet group details** (子網路群組詳細資訊) 中設定下列值：
   + **名稱:** **tutorial-db-subnet-group**
   + **描述:** **Tutorial DB Subnet Group**
   + **VPC:** **tutorial-vpc (vpc-*識別符*)** 

1. 在 **Add subnets (新增子網路)** 區段中，選擇 **Availability Zones (可用區域)** 和 **Subnets (子網路)**。

   對於此教學課程，為 **Availability Zones** (可用區域) 選擇 **us-west-2a** 和 **us-west-2b**。對於 **Subnets** (子網路)，選擇您在上一個步驟找到的私有子網路。

1. 選擇**建立**。

   您的新資料庫子網路群組會顯示在 RDS 主控台的資料庫子網路群組清單中。您可以選擇資料庫子網路群組，在視窗底部的詳細資訊窗格查看詳細資訊。這些詳細資料包括與群組關聯的所有子網路。

**注意**  
如果您已建立此 VPC 以完成 [教學：建立 Web 伺服器和 Amazon RDS 資料庫執行個體](TUT_WebAppWithRDS.md)，請依照 [建立 Amazon RDS 資料庫執行個體](CHAP_Tutorials.WebServerDB.CreateDBInstance.md) 中的下列指示建立資料庫執行個體。

## 刪除 VPC
<a name="CHAP_Tutorials.WebServerDB.CreateVPC.Delete"></a>

為此教學課程建立 VPC 和其他資源後，如果不再需要這些資源，便可以將它們刪除。

**注意**  
若您在針對此教學課程建立的 VPC 中新增資源，則可能需要先刪除這些資源，才能刪除 VPC。例如，這些資源可能包括 Amazon EC2 執行個體或 Amazon RDS 資料庫執行個體。如需詳細資訊，請參閱《*Amazon VPC 使用者指南*》中的[刪除 VPC](https://docs.aws.amazon.com/vpc/latest/userguide/working-with-vpcs.html#VPC_Deleting)。

**刪除 VPC 和相關資源**

1. 刪除資料庫子網路群組。

   1. 前往 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)，開啟 Amazon RDS 主控台。

   1. 在導覽窗格中選擇 **Subnet groups (子網路群組)**。

   1. 選取您要刪除的資料庫子網路群組，例如 **tutorial-db-subnet-group**。

   1. 選擇 **Delete** (刪除)，然後在確認視窗中選擇 **Delete** (刪除)。

1. 請注意 VPC ID。

   1. 在 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) 開啟 Amazon VPC 主控台。

   1. 選擇 **VPC Dashboard** (VPC 儀表板)，然後選擇 **VPC**。

   1. 在清單中，找到您建立的 VPC，例如 **tutorial-vpc**。

   1. 請記下您所建立的 VPC 的 **VPC ID**。在稍後的步驟中，您需要 VPC ID。

1. 刪除安全群組。

   1. 在 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) 開啟 Amazon VPC 主控台。

   1. 選擇 **VPC Dashboard** (VPC 儀表板)，然後選擇 **Security Groups** (安全群組)。

   1. 選取 Amazon RDS 資料庫執行個體的安全群組，例如 **tutorial-db-securitygroup**。

   1. 若為 **Actions (動作)**，選擇 **Delete security groups (刪除安全群組)**，然後在確認頁面上選擇 **Delete (刪除)**。

   1. 在 **Security Groups** (安全群組) 頁面上，選取 Amazon EC2 執行個體的安全群組，例如 **tutorial-securitygroup**。

   1. 若為 **Actions (動作)**，選擇 **Delete security groups (刪除安全群組)**，然後在確認頁面上選擇 **Delete (刪除)**。

1. 刪除 VPC。

   1. 在 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) 開啟 Amazon VPC 主控台。

   1. 選擇 **VPC Dashboard** (VPC 儀表板)，然後選擇 **VPC**。

   1. 選取您要刪除的 VPC，例如 **tutorial-vpc**。

   1. 對於 **Actions (動作)**，請選擇 **Delete VPC (刪除 VPC)**。

      確認頁面會顯示與 VPC 相關聯的其他資源，這些資源也將遭到刪除，包括與其相關聯的子網路。

   1. 在確認頁面上，輸入 **delete**，然後選擇 **Delete** (刪除)。

# 教學課程：建立要與資料庫執行個體搭配使用的 (VPC)(雙堆疊模式)
<a name="CHAP_Tutorials.CreateVPCDualStack"></a>

常用案例包括以 Amazon VPC 服務為基礎的虛擬私有雲端 (VPC) 中的資料庫執行個體。此 VPC 與在相同 VPC 中執行的公有 Amazon EC2 執行個體共用資料。

於本教學課程中，您將為此案例建立與以雙堆疊模式執行之資料庫搭配使用的 VPC。雙堆疊模式，可透過 IPv6 定址通訊協定啟用連線。若需 IP 定址的詳細資訊，請參閱 [Amazon RDS IP 定址](USER_VPC.WorkingWithRDSInstanceinaVPC.md#USER_VPC.IP_addressing)。

大部分地區都支援雙堆疊網路執行個體。如需更多資訊，請參閱[區域和版本可用性](USER_VPC.WorkingWithRDSInstanceinaVPC.md#USER_VPC.IP_addressing.RegionVersionAvailability)。若要查看雙堆疊模式的限制，請參閱 [雙堆疊網路資料庫執行個體的限制](USER_VPC.WorkingWithRDSInstanceinaVPC.md#USER_VPC.IP_addressing.dual-stack-limitations)。

此案例可以下列圖表顯示。

 

![\[VPC 案例 (雙堆疊模式)\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/con-VPC-sec-grp-dual-stack.png)


如需其他案例的相關資訊，請參閱[在 VPC 中存取資料庫執行個體的案例](USER_VPC.Scenarios.md)。

您的資料庫執行個體僅需供您的 Amazon EC2 執行個體使用，無需供公有網際網路使用。因此，您建立同時包含公有和私有子網路的 VPC。Amazon EC2 執行個體是在公有子網路中託管，如此其可連接至公有網際網路。資料庫執行個體被託管於私有子網路中。Amazon EC2 執行個體可連線至資料庫執行個體，因為其託管於相同 VPC 中。但是，資料庫執行個體不可用於公有網際網路，以提供更高的安全性。

本教學課程會在單獨的可用區域中設定額外的公有子網路和私有子網路。教學課程不會使用這些子網路。RDS 資料庫子網路群組需要至少兩個可用區域中的子網路。額外的子網路可讓您在未來輕鬆切換到多可用區域資料庫執行個體部署。

若要建立使用雙堆疊模式的資料庫執行個體，請為 **Network type (網路類型)** 設定指定 **Dual-stack mode (雙堆疊模式)**。您也可以使用相同設定來修改資料庫執行個體。如需詳細資訊，請參閱[建立 Amazon RDS 資料庫執行個體](USER_CreateDBInstance.md)及[修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。

本教學課程說明為 Amazon RDS 資料庫執行個體配置 VPC。如需 Amazon VPC 的詳細資訊，請參閱《Amazon VPC 使用者指南》[https://docs.aws.amazon.com/vpc/latest/userguide/](https://docs.aws.amazon.com/vpc/latest/userguide/)。

## 建立含私有和公有子網路的 VPC
<a name="CHAP_Tutorials.CreateVPCDualStack.VPCAndSubnets"></a>

使用下列程序來建立一個同時含公有和私有子網路的 VPC。

**建立 VPC 和子網路**

1. 在 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) 開啟 Amazon VPC 主控台。

1. 在 的右上角 AWS 管理主控台，選擇要在其中建立 VPC 的區域。此範例使用 美國東部 (俄亥俄) 區域。

1. 在左上角，選擇 **VPC Dashboard** (VPC 儀表板)。若要開始建立 VPC，請選擇 **Create VPC** (建立 VPC)。

1. 在 **VPC Settings** (VPC 設定) 的 **Resources to create** (建立資源) 下，選擇 **VPC and more** (VPC 和更多)。

1. 對於剩下的 **VPC 設定**，設定這些值：
   + **Name tag auto-generation** (自動產生名稱標籤) – **tutorial-dual-stack**
   + **IPv4 CIDR block** (IPv4 CIDR 區塊) – **10.0.0.0/16**
   + **IPv6 CIDR block** (IPv6 CIDR 區塊) – **Amazon-provided IPv6 CIDR block** (Amazon 提供的 IPv6 CIDR 區塊)
   + **Tenancy** (租用) – **Default** (預設)
   + **Number of Availability Zones (AZs)** (可用區域 (AZ) 的數量) – **2**
   + **Customize AZs** (自訂可用區域) - 保留預設值。
   + **Number of public subnet** (公有子網路數量) – **2**
   + **Number of private subnets** (私有子網路數量) – **2**
   + **Customize subnets CIDR blocks** (自訂子網路 CIDR 區塊) – 保留預設值。
   + **NAT gateways (\$1)** (NAT 閘道 (\$1)) – **None** (無)
   + **Egress only internet gateway** (僅輸出網際網路閘道) – **No** (否)
   + **VPC endpoints** (VPC 端點) – **None** (無)
   + **DNS options** (DNS 選項) – 保留預設值。
**注意**  
Amazon RDS 需要至少兩個不同可用區域中的子網路，以支援多可用區域資料庫執行個體部署。本教學課程會建立單一可用區部署，但是，可讓您會來輕鬆轉換為多區域可用資料庫執行個體部署。

1. 選擇**建立 VPC**。

## 建立公有 Amazon EC2 執行個體的 VPC 安全群組
<a name="CHAP_Tutorials.CreateVPCDualStack.SecurityGroupEC2"></a>

接著建立公開存取的 VPC 安全群組。若要連接至 VPC 中的公有 EC2 執行個體，請將傳入規則新增至 VPC 安全群組，以允許流量從網際網路連接。

**建立 VPC 安全群組**

1. 在 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) 開啟 Amazon VPC 主控台。

1. 選擇 **VPC Dashboard (VPC 儀表板)**，再選擇 **Security Groups (安全群組)**，然後選擇 **Create security group (建立安全群組)**。

1. 在 **Create security group (建立安全群組)** 頁面上，設定下列值：
   + **安全群組名稱：****tutorial-dual-stack-securitygroup**
   + **描述:** **Tutorial Dual-Stack Security Group**
   + **VPC:** 選擇您先前建立的 VPC，例如 **vpc-*識別符* (tutorial-dual-stack-vpc)** 

1. 將傳入規則新增至安全群組

   1. 決定用於使用安全殼層 (SSH) 連接至 VPC 中 EC2 執行個體的 IP 地址。

      網際網路通訊協定第 4 版 (IPv4) 位址的範例為 `203.0.113.25/32`。網際網路通訊協定第 6 版 (IPv6) 地址範圍的範例為 `2001:db8:1234:1a00::/64`。

      在許多情況下，您可能透過網際網路服務供應商 (ISP) 或是從沒有靜態 IP 地址的防火牆進行連線。若是如此，請找出用戶端電腦所使用的 IP 地址範圍。
**警告**  
若您將 `0.0.0.0/0` 用於 IPv4 或 `::0` 用於 IPv6，則可讓所有 IP 地址使用 SSH 存取您的公有執行個體。通常在測試環境中短暫使用此方法是沒有問題的，但在生產環境則不安全。在生產環境中，建議您只授權特定 IP 地址或特定範圍的地址存取您的執行個體。

   1. 在 **Inbound rules (傳入規則)** 區段中，選擇 **Add rule (新增規則)**。

   1. 針對您的新傳入規則設定下列值，來允許透過 Secure Shell (SSH) 存取您的 Amazon EC2 執行個體。若執行此動作，您可連線至 EC2 執行個體來安裝 SQL 用戶端和其他應用程式。指定 IP 地址，讓您可以存取 EC2 執行個體：
      + **Type (類型)**：**SSH**
      + **Source (來源)**：來自步驟 a 的 IP 地址或範圍。IPv4 IP 地址的範例為 **203.0.113.25/32**。IPv6 IP 地址的範例為 **2001:DB8::/32**。

1. 請選擇 **Create security group (建立安全群組)** 以建立安全群組。

   請記下安全群組 ID，因為稍後在本教學中會需要它。

## 建立私有資料庫執行個體的 VPC 安全群組
<a name="CHAP_Tutorials.CreateVPCDualStack.SecurityGroupDB"></a>

若要讓您的資料庫執行個體保持私有，請建立第二個安全群組供私有存取。若要連線至 VPC 中的私有資料庫執行個體，請將傳入規則新增至 VPC 安全群組。這些規則僅允許來自 Amazon EC2 執行個體的流量。

**建立 VPC 安全群組**

1. 在 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) 開啟 Amazon VPC 主控台。

1. 選擇 **VPC Dashboard (VPC 儀表板)**，再選擇 **Security Groups (安全群組)**，然後選擇 **Create security group (建立安全群組)**。

1. 在 **Create security group (建立安全群組)** 頁面上，設定下列值：
   + **安全群組名稱：****tutorial-dual-stack-db-securitygroup**
   + **描述:** **Tutorial Dual-Stack DB Instance Security Group**
   + **VPC:** 選擇您先前建立的 VPC，例如 **vpc-*識別符* (tutorial-dual-stack-vpc)**

1. 將傳入規則新增至安全群組：

   1. 在 **Inbound rules (傳入規則)** 區段中，選擇 **Add rule (新增規則)**。

   1. 針對您的新傳入規則設定下列值，來允許連接埠 3306 上來自 Amazon EC2 執行個體的 MySQL 流量。如果這樣做，您可以從 EC2 執行個體連線至資料庫執行個體。這樣做表示您可以從 EC2 執行個體將資料傳送至您的資料庫。
      + **Type (類型)**：**MySQL/Aurora**
      + **Source** (來源)：您先前在本教學課程中建立的 **tutorial-dual-stack-securitygroup** 安全群組的識別符，例如 **sg-9edd5cfb**。

1. 若要建立安全群組，請選擇 **Create security group (建立安全群組)**。

## 建立資料庫子網路群組
<a name="CHAP_Tutorials.CreateVPCDualStack.DBSubnetGroup"></a>

*資料庫子網路群組*是您在 VPC 中建立，然後指派給資料庫執行個體的子網路的集合。透過使用資料庫子網路群組，您可在建立資料庫執行個體時指定特定的 VPC。如要建立與 `DUAL` 相容的資料庫子網路群組，則所有子網路必須與 `DUAL` 相容。如要成為 `DUAL` 相容，子網路必須具有與其關聯的 IPv6 CIDR。

**建立資料庫子網路群組**

1. 識別 VPC 中資料庫的私有子網路。

   1. 在 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) 開啟 Amazon VPC 主控台。

   1. 選擇 **VPC Dashboard** (VPC 儀表板)，然後選擇 **Subnets** (子網路)。

   1. 記下名為 **tutorial-dual-stack-subnet-private1-us-west-2a** 和 **tutorial-dual-stack-subnet-private2-us-west-2b** 之子網路的子網路 ID。

      當您建立資料庫子網路群組時，您將需要子網路 ID。

1. 前往 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)，開啟 Amazon RDS 主控台。

   請確定您連接到 Amazon RDS 主控台，而非 Amazon VPC 主控台。

1. 在導覽窗格中選擇 **Subnet groups (子網路群組)**。

1. 選擇 **Create DB Subnet Group** (建立資料庫子網路群組)。

1. 在 **Create DB subnet group** (建立資料庫子網路群組) 頁面上，於 **Subnet group details** (子網路群組詳細資訊) 中設定下列值：
   + **名稱:** **tutorial-dual-stack-db-subnet-group**
   + **描述:** **Tutorial Dual-Stack DB Subnet Group**
   + **VPC (VPC)：** **tutorial-dual-stack-vpc (vpc-*識別符*)** 

1. 在 **Add subnets (新增子網路)** 區段中，選擇 **Availability Zones (可用區域)** 和 **Subnets (子網路)** 選項的值。

   對於此教學課程，為 **Availability Zones** (可用區域) 選擇 **us-east-2a** 和 **us-east-2b**。對於 **Subnets** (子網路)，選擇您在上一個步驟找到的私有子網路。

1. 選擇**建立**。

您的新資料庫子網路群組會顯示在 RDS 主控台的資料庫子網路群組清單中。您可以選擇資料庫子網路群組來查看其詳細資訊。其中包括受支援的定址通訊協定、與該組相關聯的所有子網路，以及資料庫子網路群組支援的網路類型。

## 在雙堆疊模式下建立 Amazon EC2 執行個體
<a name="CHAP_Tutorials.CreateVPCDualStack.CreateEC2Instance"></a>

若要建立 Amazon EC2 執行個體，請遵循《Amazon EC2 使用者指南》**中的[使用新的啟動執行個體精靈啟動執行個體](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-instance-wizard.html)。

在 **Configure Instance Details** (設定執行個體詳細資訊) 頁面上設定這些值，而其他值都維持預設值：
+ **網路**：選擇具備公有和私有子網路的現有 VPC，例如 [建立含私有和公有子網路的 VPC](#CHAP_Tutorials.CreateVPCDualStack.VPCAndSubnets) 中建立的 **tutorial-dual-stack-vpc** (vpc-*identifier*)。
+ **Subnet** (子網路) – 選擇現有的公有子網路，例如 [建立公有 Amazon EC2 執行個體的 VPC 安全群組](#CHAP_Tutorials.CreateVPCDualStack.SecurityGroupEC2) 中建立的 **subnet-*識別符* \$1 tutorial-dual-stack-subnet-public1-us-east-2a \$1 us-east-2a**。
+ **Auto-assign Public IP** (自動指派公有 IP) – 選擇 **Enable** (啟用)。
+ **Auto-assign IPv6 IP** (自動指派 IPv6 IP) – 選擇 **Enable** (啟用)。
+ **Firewall (security groups)** 防火牆 (安全群組) – 選擇 **Select an existing security group** (選取現有的安全群組)。
+ **Common security groups** (一般安全群組) - 選擇現有的安全群組，例如在 [建立公有 Amazon EC2 執行個體的 VPC 安全群組](#CHAP_Tutorials.CreateVPCDualStack.SecurityGroupEC2) 中建立的 `tutorial-securitygroup`。請確定您選擇的安全性群組包含安全殼層 (SSH) 和 HTTP 存取的輸入規則。

## 在雙堆疊模式下建立資料庫執行個體
<a name="CHAP_Tutorials.CreateVPCDualStack.CreateDBInstance"></a>

在此步驟中，您將建立在雙堆疊模式下執行的資料庫執行個體。

**建立資料庫執行個體**

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

1. 在主控台的右上角，選擇 AWS 區域 您要建立資料庫執行個體的 。此範例使用 美國東部 (俄亥俄) 區域。

1. 在導覽窗格中，選擇 **Databases** (資料庫)。

1. 選擇 **Create database** (建立資料庫)。

1. 在 **Create database** (建立資料庫) 頁面上，確保已選擇 **Standard create** (標準建立) 選項，接著選擇 MySQL 資料庫引擎類型。

1. 在 **Connectivity** (連線) 區段中，設定下列值：
   + **Network type** (網路類型) – 選擇 **Dual-stack mode** (雙堆疊模式)。  
![\[主控台中的 Network type (網路類型) 區段，選取了 Dual-stack mode (雙堆疊模式)\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/UserGuide/images/dual-stack-mode.png)
   + **Virtual private cloud (VPC)** 虛擬私有雲端 (VPC) – 選擇具備公有和私有子網路的現有 VPC，例如 [建立含私有和公有子網路的 VPC](#CHAP_Tutorials.CreateVPCDualStack.VPCAndSubnets) 中建立的 **tutorial-dual-stack-vpc** (vpc-*識別符*)。

     VPC 必須具有位於不同可用區域的子網路。
   + **DB Subnet group** (資料庫子網路群組) – 選擇 VPC 的資料庫子網路群組，例如 [建立資料庫子網路群組](#CHAP_Tutorials.CreateVPCDualStack.DBSubnetGroup) 中建立的 **tutorial-dual-stack-db-subnet-group**。
   + **Public access** (公有存取) – 選擇 **No** (否)。
   + **VPC security group (firewall)** (VPC 安全群組 (防火牆)) – 選取 **Choose existing** (選擇現有)。
   + **Existing VPC security groups (現有 VPC 安全群組)** – 選擇設定為私有存取的現有 VPC 安全群組，例如在 [建立私有資料庫執行個體的 VPC 安全群組](#CHAP_Tutorials.CreateVPCDualStack.SecurityGroupDB) 中建立的 **tutorial-dual-stack-db-securitygroup**。

     選擇與各項相關聯的 **X**，以移除其他安全群組，例如預設安全群組。
   + **Availability Zone** (可用區域) – 選擇 **us-west-2a**。

     若要避免跨可用區域流量，請確定資料庫執行個體和 EC2 執行個體位於相同的可用區域。

1. 在其餘區段，指定資料庫執行個體的設定。如需每項設定的相關資訊，請參閱 [資料庫執行個體的設定](USER_CreateDBInstance.Settings.md)。

## 連接至您的 Amazon EC2 執行個體和資料庫執行個體
<a name="CHAP_Tutorials.CreateVPCDualStack.Connect"></a>

在雙堆疊模式下建立 Amazon EC2 執行個體和資料庫執行個體後，您可以使用 IPv6 通訊協定連線到每個執行個體。如要使用 IPv6 通訊協定連線至 Amazon EC2 執行個體，請按照《Amazon EC2 使用者指南》**中[連接至您的 Linux 執行個體](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstances.html)的指示進行。

若要從 Amazon EC2 執行個體連線至您的 RDS for MySQL 資料庫執行個體，請依照[連線至 MySQL 資料庫執行個體](CHAP_GettingStarted.CreatingConnecting.MySQL.md#CHAP_GettingStarted.Connecting.MySQL)中的指示進行。

## 刪除 VPC
<a name="CHAP_Tutorials.CreateVPCDualStack.Delete"></a>

為此教學課程建立 VPC 和其他資源後，如果不再需要這些資源，便可以將它們刪除。

若您在針對此教學課程建立的 VPC 中新增資源，則可能需要先刪除這些資源，才能刪除 VPC。資源範例為 Amazon EC2 執行個體或資料庫執行個體。如需詳細資訊，請參閱《*Amazon VPC 使用者指南*》中的[刪除 VPC](https://docs.aws.amazon.com/vpc/latest/userguide/working-with-vpcs.html#VPC_Deleting)。

**刪除 VPC 和相關資源**

1. 刪除資料庫子網路群組：

   1. 前往 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)，開啟 Amazon RDS 主控台。

   1. 在導覽窗格中選擇 **Subnet groups (子網路群組)**。

   1. 選取要刪除的資料庫子網路群組，例如 **tutorial-db-subnet-group**。

   1. 選擇 **Delete** (刪除)，然後在確認視窗中選擇 **Delete** (刪除)。

1. 請記下 VPC ID：

   1. 在 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) 開啟 Amazon VPC 主控台。

   1. 選擇 **VPC Dashboard** (VPC 儀表板)，然後選擇 **VPC**。

   1. 在清單中，識別您建立的 VPC，例如 **tutorial-dual-stack-vpc**。

   1. 請記下您所建立 VPC 的 **VPC ID**。於後續步驟中，您會需要此 VPC ID。

1. 刪除安全群組：

   1. 在 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) 開啟 Amazon VPC 主控台。

   1. 選擇 **VPC Dashboard** (VPC 儀表板)，然後選擇 **Security Groups** (安全群組)。

   1. 選取 Amazon RDS 資料庫執行個體的安全群組，例如 **tutorial-dual-stack-db-securitygroup**。

   1. 若為 **Actions (動作)**，選擇 **Delete security groups (刪除安全群組)**，然後在確認頁面上選擇 **Delete (刪除)**。

   1. 在 **Security Groups (安全群組)** 頁面上，選取 Amazon EC2 執行個體的安全群組，例如 **tutorial-dual-stack-securitygroup**。

   1. 若為 **Actions (動作)**，選擇 **Delete security groups (刪除安全群組)**，然後在確認頁面上選擇 **Delete (刪除)**。

1. 刪除 NAT 閘道：

   1. 在 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) 開啟 Amazon VPC 主控台。

   1. 選擇 **VPC Dashboard** (VPC 儀表板)，然後選擇 **NAT Gateways** (NAT 閘道)。

   1. 選取您建立之 VPC 的 NAT 閘道。使用 VPC ID 識別正確的 NAT 閘道。

   1. 若為 **Actions (動作)**，選擇 **Delete NAT gateway (刪除 NAT 閘道)**。

   1. 在確認頁面上，輸入 **delete**，然後選擇 **Delete** (刪除)。

1. 刪除 VPC

   1. 在 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) 開啟 Amazon VPC 主控台。

   1. 選擇 **VPC Dashboard** (VPC 儀表板)，然後選擇 **VPC**。

   1. 選取您要刪除的 VPC，例如 **tutorial-dual-stack-vpc**。

   1. 對於 **Actions (動作)**，請選擇 **Delete VPC (刪除 VPC)**。

      確認頁面會顯示與 VPC 相關聯的其他資源，這些資源也將遭到刪除，包括與其相關聯的子網路。

   1. 在確認頁面上，輸入 **delete**，然後選擇 **Delete** (刪除)。

1. 釋放彈性 IP 地址：

   1. 前往 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) 開啟 Amazon EC2 主控台。

   1. 選擇 **EC2 Dashboard** (EC2 儀表板)，然後選擇 **Elastic IPs** (彈性 IP)。

   1. 選取您要釋放的彈性 IP 地址。

   1. 若為 **Actions (動作)**，選擇 **Release Elastic IP addresses (釋放彈性 IP 地址)**。

   1. 在確認頁面上，選擇 **Release** (釋放)。

# 將不在 VPC 中的資料庫執行個體移入 VPC
<a name="USER_VPC.Non-VPC2VPC"></a>

EC2-Classic 平台上的部分舊型資料庫執行個體不在 VPC 中。若您的資料庫執行個體不在 VPC 中，您可以使用AWS 管理主控台將資料庫執行個體輕鬆移入 VPC。您必須先建立 VPC，才能將不在 VPC 中的資料庫執行個體移入 VPC。


|  | 
| --- |
| EC2-Classic 在 2022 年 8 月 15 日淘汰。如果您還沒有從 EC2-Classic 遷移至 VPC，建議您盡快這麼做。如需詳細資訊，請參閱 Amazon EC2 使用者指南中的[從 EC2-Classic 遷移至 VPC](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-migrate.html)，以及 [EC2-Classic Networking is Retiring – Here’s How to Prepare](https://aws.amazon.com/blogs/aws/ec2-classic-is-retiring-heres-how-to-prepare/) (EC2-Classic 網路正在淘汰 - 本文介紹如何準備) 部落格文章。 | 

**重要**  
如果您是第一次使用 Amazon RDS 的新客戶，且先前從未建立過資料庫執行個體，或是要在未曾使用的 AWS 區域中建立資料庫執行個體，則在幾乎所有情況下，使用的平台都是 *EC2-VPC*，並擁有預設的 VPC。如需在 VPC 中使用資料庫執行個體的相關資訊，請參閱 [在 VPC 中使用資料庫執行個體](USER_VPC.WorkingWithRDSInstanceinaVPC.md)。

請依照以下步驟，為您的資料庫執行個體建立 VPC。
+ [步驟 1：建立 VPC](USER_VPC.WorkingWithRDSInstanceinaVPC.md#USER_VPC.CreatingVPC)
+  [步驟 2：建立資料庫子網路群組](USER_VPC.WorkingWithRDSInstanceinaVPC.md#USER_VPC.CreateDBSubnetGroup)
+  [步驟 3：建立 VPC 安全群組](USER_VPC.WorkingWithRDSInstanceinaVPC.md#USER_VPC.CreateVPCSecurityGroup)

建立 VPC 後，請依照以下步驟，將您的資料庫執行個體移入 VPC。
+ [更新資料庫執行個體的 VPC](USER_VPC.VPC2VPC.md)

強烈建議您在遷移之前，立即建立資料庫執行個體的備份。這麼做可確保在遷移失敗時，可以還原資料。如需更多詳細資訊，請參閱 [備份、還原和匯出資料](CHAP_CommonTasks.BackupRestore.md)。

將資料庫執行個體移入 VPC 有幾個限制，說明如下。
+ **上一代資料庫執行個體類別** – VPC 平台上可能不支援上一代資料庫執行個體類別。將資料庫執行個體移至 VPC 時，請選擇 db.m3 或 db.r3 資料庫執行個體類別。將資料庫執行個體移至 VPC 後，您可以擴展資料庫執行個體以使用較新的資料庫執行個體類別。如需 VPC 支援執行個體類別的完整清單，請參閱 [Amazon RDS 執行個體類型](https://aws.amazon.com/rds/instance-types/)。
+ **異地同步備份** – 目前系統不支援將不在 VPC 中的異地同步備份資料庫執行個體移入 VPC。若要將資料庫執行個體移至 VPC，請先修改資料庫執行個體，使其成為單一可用區部署。將 **Multi-AZ deployment** (異地同步備份部署) 設定變更為 **No** (否)。將資料庫執行個體移至 VPC 後，再次將其修改為異地同步備份部署。如需更多詳細資訊，請參閱 [修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。
+ **讀取複本** – 目前不支援將具有不在 VPC 中的僅供讀取複本的資料庫執行個體移至 VPC。若要將資料庫執行個體移至 VPC，請先刪除其所有讀取複本。將資料庫執行個體移至 VPC 後，請重新建立讀取複本。如需更多詳細資訊，請參閱 [使用資料庫執行個體僅供讀取複本](USER_ReadRepl.md)。
+ **選項群組** – 如果您將資料庫執行個體移至 VPC，且資料庫執行個體使用自訂選項群組，請變更與資料庫執行個體關聯的選項群組。選項群組會依平台而異，隨著執行個體移入 VPC，平台也會一併改變。若要在這種情況下使用自訂選項群組，可將預設 VPC 選項群組指派給資料庫執行個體、指派您移動目的地中其他資料庫執行個體所使用的選項群組，或是建立新的選項群組，並將其指派給該資料庫執行個體。如需更多詳細資訊，請參閱 [使用選項群組](USER_WorkingWithOptionGroups.md)。

## 以最短的停機時間，將不在 VPC 中的資料庫執行個體移到 VPC 中的替代方案
<a name="USER_VPC.Non-VPC2VPC.Minimal-Downtime"></a>

使用下列替代方案，您可以將不在 VPC 中的資料庫執行個體移到 VPC 中，而且停機時間最小。這些替代方案會對來源資料庫執行個體造成最小的中斷，並允許它在遷移期間提供使用者流量服務。不過，遷移至 VPC 所需的時間會根據資料庫大小和即時工作負載特性而有所不同。
+ **AWS Database Migration Service (AWS DMS)** – AWS DMS 可啟用資料的即時遷移，同時保持來源資料庫執行個體完全可運作，但它只會複寫一組有限的 DDL 陳述式。AWS DMS 不會傳播項目，例如索引、使用者、權限、預存程序，及其他未與資料表資料直接相關的資料庫變更。此外，AWS DMS 不會自動使用 RDS 快照進行初始資料庫執行個體建立，這會增加遷移時間。如需詳細資訊，請參閱 [AWS Database Migration Service](https://aws.amazon.com/dms/)。
+ **資料庫快照還原或時間點復原** – 您可以藉由還原資料庫執行個體，或藉由將資料庫執行個體還原至某時間點，以將資料庫執行個體移至 VPC。如需詳細資訊，請參閱 [還原至資料庫執行個體](USER_RestoreFromSnapshot.md) 及 [將 Amazon RDS 的資料庫執行個體還原至指定時間](USER_PIT.md)。