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

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

使用 Aurora 和 進行密碼管理 AWS Secrets Manager

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

區域和版本可用性

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

Aurora 整合 Secrets Manager 的限制

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

  • Amazon RDS Blue/Green 部署

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

  • Aurora Serverless v1 資料庫叢集

  • Aurora 僅供讀取複本

使用 管理主要使用者密碼的概觀 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,並使用 AWS Secrets Manager 秘密中的登入資料連線到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 的身分和存取管理

對於建立、修改或還原操作,指定 Aurora 在 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

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

您可以使用IAM條件金鑰來強制執行主要使用者密碼的 Aurora 管理 AWS Secrets Manager。下列政策不允許使用者建立或還原資料庫執行個體或資料庫叢集,除非主要使用者密碼是由 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、 或 RDSAPI來執行這些動作。

遵循使用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、金鑰 IDARN、別名 或別名名稱。若要在不同的 中使用KMS金鑰 AWS 帳戶,請指定金鑰ARN或別名 ARN。在 Aurora 管理資料庫叢集的資料庫登入資料後,您無法變更用來加密秘密的KMS金鑰。

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

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

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

用於 Linux, macOS、 或 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 中管理主要使用者密碼,請在下列其中一個操作true中將 ManageMasterUserPassword 參數設定為 :

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

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

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

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

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

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

若要使用RDS主控台輪換主要使用者密碼秘密,請修改資料庫叢集,然後在設定中選取立即輪換秘密

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

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

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

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

用於 Linux, macOS、 或 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 Secrets Manager 命令) 擷取秘密。

您可以在 Secrets Manager 中找到由 Aurora 管理的秘密的 Amazon Resource Name (ARN),其中包含 RDS主控台 AWS CLI、 或 RDS API。

在 Secrets Manager 中檢視 Aurora 所管理秘密的詳細資訊
  1. 登入 AWS Management Console 並在 開啟 Amazon RDS主控台https://console.aws.amazon.com/rds/

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

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

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

    主登入資料 ARN中,您可以檢視秘密 ARN。

    在 Secrets Manager 中檢視 Aurora 所管理秘密的詳細資訊

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

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

  • SecretArn – 秘密ARN的

  • SecretStatus – 機密的狀態

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

    • creating – 正在建立機密。

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

    • rotating – 正在輪換機密。

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

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

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

指定 --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 Secrets Manager CLI命令檢視秘密的詳細資訊。

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

用於 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'

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

當您擁有秘密 時ARN,您可以使用 GetSecretValue Secrets Manager 操作來檢視秘密的詳細資訊。