使用 Aurora 和密碼管理 AWS Secrets Manager - Amazon Aurora

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

使用 Aurora 和密碼管理 AWS Secrets Manager

Amazon Aurora 與 Secrets Manager 整合,以管理資料庫叢集的主要使用者密碼。

區域和版本可用性

功能可用性和支援會因每個資料庫引擎的特定版本以及 AWS 區域而有所不同。如需 Secrets Manager 與 Amazon Aurora 整合之版本和區域可用性的詳細資訊,請參閱 針對 Secrets Manager 整合的支援區域和 Aurora 資料庫

Secrets Manager 與 Amazon Aurora 整合的限制

下列功能不支援使用 Secrets Manager 管理主要使用者密碼:

  • Amazon RDS 藍/綠部署

  • 屬於 Aurora 全域資料庫的資料庫叢集。

  • Aurora Serverless v1 資料庫叢集

  • Aurora MySQL 跨區域僅供讀取複本

管理主要使用者密碼的概觀 AWS Secrets Manager

使用 AWS Secrets Manager,您可以透過 API 呼叫 Secrets Manager 來取代程式碼中的硬式編碼認證 (包括資料庫密碼),以程式設計方式擷取密碼。如需 Secrets Manager 的詳細資訊,請參閱 AWS Secrets Manager 使用者指南

當您將資料庫密碼儲存在 Secrets Manager 中時, AWS 帳戶 會產生費用。如需定價的資訊,請參閱 AWS Secrets Manager 定價

當您執行下列其中一項操作時,您可以指定 Aurora,在 Secrets Manager 中管理 Amazon Aurora 資料庫叢集的主要使用者密碼:

  • 建立資料庫叢集

  • 修改資料庫叢集

  • 從 Amazon S3 還原資料庫叢集 (僅限 Aurora MySQL)

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

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

若要使用機密中的憑證連線至資料庫叢集,您可以從 Secrets Manager 擷取機密。如需詳細資訊,請參閱《AWS Secrets Manager 使用指南》中的使用密 AWS Secrets Manager 碼中的認證從 SQL 資料庫擷取密碼 AWS Secrets Manager和 Connect 到 SQL 資料庫。

使用 Secrets Manager 管理主要使用者密碼的優點

使用 Secrets Manager 管理 Aurora 主要使用者密碼可提供下列優點:

  • Aurora 會自動產生資料庫憑證。

  • Aurora 會在中自動儲存和管理資料庫認證 AWS Secrets Manager。

  • Aurora 會定期輪換資料庫憑證,而無需變更應用程式。

  • 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/

Secrets Manager 整合所需的許可

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

對於建立、修改或還原操作,指定 Aurora 在 Secrets Manager 中管理主要使用者密碼的使用者必須具有執行下列操作的許可:

  • kms:DescribeKey

  • secretsmanager:CreateSecret

  • secretsmanager:TagResource

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

  • kms:Decrypt

  • kms:GenerateDataKey

  • kms:CreateGrant

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

  • secretsmanager:RotateSecret

在中強制執行 Aurora 管理主要使用者密碼 AWS Secrets Manager

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

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": ["rds:CreateDBInstance", "rds:CreateDBCluster", "rds:RestoreDBInstanceFromS3", "rds:RestoreDBClusterFromS3"], "Resource": "*", "Condition": { "Bool": { "rds:ManageMasterUserPassword": false } } } ] }
注意

此原則會在建立 AWS Secrets Manager 時強制執行密碼管理。不過,您仍然可以停用 Secrets Manager 整合,並透過修改叢集個體手動設定主要密碼。

為了防止這種情況,請在政策的動作區塊中包含 rds:ModifyDBInstancerds:ModifyDBCluster。請注意,這可防止使用者對未啟用 Secrets Manager 整合的現有叢集套用任何進一步的修改。

如需在 IAM 政策中使用條件金鑰的詳細資訊,請參閱 Aurora 的政策條件金鑰範例政策:使用條件金鑰

使用 Secrets Manager 管理資料庫叢集的主要使用者密碼

執行下列動作時,您可以在 Secrets Manager 中設定主要使用者密碼的 Aurora 管理:

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

請遵循使用 RDS 主控台建立或修改資料庫叢集的指示:

當使用 RDS 主控台來執行其中一項操作時,您可以指定主要使用者密碼是由 Secrets Manager 中的 Aurora 管理。若要在建立或還原資料庫叢集時這樣做,請在 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

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

管理 AWS Secrets Manager 選取的主要認證

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

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

如需當您建立資料庫叢集時可用設定的詳細資訊,請參閱 Aurora 資料庫叢集的設定。如需當您修改資料庫叢集時可用設定的詳細資訊,請參閱 Amazon Aurora的設定

若要指定 Aurora 在 Secrets Manager 中管理主要使用者密碼,請在下列其中一個命令中指定 --manage-master-user-password 選項:

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

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

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

如需當您建立資料庫叢集時可用設定的詳細資訊,請參閱 Aurora 資料庫叢集的設定。如需當您修改資料庫叢集時可用設定的詳細資訊,請參閱 Amazon Aurora的設定

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

對於LinuxmacOS、或Unix:

aws rds create-db-cluster \ --db-cluster-identifier sample-cluster \ --engine aurora-mysql \ --engine-version 8.0 \ --master-username admin \ --manage-master-user-password

在 Windows 中:

aws rds create-db-cluster ^ --db-cluster-identifier sample-cluster ^ --engine aurora-mysql ^ --engine-version 8.0 ^ --master-username admin ^ --manage-master-user-password

若要指定 Aurora 在 Secrets Manager 中管理主要使用者密碼,請在下列其中一個操作中將 ManageMasterUserPassword 參數設為 true

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

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

輪換資料庫叢集的主要使用者密碼機密

Aurora 輪換主要使用者密碼機密時,Secrets Manager 會針對現有機密產生新的機密版本。新版本的機密包含新的主要使用者密碼。Aurora 會變更資料庫叢集的主要使用者密碼,以符合新秘密版本的密碼。

您可以立即輪換機密,而無需等待排程的輪換。若要在 Secrets Manager 中輪換主要使用者密碼機密,請修改資料庫叢集。如需修改資料庫叢集的詳細資訊,請參閱 修改 Amazon Aurora 資料庫叢集

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

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

立即輪換主使用者密碼機密

遵循使用 使用主控台、CLI 和 API 修改資料庫叢集 中的 RDS 主控台修改資料庫叢集的指示。您必須在確認頁面上選擇 Apply immediately (立即套用)。

若要使用旋轉主要使用者密碼密碼 AWS CLI,請使用指modify-db-cluster令並指定--rotate-master-user-password選項。您必須在輪換主要密碼時指定 --apply-immediately 選項。

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

對於LinuxmacOS、或Unix:

aws rds modify-db-cluster \ --db-cluster-identifier mydbcluster \ --rotate-master-user-password \ --apply-immediately

在 Windows 中:

aws rds modify-db-cluster ^ --db-cluster-identifier mydbcluster ^ --rotate-master-user-password ^ --apply-immediately

您可以使用 ModifyDBCluster 操作,並將 RotateMasterUserPassword 參數設為 true,來輪換主要使用者密碼機密。輪換主要密碼時,必須將 ApplyImmediately 參數設為 true

檢視資料庫叢集之機密的詳細資訊

您可以使用控制台(https://console.aws.amazon.com/secretsmanager/)或 AWS CLI (get-secret-value密碼管理器命令)檢索密碼。

您可以使用 RDS 主控台、或 RDS API 在機密管理員中找到由 Aurora 所管理的密碼的 Amazon 資源名稱 (ARN)。 AWS CLI

檢視 Secrets Manager 中由 Aurora 管理之機密的詳細資訊
  1. 登入 AWS Management Console 並開啟 Amazon RDS 主控台,網址為 https://console.aws.amazon.com/rds/

  2. 在導覽窗格中,選擇 Databases (資料庫)。

  3. 選擇資料庫叢集的名稱,以顯示其詳細資訊。

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

    Master Credentials ARN (主要憑證 ARN) 中,您可以檢視機密 ARN。

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

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

您可以使用 RDS 命 AWS CLI describe-db-clusters令,在密碼管理員中尋找由 Aurora 所管 Secrets Manager 碼的下列相關資訊:

  • SecretArn – 機密的 ARN

  • SecretStatus – 機密的狀態

    可能的狀態值包括下列項目:

    • creating – 正在建立機密。

    • active – 機密可供正常使用和輪換。

    • rotating – 正在輪換機密。

    • impaired – 機密可以用來存取資料庫憑證,但無法將其輪換。例如,如果變更許可,以便 RDS 再也無法取機密或秘密的 KMS 金鑰,則秘密可能會具有此狀態。

      當密碼具有此狀態時,您可以更正導致狀態的條件。如果您更正了導致狀態的條件,則狀態仍會保留 impaired,直到下一次輪換為止。或者,您可以修改資料庫叢集,以關閉資料庫憑證的自動管理,然後再次修改資料庫叢集,以開啟資料庫憑證的自動管理。若要修改資料庫叢集,請使用modify-db-cluster指令中的--manage-master-user-password選項。

  • KmsKeyId – 用來加密機密之 KMS 金鑰的 ARN

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

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密管理員 CLI 命令來檢視有關密碼的詳細資料。

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

對於LinuxmacOS、或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'

您可以檢視 Secrets Manager 中由 Aurora 管理之機密的 ARN、狀態和 KMS 金鑰,方法為使用 DescribeDBClusters RDS 操作,並將 DBClusterIdentifier 參數設為資料庫叢集識別符。機密的詳細資訊包含在輸出中。

當您擁有秘密 ARN 時,您可以使用「秘GetSecretValue密管理員」作業來檢視有關密碼的詳細資料。