Amazon RDS Custom 的安全性 - Amazon Relational Database Service

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

Amazon RDS Custom 的安全性

熟悉 RDS Custom 的安全考量。

RDS Custom 如何安全地代表您管理任務

RDS Custom 使用下列工具和技術代表您安全地執行操作:

AWSServiceRoleForRDSCustom 服務連結角色

服務連結角色是由服務預先定義,內含該服務代您呼叫其他  AWS 服務  所需的所有許可。對於 RDS Custom,AWSServiceRoleForRDSCustom 是根據最低權限原則定義的服務連結角色。RDS Custom 會使用 AmazonRDSCustomServiceRolePolicy 中的權限 (連接此角色的政策) 來執行大部分的佈建和所有非主機的管理任務。有關更多信息,請參閱亞馬遜 RDS CustomServiceRolePolicy

當它在主機上執行工作時,RDS Custom Automation 會使用服務連結角色的認證來執行使用 AWS Systems Manager的命令。您可以透過系統管理員指令歷程記錄和  AWS CloudTrail 來稽核命令歷史記錄。系統管理員會使用您的網路設定連線到 RDS Custom 資料庫執行個體。如需詳細資訊,請參閱 步驟 4:設定適用於 Oracle 的 RDS 自訂 IAM

暫時性 IAM 憑證

佈建或刪除資源時,RDS Custom 有時會使用暫時性憑證,其是由呼叫 IAM 主體憑證衍生而來。這些 IAM 憑證受到該主體所連接的 IAM 政策限制,並在操作完成後隨即過期。如需了解使用 RDS Custom 的 IAM 主體所需許可,請參閱 步驟 5:將必要許可授予 IAM 使用者或角色

Amazon EC2 執行個體設定檔

EC2 執行個體設定檔是適用於 IAM 角色的容器,可讓您將角色資訊傳遞至 EC2 執行個體。EC2 執行個體位於 RDS Custom 資料庫執行個體的底層。建立 RDS Custom 資料庫執行個體時,您可以提供執行個體設定檔。在執行以主機為基礎的管理任務 (例如備份) 時,RDS Custom 會使用 EC2 執行個體設定檔憑證。如需詳細資訊,請參閱 手動建立 IAM 角色和執行個體設定檔

SSH 金鑰對

當 RDS Custom 建立資料庫執行個體底層的 EC2 執行個體時,它會代表您建立 SSH 金鑰對。該鍵使用命名前綴do-not-delete-rds-custom-ssh-privatekey-db-。 AWS Secrets Manager 存儲此 SSH 私鑰作為秘密在您的 AWS 帳戶. Amazon RDS 不會儲存、存取或使用這些憑證。如需詳細資訊,請參閱 Amazon EC2 金鑰對與 Linux 執行個體

SSL 憑證

RDS Custom 資料庫執行個體不支援受管 SSL 憑證。如果您要部署 SSL,可以在自己的錢包中自行管理 SSL 憑證,並建立 SSL 接聽程式,以保護用戶端資料庫之間或資料庫複寫的連線。如需詳細資訊,請參閱 Oracle Database 文件中的設定 Transport Layer Security 身分驗證

保護您的 Amazon S3 儲存貯體,避免混淆代理人問題

建立 Amazon RDS Custom for Oracle 的自訂引擎版本 (CEV) 或 RDS Custom for Oracle 的資料庫執行個體時,RDS Custom 會建立 Amazon S3 儲存貯體。S3 儲存貯體儲存如 CEV 成品、重做 (交易) 日誌、支援範圍的組態項目等檔案,以及 AWS CloudTrail 日誌。

您可以使用全域條件內容金鑰來防止全混淆代理人問題,使 S3 儲存貯體貯體更加安全。如需詳細資訊,請參閱 防止跨服務混淆代理人問題

下列 RDS Custom for Oracle 範例,顯示 S3 儲存貯體政策中使用 aws:SourceArnaws:SourceAccount 全域條件內容金鑰。對於 RDS Custom for Oracl,請確保包含 CEV 的 Amazon Resource Name (ARN) 和資料庫執行個體。對於 RDS Custom for SQL Server,請確保包含資料庫執行個體的 ARN。

... { "Sid": "AWSRDSCustomForOracleInstancesObjectLevelAccess", "Effect": "Allow", "Principal": { "Service": "custom.rds.amazonaws.com" }, "Action": [ "s3:GetObject", "s3:GetObjectVersion", "s3:DeleteObject", "s3:DeleteObjectVersion", "s3:GetObjectRetention", "s3:BypassGovernanceRetention" ], "Resource": "arn:aws:s3:::do-not-delete-rds-custom-123456789012-us-east-2-c8a6f7/RDSCustomForOracle/Instances/*", "Condition": { "ArnLike": { "aws:SourceArn": [ "arn:aws:rds:us-east-2:123456789012:db:*", "arn:aws:rds:us-east-2:123456789012:cev:*/*" ] }, "StringEquals": { "aws:SourceAccount": "123456789012" } } }, ...

輪換 RDS Custom for Oracle 憑證以符合合規計畫

有些合規計畫需要定期變更資料庫使用者憑證,例如每 90 天變更一次。RDS Custom for Oracle 會自動輪換部分預先定義資料庫使用者的憑證。

為預先定義使用者自動輪換憑證

如果您的 RDS Custom for Oracle 資料庫執行個體是在 Amazon RDS 中託管,下列預先定義 Oracle 使用者的憑證會每 30 天自動輪換一次。上述使用者的認證位於中 AWS Secrets Manager。

預先定義的 Oracle 使用者
資料庫使用者建立者支援的引擎版本備註

SYS

Oracle

custom-oracle-ee

custom-oracle-ee-cdb

custom-oracle-se2

custom-oracle-se2-國別分組

SYSTEM

Oracle

custom-oracle-ee

custom-oracle-ee-cdb

custom-oracle-se2

custom-oracle-se2-國別分組

RDSADMIN

RDS

custom-oracle-ee

custom-oracle-se2

C##RDSADMIN

RDS

custom-oracle-ee-cdb

custom-oracle-se2-國別分組

帶有C##前綴的使用者名稱僅存在於 CDB 中。如需有關 CDB 的詳細資訊,請參閱 Amazon RDS Custom for Oracle 架構的概觀

RDS_DATAGUARD

RDS

custom-oracle-ee

此使用者僅存在於僅供讀取複本、僅供讀取複本的來源資料庫,以及您以 Oracle Data Guard 實際移轉至 RDS Custom 的資料庫。

C##RDS_DATAGUARD

RDS

custom-oracle-ee-cdb

此使用者僅存在於僅供讀取複本、僅供讀取複本的來源資料庫,以及您以 Oracle Data Guard 實際移轉至 RDS Custom 的資料庫。帶有C##前綴的使用者名稱僅存在於 CDB 中。如需有關 CDB 的詳細資訊,請參閱 Amazon RDS Custom for Oracle 架構的概觀

自動憑證輪換的例外狀況是您已手動設為待命資料庫的 Oracle 資料庫執行個體之 RDS Custom。RDS 只會輪換您使用 create-db-instance-read-replica CLI 命令或 CreateDBInstanceReadReplica API 建立的僅供讀取複本憑證。

輪換使用者憑證的指南

為了確保您的憑證會根據合規計畫進行輪換,請注意下列事項:

  • 如果您的資料庫執行個體會自動輪換憑證,請勿手動變更或刪除預先定義 Oracle 使用者列出之使用者秘密、密碼檔案或密碼。否則,RDS Custom 可能會將您的資料庫執行個體置於支援範圍之外,從而暫停自動輪換。

  • RDS 主要使用者並未預先定義,因此您必須手動變更密碼或在 Secrets Manager 中設定自動輪換。如需詳細資訊,請參閱旋轉 AWS Secrets Manager 密碼

手動輪換使用者憑證

針對以下資料庫類別,RDS 不會自動輪換預先定義 Oracle 使用者列出的使用者憑證:

  • 您手動設定為待命資料庫的資料庫。

  • 內部部署資料庫。

  • 位於支援範圍以外的資料庫執行個體,或處於 RDS Custom 自動化無法執行的狀態。在此情況下,RDS Custom 也不會輪換金鑰。

若您的資料庫屬於上述任何類別,您必須手動輪換使用者憑證。

手動輪換資料庫執行個體的使用者憑證
  1. 登入 AWS Management Console 並開啟 Amazon RDS 主控台,網址為 https://console.aws.amazon.com/rds/

  2. 請確認資料庫中,RDS 目前未備份您的資料庫執行個體,或執行高可用性設定等操作。

  3. 在資料庫詳細資訊頁面中,選擇組態並記下資料庫執行個體的資源 ID。或者,您可以使用該 AWS CLI 命令describe-db-instances

  4. 前往以下位置開啟機密管理員控制台:https://console.aws.amazon.com/secretsmanager/

  5. 在搜尋方塊中,輸入您的資料庫資源 ID,並以下列格式搜尋秘密:

    do-not-delete-rds-custom-db-resource-id-numeric-string

    此秘密會儲存 RDSADMINSYSSYSTEM 的密碼。下列範例金鑰適用於具有資料庫資源 ID db-ABCDEFG12HIJKLNMNOPQRS3TUVWX 的資料庫執行個體:

    do-not-delete-rds-custom-db-ABCDEFG12HIJKLNMNOPQRS3TUVWX-123456
    重要

    若您的資料庫執行個體是僅供讀取複本並使用 custom-oracle-ee-cdb 引擎,則會有兩個具字尾 db-resource-id-numeric-string 的秘密,一個用於主要使用者,另一個用於 RDSADMINSYSSYSTEM。若要尋找正確的秘密,請在主機執行下列命令:

    cat /opt/aws/rdscustomagent/config/database_metadata.json | python3 -c "import sys,json; print(json.load(sys.stdin)['dbMonitoringUserPassword'])"

    dbMonitoringUserPassword 屬性顯示 RDSADMINSYSSYSTEM 的秘密。

  6. 如果您的資料庫執行個體存在於 Oracle Data Guard 組態中,請使用下列格式搜尋秘密:

    do-not-delete-rds-custom-db-resource-id-numeric-string-dg

    此秘密會儲存 RDS_DATAGUARD 的密碼。下列範例金鑰適用於具有資料庫資源 ID db-ABCDEFG12HIJKLNMNOPQRS3TUVWX 的資料庫執行個體:

    do-not-delete-rds-custom-db-ABCDEFG12HIJKLNMNOPQRS3TUVWX-789012-dg
  7. 對於 「預先定義的 Oracle 使用者」中列出的所有資料庫使用者,請依照修改密碼中的指示更新 AWS Secrets Manager 密碼。

  8. 如果您的資料庫是獨立資料庫或 Oracle Data Guard 組態中的來源資料庫:

    1. 啟動您的 Oracle SQL 用戶端並以 SYS 登入。

    2. 針對預先定義 Oracle 使用者列出的每個資料庫使用者,以下列格式執行 SQL 陳述式:

      ALTER USER user-name IDENTIFIED BY pwd-from-secrets-manager ACCOUNT UNLOCK;

      例如,如果 RDSADMIN 儲存在 Secrets Manager 的密碼是 pwd-123,請執行下列陳述式:

      ALTER USER RDSADMIN IDENTIFIED BY pwd-123 ACCOUNT UNLOCK;
  9. 若您的資料庫執行個體執行 Oracle 資料庫 12c 版本 1 (12.1),且由 Oracle Data Guard 管理,請手動將密碼檔案 (orapw) 從主要資料庫執行個體複製到每個待命資料庫執行個體。

    若您的資料庫執行個體託管在 Amazon RDS,則密碼檔案位置為 /rdsdbdata/config/orapw。對於不在 Amazon RDS 託管的資料庫,在 Linux 和 UNIX 的預設位置是 $ORACLE_HOME/dbs/orapw$ORACLE_SID,在 Windows 的預設位置是 %ORACLE_HOME%\database\PWD%ORACLE_SID%.ora