Amazon Aurora MySQL 的安全性 - Amazon Aurora

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

Amazon Aurora MySQL 的安全性

Amazon Aurora MySQL 的安全性是以三個層級來管理:

  • 若要控制誰可以在 Aurora MySQL 資料庫叢集和資料庫執行個體上執行 Amazon RDS 管理動作,請使用 AWS Identity and Access Management (IAM)。當您連線到 AWS 使用 IAM 登入資料時,您的 AWS 帳戶必須具有 IAM 政策,以授與執行 Amazon RDS 管理操作所需的許可。如需更多資訊,請參閱Amazon Aurora 的 Identity and access management

    如果您使用 IAM 存取 Amazon RDS 主控台,請務必先使用 IAM 使用者登入資料登入。 AWS Management Console 接著前往 Amazon RDS 主控台:https://console.aws.amazon.com/rds/

  • Aurora MySQL 資料庫叢集必須在以 Amazon VPC 服務為基礎的虛擬公有雲端 (VPC) 中建立。如要控制哪些裝置和 Amazon EC2 執行個體可以開放對 VPC 中 Aurora MySQL 資料庫叢集的資料庫執行個體端點和連線埠的連線,可使用 VPC 安全群組。您可以使用 Transport Layer Security (TLS) 進行這些端點和連線埠連線。此外,貴公司的防火牆規則可控管在公司內執行的裝置是否可開啟與資料庫執行個體的連線。如需 VPC 的詳細資訊,請參閱Amazon VPC 和 ora

    支援的 VPC 租用取決於您的 Aurora MySQL 資料庫叢集所使用的資料庫執行個體類別。使用 default VPC 租用時,VPC 在共用硬體上執行。使用 dedicated VPC 租用時,VPC 會在專用硬體執行個體上執行。爆量效能資料庫執行個體類別僅支援預設的 VPC 租用。爆量效能資料庫執行個體類別包括 db.t2、db.t3 和 db.t4g 資料庫執行個體類別。其他所有 Aurora MySQL 資料庫執行個體類別都支援預設和專用的 VPC 租用。

    注意

    建議您在開發、測試伺服器或其他非生產伺服器時,僅使用 T 資料庫執行個體類別。如需詳細了解 T 執行個體類別,請參閱 使用 T 執行個體類別進行開發和測試

    如需執行個體類別的詳細資訊,請參閱Aurora 資料庫執行個體類別。如需 defaultdedicated VPC 租用的詳細資訊,請參閱《Amazon Elastic Compute Cloud 使用者指南》中的專用執行個體

  • 若要驗證 Amazon Aurora MySQL 資料庫叢集的登入資訊與許可,您可採取下列任一方式,或搭配使用多種方法:

    • 您可採用與 MySQL 獨立執行個體相同的驗證方式。

      CREATE USERRENAME USERGRANTREVOKESET PASSWORD 等命令的運作方式與現場部署資料庫所使用的命令相同,會直接修改資料庫結構描述資料表。如需詳細資訊,請參閱 MySQL 文件中的存取控制和帳戶管理

    • 您也可以使用 IAM 資料庫身分驗證。

      透過 IAM 資料庫身分驗證,您可以使用 IAM 使用者或 IAM 角色以及身分驗證字符,驗證您的資料庫叢集。身分驗證字符是不重複的值,由 Signature 第 4 版簽署程序所產生。透過使用 IAM 資料庫身份驗證,您可以使用相同的登入資料來控制對資 AWS 源和資料庫的存取。如需詳細資訊,請參閱 IAM 資料庫身分驗證

注意

如需更多詳細資訊,請參閱 Amazon Aurora 中的安全

Amazon Aurora MySQL 的主要使用者權限

在您建立 Amazon Aurora MySQL 資料庫執行個體後,主要使用者具有 主要使用者帳戶權限 中列出的預設權限:

若要為每個資料庫叢集提供管理服務,建立資料庫執行個體時,系統會一併建立 adminrdsadmin 使用者。若企圖移除、重新命名 rdsadmin 帳戶或變更其密碼或權限,皆會導致發生錯誤。

在 Aurora MySQL 第 2 版資料庫叢集中,adminrdsadmin 使用者會在建立資料庫叢集時一併建立。在 Aurora MySQL 第 3 版資料庫叢集中,會建立 adminrdsadminrds_superuser_role 使用者。

重要

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

在管理 Aurora MySQL 資料庫叢集時,標準 killkill_query 命令均限制使用。請改用 Amazon RDS 命令 rds_killrds_kill_query,以終止 Aurora MySQL 資料庫執行個體上的使用者工作階段或查詢。

注意

中國 (寧夏) 區域不支援資料庫執行個體和快照的加密。

將 TLS 與 Aurora MySQL 資料庫叢集搭配使用

如果應用程式使用與 RDS for MySQL 資料庫執行個體相同的程序和公有金鑰,Amazon Aurora MySQL 資料庫叢集支援來自這些應用程式的 Transport Layer Security (TLS) 連線。

在 Amazon RDS​ 佈建執行個體時,Amazon RDS​ 會建立 TLS 憑證,並將該憑證安裝在資料庫執行個體上。憑證由憑證授權機構簽署。TLS 憑證會以一般名稱 (CN) 納入資料庫執行個體端點,讓 TLS 憑證免於詐騙攻擊。因此,只有當您的用戶端支援主體別名 (SAN) 時,您才能透過 TLS 使用資料庫叢集端點以連線至資料庫叢集。否則,您必須使用寫入器執行個體的執行個體端點。

如需有關下載憑證的詳細資訊,請參閱使用 SSL/TLS 加密資料庫叢集叢集的連線

我們建議使用 AWS JDBC 驅動程式做為支援使用 TLS SAN 的用戶端。如需有關 AWS JDBC 驅動程式的詳細資訊以及使用它的完整說明,請參閱 Amazon Web Services (AWS) JDBC 驅動程式 GitHub 儲存庫。

需要以 TLS 連線至 Aurora MySQL 資料庫叢集

您可以要求連線至 Aurora MySQL 資料庫叢集的所有使用者,藉由使用 require_secure_transport 資料庫叢集參數,來使用 TLS。依預設,require_secure_transport 參數設為 OFF。您可以將 require_secure_transport 參數設為 ON,以要求對資料庫叢集的連線使用 TLS。

您可以更新資料庫叢集的資料庫叢集參數群組,以設定 require_secure_transport 參數值。您不需要重新啟動資料庫叢集,變更即可生效。如需參數群組的詳細資訊,請參閱使用參數群組

注意

require_secure_transport 參數適用於 Aurora MySQL 第 2 版和第 3 版。您可以在自訂資料庫叢集參數群組中設定此參數。該參數不適用於資料庫執行個體參數群組。

當資料庫叢集的 require_secure_transport 參數設為 ON 時,如果可以建立加密的連線,則資料庫用戶端即可連線到該資料庫叢集。否則,類似下列內容的錯誤訊息會傳回至用戶端:

MySQL Error 3159 (HY000): Connections using insecure transport are prohibited while --require_secure_transport=ON.

適用於 Aurora MySQL 的 TLS 版本

Aurora MySQL 支援 Transport Layer Security (TLS) 1.0、1.1、1.2 和 1.3 版。從 Aurora MySQL 3.04.0 及更新版本開始,您可以使用 TLS 1.3 通訊協定來保護您的連線。下表顯示 Aurora MySQL 版本的 TLS 支援。

Aurora MySQL version TLS 1.0 TLS 1.1 TLS 1.2 TLS 1.3 預設

Aurora MySQL 第 2 版

支援 支援

支援

不支援 所有支援的 TLS 版本

Aurora MySQL 本 3 (3.04.0 以下版本)

支援 支援 支援 不支援 所有支援的 TLS 版本

Aurora MySQL 版本 3 (3.04.0 及以上版本)

不支援 不支援 支援 支援 所有支援的 TLS 版本
重要

如果您在版本 2 和版本低於 3.04.0 的 Aurora MySQL 叢集上使用自訂參數群組,我們建議您使用 TLS 1.2,因為 TLS 1.0 和 1.1 的安全性較低。MySQL 8.0.26 和 Aurora MySQL 3.03 的社群版本及其次要版本已淘汰對 TLS 版本 1.1 和 1.0 的支援。

MySQL 8.0.28 和相容的 Aurora MySQL 3.04.0 及更新版本的社群版本不支援 TLS 1.1 和 TLS 1.0。如果您使用的是極 Aurora MySQL 3.04.0 及更新版本,請勿在自訂參數群組中將 TLS 通訊協定設定為 1.0 和 1.1。

對於 Aurora MySQL 3.04.0 及更新版本,預設設定為 TLS 1.3 和 TLS 1.2。

您可以使用 tls_version 資料庫叢集參數來指示允許的通訊協定版本。大多數用戶端工具或資料庫驅動程式都有類似的用戶端參數 某些較舊的用戶端可能不支援較新的 TLS 版本。預設情況下,資料庫叢集會嘗試使用伺服器和用戶端配置允許的最高 TLS 通訊協定版本。

tls_version 資料庫叢集參數設定為下值之一:

  • TLSv1.3

  • TLSv1.2

  • TLSv1.1

  • TLSv1

您也可以設定 tls_version 參數作為逗號分隔的字符串列表。如果您想要同時使用 TLS 1.2 和 TLS 1.0 通訊協定,tls_version 參數必須包括從最低到最高協議的所有協議。在這種情況下,tls_version 設定為:

tls_version=TLSv1,TLSv1.1,TLSv1.2

如需修改資料庫叢集參數群組中的參數之相關資訊,請參閱 修改資料庫叢集參數群組中的參數。如果您使用修 AWS CLI 改tls_version資料庫叢集參數,則ApplyMethod必須將設定為pending-reboot。當套用方法是 pending-reboot,在停止並重新啟動與參數群組相關聯的資料庫叢集之後,都會套用至參數變更。

為 Aurora MySQL 資料庫叢集的連線設定密碼套件

透過使用可設定的密碼套件,您可以更進一步控制資料庫連線的安全性。您可以指定要允許的密碼套件清單,以保護您資料庫的用戶端 TLS 連線安全。您可以使用可設定的密碼套件來控制資料庫伺服器接受的連線加密。這樣做可避免使用不安全或已作廢的密碼。

Aurora MySQL 3 版和 Aurora MySQL 2 版支援可設定的密碼套件。要指定用於加密連線的許可 TLS 1.2、TLS 1.1、TLS 1.0 密碼列表,請修改 ssl_cipher 叢集參數。在使用 AWS Management Console、 AWS CLI或 RDS API 的叢集參數群組中設定 ssl_cipher 參數。

ssl_cipher 參數設定為 TLS 版本以逗號分隔的密碼值字串。對於用戶端應用程式,您可在連線至資料庫時使用 --ssl-cipher 選項指定用於加密連線的密碼套件。如需有關連線至資料庫的詳細資訊,請參閱 連接至 Amazon Aurora MySQL 資料庫叢集

從 Aurora MySQL 3.04.0 及更新版本開始,您可以指定 TLS 1.3 加密套件。若要指定許可的 TLS 1.3 加密套件,請修改 tls_ciphersuites 參數群組中的參數。TLS 1.3 已減少可用加密套件的數量,因為命名慣例中的變更會移除金鑰交換機制和使用的憑證。將 tls_ciphersuites 設定為以逗號分隔的 TLS 1.3 密碼值字串。

下表顯示支援的密碼及 TLS 加密通訊協定,及每個密碼的有效 Aurora MySQL 引擎版本。

加密加密通訊協定支援的 Aurora MySQL 版本

DHE-RSA-AES128-SHA

TLS 1.03.01.0 版和更新版本、所有低於 2.11.0 的版本

DHE-RSA-AES128-SHA256

TLS 1.23.01.0 版和更新版本、所有低於 2.11.0 的版本

DHE-RSA-AES128-GCM-SHA256

TLS 1.23.01.0 版和更新版本、所有低於 2.11.0 的版本

DHE-RSA-AES256-SHA

TLS 1.03.03.0 版和更舊版本、所有低於 2.11.0 的版本

DHE-RSA-AES256-SHA256

TLS 1.23.01.0 版和更新版本、所有低於 2.11.0 的版本

DHE-RSA-AES256-GCM-SHA384

TLS 1.23.01.0 版和更新版本、所有低於 2.11.0 的版本

ECDHE-RSA-AES128-SHA

TLS 1.03.01.0 版和更新版本、2.09.3 版和更新版本、2.10.2 版和更新版本

ECDHE-RSA-AES128-SHA256

TLS 1.23.01.0 版和更新版本、2.09.3 版和更新版本、2.10.2 版和更新版本

ECDHE-RSA-AES128-GCM-SHA256

TLS 1.23.01.0 版和更新版本、2.09.3 版和更新版本、2.10.2 版和更新版本

ECDHE-RSA-AES256-SHA

TLS 1.03.01.0 版和更新版本、2.09.3 版和更新版本、2.10.2 版和更新版本

ECDHE-RSA-AES256-SHA384

TLS 1.23.01.0 版和更新版本、2.09.3 版和更新版本、2.10.2 版和更新版本

ECDHE-RSA-AES256-GCM-SHA384

TLS 1.23.01.0 版和更新版本、2.09.3 版和更新版本、2.10.2 版和更新版本

TLS_AES_128_GCM_SHA256

TLS 1.33.04.0 及更新版本

TLS_AES_256_GCM_SHA384

TLS 1.33.04.0 及更新版本

TLS_CHACHA20_POLY1305_SHA256

TLS 1.33.04.0 及更新版本
注意

只有 2.11.0 之前的 Aurora MySQL 版本才支援 DHE-RSA 密碼。2.11.0 版和更新版本僅支援支援 ECDHE 密碼。

如需修改資料庫叢集參數群組中的參數之相關資訊,請參閱 修改資料庫叢集參數群組中的參數。若您使用 CLI 修改 ssl_cipher 資料庫叢集參數,請務必將 ApplyMethod 設定為 pending-reboot。當套用方法是 pending-reboot,在停止並重新啟動與參數群組相關聯的資料庫叢集之後,都會套用至參數變更。

您也可以使用 describe-engine-default-cluster-parameters CLI 指令來判斷特定參數群組系列目前支援哪些加密套件。下列範例顯示如何取得適用於 Aurora MySQL 第 2 版的 ssl_cipher 叢集參數允許值。

aws rds describe-engine-default-cluster-parameters --db-parameter-group-family aurora-mysql5.7 ...some output truncated... { "ParameterName": "ssl_cipher", "ParameterValue": "DHE-RSA-AES128-SHA,DHE-RSA-AES128-SHA256,DHE-RSA-AES128-GCM-SHA256,DHE-RSA-AES256-SHA,DHE-RSA-AES256-SHA256,DHE-RSA-AES256-GCM-SHA384,ECDHE-RSA-AES128-SHA,ECDHE-RSA-AES128-SHA256,ECDHE-RSA-AES128-GCM-SHA256,ECDHE-RSA-AES256-SHA,ECDHE-RSA-AES256-SHA384,ECDHE-RSA-AES256-GCM-SHA384", "Description": "The list of permissible ciphers for connection encryption.", "Source": "system", "ApplyType": "static", "DataType": "list", "AllowedValues": "DHE-RSA-AES128-SHA,DHE-RSA-AES128-SHA256,DHE-RSA-AES128-GCM-SHA256,DHE-RSA-AES256-SHA,DHE-RSA-AES256-SHA256,DHE-RSA-AES256-GCM-SHA384,ECDHE-RSA-AES128-SHA,ECDHE-RSA-AES128-SHA256,ECDHE-RSA-AES128-GCM-SHA256,ECDHE-RSA-AES256-SHA,ECDHE-RSA-AES256-SHA384,ECDHE-RSA-AES256-GCM-SHA384", "IsModifiable": true, "SupportedEngineModes": [ "provisioned" ] }, ...some output truncated...

如需有關密碼的詳細資訊,請參閱 MySQL 文件中的 ssl_cipher 變數。如需有關密碼套件格式的詳細資訊,請在 OpenSSL 網站上參閱 openssl-ciphers 列表格式openssl-ciphers 字串格式文件。

加密 Aurora MySQL 資料庫叢集的連線

如要使用預設的 mysql 用戶端來加密連線,請使用 --ssl-ca 參數公有金鑰,以啟動 mysql 用戶端,例如:

MySQL 5.7 和 8.0 適用:

mysql -h myinstance.123456789012.rds-us-east-1.amazonaws.com --ssl-ca=full_path_to_CA_certificate --ssl-mode=VERIFY_IDENTITY

MySQL 5.6 適用:

mysql -h myinstance.123456789012.rds-us-east-1.amazonaws.com --ssl-ca=full_path_to_CA_certificate --ssl-verify-server-cert

用憑證授權單位 (CA) 憑證的完整路徑取代 full_path_to_CA_certificate。如需有關下載憑證的資訊,請參閱 使用 SSL/TLS 加密資料庫叢集叢集的連線

您可以要求特定使用者帳戶使用 TLS 連線。例如,您可以根據 MySQL 版本,使用下列任一陳述式,要求使用者帳戶 encrypted_user 使用 TLS 連線。

MySQL 5.7 和 8.0 適用:

ALTER USER 'encrypted_user'@'%' REQUIRE SSL;

MySQL 5.6 適用:

GRANT USAGE ON *.* TO 'encrypted_user'@'%' REQUIRE SSL;

使用 RDS Proxy 時,您會連線到代理端點,而不是一般叢集端點。您可以使用直接連線到 Aurora 資料庫叢集一樣的方式,將 SSL/TLS 做為連線至代理的必要或選用條件。如需有關使用 RDS Proxy 的資訊,請參閱 使用 Amazon RDS Proxy for Aurora

注意

如需有關對 MySQL 使用 TLS 連線的詳細資訊,請參閱 MySQL 說明文件