本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Amazon RDS 可加密您的 Amazon RDS 資料庫執行個體。經過加密的待用資料包含資料庫執行個體的基礎儲存體、自動化備份、僅供讀取複本和快照。
Amazon RDS 加密資料庫執行個體會使用業界標準 AES-256 加密演算法,來加密託管 Amazon RDS 資料庫執行個體伺服器上的資料。資料加密後,Amazon RDS 將以透明的方式處理存取身分驗證和資料解密,同時將對效能的影響降至最小。您不需要修改資料庫用戶端應用程式即可使用加密。
注意
對於加密和未加密的資料庫執行個體,即使跨 AWS 區域複寫,來源和僅供讀取複本之間傳輸的資料也會加密。
加密 Amazon RDS 資源概觀
Amazon RDS 加密資料庫執行個體可以保護您的資料免於發生未經授權的基礎儲存體存取,為資料提供另一層保護。您可以使用 Amazon RDS 加密提高部署於雲端中應用程式的資料保護,以及滿足靜態加密的合規要求。針對 Amazon RDS 加密資料庫執行個體,所有日誌、備份和快照都會經過加密。如需加密可用性和限制的詳細資訊,請參閱 Amazon RDS 加密的可用性和 Amazon RDS 加密資料庫執行個體的限制。
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)。
您可以使用 AWS KMS建立客戶受管金鑰,並定義控制這些客戶受管金鑰使用的政策。 AWS KMS 支援 CloudTrail,因此您可以稽核 KMS 金鑰用量,以確認客戶受管金鑰是否適當使用。您可以使用客戶受管金鑰搭配 Amazon Aurora 和支援 AWS 的服務,例如 Amazon S3、Amazon EBS 和 Amazon Redshift。如需與 整合的服務清單 AWS KMS,請參閱AWS 服務整合
-
一旦建立了加密資料庫執行個體之後,您就無法變更該資料庫執行個體使用的 KMS 金鑰。因此,請務必在建立加密的資料庫執行個體前,先決定您的 KMS 金鑰要求。
如果您必須變更資料庫執行個體的加密金鑰,請建立執行個體的手動快照,並在複製快照時啟用加密。如需詳細資訊,請參閱 re:Post 知識文章
。 -
如果您複製加密的快照,您可以使用不同的 KMS 金鑰來加密目標快照,而不是使用用來加密來源快照的 KMS 金鑰。
-
當 Amazon RDS 加密執行個體的僅供讀取複本位於相同 AWS 區域時,必須使用與主要資料庫執行個體相同的 KMS 金鑰加密。
-
如果主要資料庫執行個體和僅供讀取複本位於不同 AWS 區域,您可以使用該 AWS 區域的 KMS 金鑰來加密僅供讀取複本。
-
您無法共用已使用共用快照 AWS 受管金鑰 之 AWS 帳戶的 加密的快照。
-
Amazon RDS 也支援使用透明資料加密 (TDE),來加密 Oracle 或 SQL Server 資料庫執行個體。TDE 可與 RDS 靜態加密搭配使用,但是同時使用 TDE 與 RDS 靜態加密可能會稍微影響資料庫的效能。您必須管理每種加密方法的不同索引鍵。如需 TDE 的詳細資訊,請參閱 Oracle 透明資料加密 或 支援SQL伺服器中的透明資料加密。
重要
當您停用 KMS 金鑰時,Amazon RDS 可能會失去資料庫執行個體的 KMS 金鑰存取權。如果您無法存取 KMS 金鑰,加密的資料庫執行個體會進入 inaccessible-encryption-credentials-recoverable
狀態。資料庫執行個體會保持此狀態七天,在此期間執行個體會停止。在此期間對資料庫執行個體發出的 API 呼叫可能不會成功。若要復原資料庫執行個體,請啟用 KMS 金鑰並重新啟動此資料庫執行個體。從 AWS Management Console AWS CLI、 或 RDS API 啟用 KMS 金鑰。使用 AWS CLI 命令 start-db-instance 或 重新啟動資料庫執行個體 AWS Management Console。
inaccessible-encryption-credentials-recoverable
狀態僅適用於可以停止的資料庫執行個體。您無法復原無法停止的執行個體,例如僅供讀取複本和具有僅供讀取複本的執行個體。如需詳細資訊,請參閱停止資料庫執行個體的限制。
如果資料庫執行個體未在七天內復原,則會進入終端機inaccessible-encryption-credentials
狀態。在此狀態下,資料庫執行個體已無法使用,您只能從備份還原資料庫執行個體。強烈建議您一律開啟加密資料庫執行個體的備份,以免遺失資料庫內的加密資料。
在建立資料庫執行個體期間,Amazon RDS 會檢查呼叫委託人是否有權存取 KMS 金鑰,並從其在整個資料庫執行個體生命週期中使用的 KMS 金鑰產生授予。撤銷呼叫主體對 KMS 金鑰的存取權不會影響執行中的資料庫。在跨帳戶案例中使用 KMS 金鑰時,例如將快照複製到另一個帳戶,KMS 金鑰需要與其他帳戶共用。如果您從快照建立資料庫執行個體,但未指定不同的 KMS 金鑰,則新執行個體會使用來源帳戶的 KMS 金鑰。在您建立資料庫執行個體之後撤銷對 金鑰的存取權不會影響執行個體。不過,停用金鑰會影響使用該金鑰加密的所有資料庫執行個體。若要防止這種情況,請在快照複製操作期間指定不同的金鑰。
如需 KMS 金鑰的詳細資訊,請參閱《AWS Key Management Service 開發人員指南》和 AWS KMS key 管理 中的 AWS KMS keys。
加密資料庫執行個體
若要加密新資料庫執行個體,請在 Amazon RDS 主控台上選擇 Enable encryption (啟用加密)。如需建立資料庫執行個體的資訊,請參閱 建立 Amazon RDS 資料庫執行個體。
如果您使用 create-db-instance AWS CLI 命令來建立加密的資料庫執行個體,請設定 --storage-encrypted
參數。若您使用 CreateDBInstance API 操作,請將 StorageEncrypted
參數設為 true。
如果您使用 AWS CLI create-db-instance
命令來建立具有客戶受管金鑰的加密資料庫執行個體,請將 --kms-key-id
參數設定為 KMS 金鑰的任何金鑰識別符。如果您使用 Amazon RDS API CreateDBInstance
作業,請將 KmsKeyId
參數設定為 KMS 金鑰的任何金鑰識別碼。若要在不同 AWS 帳戶中使用客戶受管金鑰,請指定金鑰 ARN 或別名 ARN。
決定是否為資料庫執行個體開啟加密
您可以使用 AWS Management Console AWS CLI或 RDS API 來判斷資料庫執行個體是否開啟靜態加密。
決定是否為資料庫執行個體開啟靜態加密。
登入 AWS Management Console ,並在 https://console.aws.amazon.com/rds/
:// 開啟 Amazon RDS 主控台。 -
在導覽窗格中,選擇 Databases (資料庫)。
-
選擇您要檢查的資料庫執行個體名稱,以檢視其詳細資訊。
-
選擇 Configuration (組態) 索引標籤,然後勾選 Storage (儲存) 下的 Encryption (加密) 值。
其會顯示 Enabled (已啟用) 或 Not enabled (未啟用)。
若要使用 判斷資料庫執行個體的靜態加密是否開啟 AWS CLI,請使用下列選項呼叫 describe-db-instances 命令:
-
--db-instance-identifier
– 資料庫執行個體名稱。
下列範例會使用查詢,為 mydb
資料庫執行個體傳回關於靜態加密的 TRUE
或 FALSE
。
範例
aws rds describe-db-instances --db-instance-identifier
mydb
--query "*[].{StorageEncrypted:StorageEncrypted}" --output text
若要使用 Amazon RDS API 來決定是否為資料庫執行個體開啟靜態加密,請呼叫 DescribeDBInstances 作業,搭配下列參數:
-
DBInstanceIdentifier
– 資料庫執行個體名稱。
Amazon RDS 加密的可用性
所有資料庫引擎和儲存體類型目前都可以使用 Amazon RDS 加密,但 SQL Server Express Edition 除外。SQL Server Express Edition 支援 AWS GovCloud (US) 區域中的加密。
大多數資料庫執行個體類別可以使用 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 |
傳輸中加密
- 在實體層加密
-
在離開 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 加密資料庫執行個體的限制
Amazon RDS 加密資料庫執行個體具有下列限制:
-
您只能在加密 Amazon RDS 資料庫執行個體時,而不能在建立資料庫執行個體之後為其啟用加密。
不過,因為您可以加密未加密快照的副本,所以可以有效地將加密新增至未加密的資料庫執行個體。亦即,您可以建立資料庫執行個體的快照,然後建立該快照的加密副本。接著,從加密快照中還原資料庫執行個體,因此您有原始資料庫執行個體的加密副本。如需詳細資訊,請參閱複製 Amazon 的資料庫快照 RDS。
-
您無法在加密的資料庫執行個體上關閉加密。
-
您無法建立未加密資料庫執行個體的加密快照。
-
加密資料庫執行個體的快照必須使用與資料庫執行個體相同的 KMS 金鑰進行加密。
-
未加密資料庫執行個體不可以有加密僅供讀取複本,加密資料庫執行個體也不可以有未加密僅供讀取複本。
-
當兩者位於相同的 AWS 區域時,加密的僅供讀取複本必須使用與來源資料庫執行個體相同的 KMS 金鑰進行加密。
-
您無法將未加密的備份或快照還原至已加密的資料庫執行個體。
-
若要將加密快照從一個 AWS 區域複製到另一個 AWS 區域,您必須在目的地區域中指定 KMS 金鑰。這是因為 KMS 金鑰專屬於 AWS 建立它們的區域。
在整個複製過程中來源快照仍會保持加密狀態。Amazon RDS 會在複製過程中使用信封加密來保護資料。如需信封加密的詳細資訊,請參閱 AWS Key Management Service 開發人員指南中的信封加密。
-
您無法解密加密的資料庫執行個體。但是,您可以從加密的資料庫執行個體匯出資料,然後將資料匯入未加密的資料庫執行個體。