如要瞭解磁碟加密,請參閱「關於磁碟加密」。
如要瞭解如何使用客戶自行管理的加密金鑰 (CMEK) 加密磁碟,請參閱「使用 Cloud KMS 金鑰保護資源」。
使用 CSEK 代表您提供自己的加密金鑰,而 Compute Engine 會使用您的金鑰來保護用於加密和解密資料的 Google-owned and Google-managed encryption keys 。只有能提供正確金鑰的使用者,才能使用受客戶提供加密金鑰 (CSEK) 保護的資源。
Google 不會將您的金鑰儲存在伺服器中,除非您提供金鑰,否則 Google 無法存取受保護的資料。這也代表假如您忘記或遺失金鑰,Google 無法還原金鑰或還原使用已遺失金鑰所加密的任何資料。
刪除永久磁碟區時,Google 會捨棄密碼編譯金鑰,讓資料無法復原。這項程序無法復原。
事前準備
- 瞭解磁碟、映像檔和磁碟快照。
-
如果尚未設定驗證,請先完成設定。
驗證可確認您的身分,以便存取 Google Cloud 服務和 API。如要從本機開發環境執行程式碼或範例,請選取下列其中一個選項,向 Compute Engine 進行驗證:
請根據您打算如何使用本頁範例,選取對應的分頁標籤:
控制台
使用 Google Cloud 控制台存取 Google Cloud 服務和 API 時,不需要設定驗證。
gcloud
-
安裝 Google Cloud CLI。 安裝完成後,請執行下列指令,初始化 Google Cloud CLI:
gcloud init若您採用的是外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。
-
- 設定預設區域和可用區。
-
安裝 Google Cloud CLI。
-
如果您使用外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。
-
如果您使用本機殼層,請為使用者帳戶建立本機驗證憑證:
gcloud auth application-default login
如果您使用 Cloud Shell,則不需要執行這項操作。
如果系統傳回驗證錯誤,且您使用外部識別資訊提供者 (IdP),請確認您已 使用聯合身分登入 gcloud CLI。
Python
如要在本機開發環境中使用本頁的 Python 範例,請安裝並初始化 gcloud CLI,然後使用使用者憑證設定應用程式預設憑證。
詳情請參閱「 設定本機開發環境的驗證機制」。
REST
如要在本機開發環境中使用本頁的 REST API 範例,請使用您提供給 gcloud CLI 的憑證。
安裝 Google Cloud CLI。
如果您使用外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。
詳情請參閱 Google Cloud 驗證說明文件中的「使用 REST 進行驗證」。
所需角色和權限
如要取得建立 CSEK 加密快照、映像檔和磁碟所需的權限,請要求管理員授予您專案的下列 IAM 角色:
- Compute 執行個體管理員 (v1) (
roles/compute.instanceAdmin.v1) -
如要連線至已附加服務帳戶的 VM:服務帳戶使用者 (v1) (
roles/iam.serviceAccountUser)
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
這些預先定義的角色具備建立 CSEK 加密快照、映像檔和磁碟所需的權限。如要查看確切的必要權限,請展開「Required permissions」(必要權限) 部分:
所需權限
您必須具備下列權限,才能建立 CSEK 加密快照、映像檔和磁碟:
-
如要建立磁碟快照,請按照下列步驟操作:
-
專案有
compute.snapshots.create -
compute.disks.createSnapshot磁碟上
-
專案有
-
如要建立映像檔,請按照下列步驟操作:
-
專案的
compute.images.create -
compute.disks.useReadOnly磁碟上
-
專案的
-
如要從標準快照建立磁碟,請按照下列步驟操作:
-
compute.disks.create新磁碟的目的地專案 -
compute.snapshots.useReadOnly快照
-
-
如要依據映像檔建立磁碟,請按照下列步驟操作:
-
compute.disks.create新磁碟的目的地專案 -
compute.images.useReadOnly圖片
-
-
如要根據即時快照建立磁碟,請按照下列步驟操作:
-
新磁碟目的地專案的
compute.disks.create -
來源即時快照上的
compute.instantSnapshots.useReadOnly
-
新磁碟目的地專案的
限制
使用 CSEK 時,請注意下列限制:
一般限制
客戶提供的加密金鑰是否可用,取決於帳單帳戶的位置,而非資源的位置。
位於下列國家/地區的帳單帳戶無法使用客戶提供的加密金鑰:
- 巴西
- 印度
技術限制
您只能使用自己的金鑰加密新的永久磁碟。無法加密現有的永久磁碟。
您無法在本機 SSD 磁碟使用自己的金鑰,因為本機 SSD 磁碟使用 Google-owned and Google-managed encryption keys。VM 終止時,金鑰會遭到刪除。
Compute Engine 不會將加密金鑰儲存在執行個體範本中,因此您必須將自己的金鑰儲存在 KMS 中,才能加密代管執行個體群組中的磁碟。
您無法暫停已連結受 CSEK 保護磁碟的執行個體。
規格
本節說明加密規格和 CSEK 格式。
加密
Compute Engine 使用您的加密金鑰來保護以 AES-256 加密的 Google 加密金鑰。
金鑰格式規定
個人金鑰的產生與管理由您負責。您必須向 Compute Engine 提供以 RFC 4648 標準 Base64 編碼的 256 位元字串金鑰。
以下是使用「Hello from Google Cloud Platform」字串產生的 Base64 編碼金鑰範例
SGVsbG8gZnJvbSBHb29nbGUgQ2xvdWQgUGxhdGZvcm0=
可使用下列指令碼產生:
read -sp "String:" ; \
[[ ${#REPLY} == 32 ]] && \
echo "$(echo -n "$REPLY" | base64)" || \
(>&2 echo -e "\nERROR:Wrong Size"; false)
RSA 金鑰包裝
除了使用 Base64 編碼對金鑰進行編碼之外,您還可以選用 Google 提供的 RSA 公用金鑰憑證來包裝金鑰。使用 Base64 編碼對金鑰進行編碼,然後在要求中使用該金鑰。
RSA 包裝是一個使用公開金鑰加密資料的過程。 在使用公開金鑰加密資料之後,這些資料只能由相應的私密金鑰解密。在這種情況下,只有 Google Cloud 服務知道私密金鑰。使用 RSA 憑證包裝金鑰,可確保只有 Google Cloud 服務能解開金鑰,並使用金鑰保護資料。
詳情請參閱 RSA 加密一文。
如要為 Compute Engine 建立 RSA 封裝金鑰,請按照下列步驟操作:
- 使用憑證中提供的公開金鑰包裝金鑰,該憑證由 Compute Engine 管理。請確認您是使用 OAEP 填充演算法包裝金鑰,而不是 PKCS #1 v1.5 填充演算法。
- 使用標準的 Base64 編碼方式來為 RSA 包裝金鑰編碼。
從以下位置下載由 Compute Engine 維護的公用金鑰憑證:
https://cloud-certs.storage.googleapis.com/google-cloud-csek-ingress.pem
產生和使用 RSA 包裝金鑰的方法有很多種,請使用您熟悉的方法。以下是使用 RSA 包裝金鑰的範例,您可參酌使用:
範例 1
下列指令會使用 openssl 指令列公用程式,以 RSA 包裝及編碼金鑰。
選用:產生 256 位元 (32 位元組) 的隨機金鑰。如果您已經有要使用的金鑰,則可略過此步驟。生成金鑰的方式有很多種。例如:
$ head -c 32 /dev/urandom | LC_CTYPE=C tr '\n' = > mykey.txt下載公用金鑰憑證:
$ curl -s -O -L https://cloud-certs.storage.googleapis.com/google-cloud-csek-ingress.pem從憑證中擷取公開金鑰:
$ openssl x509 -pubkey -noout -in google-cloud-csek-ingress.pem > pubkey.pem以 RSA 包裝金鑰,務必要將
mykey.txt換成您自己的金鑰檔案。$ openssl rsautl -oaep -encrypt -pubin -inkey pubkey.pem -in mykey.txt -out rsawrappedkey.txt以 Base64 編碼方式來為 RSA 包裝金鑰進行編碼。
$ openssl enc -base64 -in rsawrappedkey.txt | tr -d '\n' | sed -e '$a\' > rsawrapencodedkey.txt
示例 2
以下是 Python 指令碼範例,可產生 256 位元 (32 位元組) 的隨機字串,並使用 cryptography 程式庫建立以 Base64 編碼的 RSA 包裝金鑰:
您的金鑰現在已準備就緒!
使用 RSA 包裝金鑰
使用 Google Cloud CLI 時,您可以相同方式提供一般金鑰和 RSA 包裝金鑰。
在 API 中,如果您想要改用 RSA 包裝金鑰,請使用 sha256 屬性,而非 rawKey。
使用指令列工具,透過 CSEK 加密資源
加密金鑰可透過 Google Cloud CLI 使用。
金鑰檔案
當您使用 gcloud compute 指令列工具設定金鑰時,您會使用包含編碼金鑰 (以 JSON 清單格式) 的金鑰檔案提供編碼金鑰。金鑰檔案可包含多個金鑰,方便您集中管理多個金鑰。您也可以建立單一金鑰檔案來分別處理每個金鑰。金鑰檔案只能搭配 gcloud CLI 使用。
使用 REST 時,您必須直接在要求中提供金鑰。
金鑰檔案的每個項目都提供以下內容:
- 金鑰保護的資源完整 URI
- 對應的金鑰
- 金鑰類型,
raw或是rsa-encrypted
當您在要求中使用金鑰檔案時,該工具會查找相符的資源並使用相應的金鑰。如果找不到相符的資源,要求就會失敗。
金鑰檔案格式
以下是金鑰檔案範例:
[
{
"uri": "https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/disks/example-disk",
"key": "acXTX3rxrKAFTF0tYVLvydU1riRZTvUNC4g5I11NY+c=",
"key-type": "raw"
},
{
"uri": "https://www.googleapis.com/compute/v1/projects/myproject/global/snapshots/my-private-snapshot",
"key": "ieCx/NcW06PcT7Ep1X6LUTc/hLvUDYyzSZPPVCVPTVEohpeHASqC8uw5TzyO9U+Fka9JFHz0mBibXUInrC/jEk014kCK/NPjYgEMOyssZ4ZINPKxlUh2zn1bV+MCaTICrdmuSBTWlUUiFoDD6PYznLwh8ZNdaheCeZ8ewEXgFQ8V+sDroLaN3Xs3MDTXQEMMoNUXMCZEIpg9Vtp9x2oeQ5lAbtt7bYAAHf5l+gJWw3sUfs0/Glw5fpdjT8Uggrr+RMZezGrltJEF293rvTIjWOEB3z5OHyHwQkvdrPDFcTqsLfh+8Hr8g+mf+7zVPEC8nEbqpdl3GPv3A7AwpFp7MA==",
"key-type": "rsa-encrypted"
}
]
管理金鑰檔案的最佳做法
如果您使用金鑰檔案,請將檔案的存取權限設定為僅限有需要的使用者。請確保為這些檔案設定適當的權限,並考慮使用其他工具為這些檔案加密:
- 在 Windows 上,建議使用 BitLocker 或加密檔案系統 (EFS)。
- 在 macOS 上,請考慮使用 FileVault 2。
- 在 Linux 上,建議使用 Linux Unified Key Setup (LUKS) 或 eCryptfs。
建立空白的 CSEK 加密永久磁碟區
在建立 VM 或磁碟時提供金鑰,即可加密新的永久磁碟。
控制台
前往「Disks」(磁碟) 頁面。
按一下 [Create disk] (建立磁碟),然後輸入新磁碟的屬性。
在「加密」下方,選取「客戶提供的金鑰」。
在「來源磁碟加密金鑰」欄位中提供磁碟的加密金鑰,如果金鑰已使用公開 RSA 金鑰包裝,請選取「包裝金鑰」。
gcloud
在 gcloud compute 工具中,於建立 VM 時使用 --csek-key-file 旗標加密磁碟。如果您使用的是 RSA 包裝的金鑰,請使用 gcloud beta 元件:
gcloud (beta) compute instances create example-instance --csek-key-file example-file.json
如何加密獨立式永久磁碟:
gcloud (beta) compute disks create example-disk --csek-key-file example-file.json
REST
您可以使用 diskEncryptionKey 屬性,並向 v1 API 要求原始 (非 RSA 包裝) 金鑰,或向 Beta 版 API 要求 RSA 包裝金鑰,藉此加密磁碟。在要求中提供下列屬性的其中之一:
rawKey:如果金鑰採用 Base64 編碼rsaEncryptedKey:如果金鑰以 RSA 包裝並採用 Base64 編碼
舉例來說,如要在建立 VM 時使用 RSA 包裝金鑰加密新磁碟,請執行下列操作:
POST https://compute.googleapis.com/compute/beta/projects/myproject/zones/us-central1-a/instances
{
"machineType": "zones/us-central1-a/machineTypes/e2-standard-2",
"disks": [
{
"type": "PERSISTENT",
"diskEncryptionKey": {
"rsaEncryptedKey": "ieCx/NcW06PcT7Ep1X6LUTc/hLvUDYyzSZPPVCVPTVEohpeHASqC8uw5TzyO9U+Fka9JFHz0mBibXUInrC/jEk014kCK/NPjYgEMOyssZ4ZINPKxlUh2zn1bV+MCaTICrdmuSBTWlUUiFoDD6PYznLwh8ZNdaheCeZ8ewEXgFQ8V+sDroLaN3Xs3MDTXQEMMoNUXMCZEIpg9Vtp9x2oeQ5lAbtt7bYAAHf5l+gJWw3sUfs0/Glw5fpdjT8Uggrr+RMZezGrltJEF293rvTIjWOEB3z5OHyHwQkvdrPDFcTqsLfh+8Hr8g+mf+7zVPEC8nEbqpdl3GPv3A7AwpFp7MA=="
},
"initializeParams": {
"sourceImage": "projects/debian-cloud/global/images/debian-9-stretch-v20170619"
},
"boot": true
}
],
...
}
同樣地,您也可以使用 REST 建立新的獨立永久磁碟,並使用自己的金鑰加密:
POST https://compute.googleapis.com/compute/beta/projects/myproject/zones/
us-central1-a/disks?sourceImage=https%3A%2F%2Fwww.googleapis.com%2Fcompute%2F
alpha%2Fprojects%2Fdebian-cloud%2Fglobal%2Fimages%2Fdebian-9-stretch-v20170619
{
"name": "new-encrypted-disk-key",
"diskEncryptionKey": {
"rsaEncryptedKey": "ieCx/NcW06PcT7Ep1X6LUTc/hLvUDYyzSZPPVCVPTVEohpeHASqC8uw5TzyO9U+Fka9JFHz0mBibXUInrC/jEk014kCK/NPjYgEMOyssZ4ZINPKxlUh2zn1bV+MCaTICrdmuSBTWlUUiFoDD6PYznLwh8ZNdaheCeZ8ewEXgFQ8V+sDroLaN3Xs3MDTXQEMMoNUXMCZEIpg9Vtp9x2oeQ5lAbtt7bYAAHf5l+gJWw3sUfs0/Glw5fpdjT8Uggrr+RMZezGrltJEF293rvTIjWOEB3z5OHyHwQkvdrPDFcTqsLfh+8Hr8g+mf+7zVPEC8nEbqpdl3GPv3A7AwpFp7MA=="
},
"type": "zones/us-central1-a/diskTypes/pd-standard"
}
透過 CSEK 加密磁碟建立快照
如果您從採用客戶提供的加密金鑰的磁碟建立快照,必須提供用來加密磁碟的加密金鑰,以及用來加密新快照的金鑰。您也必須使用 CSEK 加密快照。
如要將採用客戶提供的加密金鑰加密的磁碟或快照轉換為使用 Google-owned and Google-managed encryption keys,請建立新的磁碟或快照。
以 CSEK 加密的磁碟快照一律是完整快照。這與使用客戶自行管理的加密金鑰 (CMEK) 加密的磁碟快照不同,後者是增量快照。快照的價格取決於快照總大小,因此完整快照的費用可能高於增量快照。
建立快照前,請先詳閱磁碟快照的最佳做法。
控制台
前往「快照」頁面。
按一下 [Create snapshot] (建立快照)。
在「Source disk」(來源磁碟) 底下,選擇要建立快照的加密磁碟。
在「來源磁碟加密金鑰」欄位中提供磁碟的加密金鑰,如果金鑰已使用公開 RSA 金鑰包裝,請選取「包裝金鑰」。
如要加密新快照,請在「Encryption」部分下方提供額外的加密金鑰,選取加密方法。
REST
如要提出要求,請提供 sourceDiskEncryptionKey 屬性,以便存取來源永久磁碟。您必須使用 snapshotEncryptionKey 屬性加密新快照。
向 v1 API 提出原始 (非 RSA 封裝) 金鑰要求,或向 Beta 版 API 提出 RSA 封裝金鑰要求。
POST https://compute.googleapis.com/compute/beta/projects/myproject/zones/us-central1-a/disks/example-disk/createSnapshot
{
"snapshotEncryptionKey": {
"rsaEncryptedKey": "ieCx/NcW06PcT7Ep1X6LUTc/hLvUDYyzSZPPVCVPTVEohpeHASqC8uw5TzyO9U+Fka9JFHz0mBibXUInrC/jEk014kCK/NPjYgEMOyssZ4ZINPKxlUh2zn1bV+MCaTICrdmuSBTWlUUiFoDD6PYznLwh8ZNdaheCeZ8ewEXgFQ8V+sDroLaN3Xs3MDTXQEMMoNUXMCZEIpg9Vtp9x2oeQ5lAbtt7bYAAHf5l+gJWw3sUfs0/Glw5fpdjT8Uggrr+RMZezGrltJEF293rvTIjWOEB3z5OHyHwQkvdrPDFcTqsLfh+8Hr8g+mf+7zVPEC8nEbqpdl3GPv3A7AwpFp7MA=="
},
"sourceDiskEncryptionKey": {
"rsaEncryptedKey": "ieCx/NcW06PcT7Ep1X6LUTc/hLvUDYyzSZPPVCVPTVEohpeHASqC8uw5TzyO9U+Fka9JFHz0mBibXUInrC/jEk014kCK/NPjYgEMOyssZ4ZINPKxlUh2zn1bV+MCaTICrdmuSBTWlUUiFoDD6PYznLwh8ZNdaheCeZ8ewEXgFQ8V+sDroLaN3Xs3MDTXQEMMoNUXMCZEIpg9Vtp9x2oeQ5lAbtt7bYAAHf5l+gJWw3sUfs0/Glw5fpdjT8Uggrr+RMZezGrltJEF293rvTIjWOEB3z5OHyHwQkvdrPDFcTqsLfh+8Hr8g+mf+7zVPEC8nEbqpdl3GPv3A7AwpFp7MA=="
},
"name": "snapshot-encrypted-disk"
}
sourceDiskEncryptionKey 屬性必須與用來為永久磁碟加密的金鑰相符,否則要求會失敗。
您可以使用 snapshotEncryptionKey 提供金鑰來加密快照,這樣一來,如果快照用於建立新的永久磁碟,就必須提供相符的金鑰。這個鍵必須遵循上述金鑰格式。您也可以選擇將這個屬性維持為未定義,且快照無需金鑰即可用於建立新的永久磁碟。
從以 CSEK 加密的磁碟或自訂映像檔建立新映像檔
透過已加密的永久磁碟或複製已加密的映像檔,您可以建立自訂映像檔。您無法使用主控台來複製映像檔。使用 Google Cloud CLI 或 REST 複製映像檔。
控制台
前往「Images」(映像檔) 頁面。
點選「建立映像檔」。
在「Source disk」(來源磁碟) 底下,選擇要為其建立映像檔的加密磁碟。
在「Encryption」(加密) 下方,選取加密金鑰管理解決方案。
如果金鑰已使用公開 RSA 金鑰包裝,請選取「Wrapped key」。
gcloud
按照操作說明建立映像檔,並新增 --csek-key-file 旗標 (其中包含已加密來源物件的加密金鑰檔案路徑)。如果您使用的是 RSA 包裝金鑰,請使用 gcloud beta 元件:
gcloud (beta) compute images create .... --csek-key-file example-file.json
如要使用金鑰加密新映像檔,請將金鑰新增至金鑰檔案:
[
{
"uri": "https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/disks/source-disk",
"key": "acX3RqzxrKAFTF0tYVLvydU1riRZTvUNC4g5I11NY-c=",
"key-type": "raw"
},
{
"uri": "https://www.googleapis.com/compute/v1/projects/myproject/global/snapshots/the-new-image",
"key": "TF0t-cSfl7CT7xRF1LTbAgi7U6XXUNC4zU_dNgx0nQc=",
"key-type": "raw"
}
]
REST
您的 API 建立要求必須包含來源物件的加密金鑰屬性。例如,根據來源物件類型,納入下列屬性的其中之一:
- 永久磁碟:
sourceDiskEncryptionKey - 映像檔:
sourceImageEncryptionKey
另外根據金鑰類型,納入 rawKey 或 rsaEncryptedKey 屬性。提出要求至 v1 API 來使用原始 (非 RSA 包裝) 金鑰,或是 Beta API 來使用 RSA 包裝金鑰。以下範例會將使用 RSA 包裝金鑰的加密永久磁碟轉換為使用相同加密金鑰的映像檔。
POST https://compute.googleapis.com/compute/beta/projects/myproject/global/images
{
"name": "image-encrypted-disk",
"sourceDiskEncryptionKey": {
"rsaEncryptedKey": "ieCx/NcW06PcT7Ep1X6LUTc/hLvUDYyzSZPPVCVPTVEohpeHASqC8uw5TzyO9U+Fka9JFHz0mBibXUInrC/jEk014kCK/NPjYgEMOyssZ4ZINPKxlUh2zn1bV+MCaTICrdmuSBTWlUUiFoDD6PYznLwh8ZNdaheCeZ8ewEXgFQ8V+sDroLaN3Xs3MDTXQEMMoNUXMCZEIpg9Vtp9x2oeQ5lAbtt7bYAAHf5l+gJWw3sUfs0/Glw5fpdjT8Uggrr+RMZezGrltJEF293rvTIjWOEB3z5OHyHwQkvdrPDFcTqsLfh+8Hr8g+mf+7zVPEC8nEbqpdl3GPv3A7AwpFp7MA=="
}
"imageEncryptionKey": {
"rsaEncryptedKey": "ieCx/NcW06PcT7Ep1X6LUTc/hLvUDYyzSZPPVCVPTVEohpeHASqC8uw5TzyO9U+Fka9JFHz0mBibXUInrC/jEk014kCK/NPjYgEMOyssZ4ZINPKxlUh2zn1bV+MCaTICrdmuSBTWlUUiFoDD6PYznLwh8ZNdaheCeZ8ewEXgFQ8V+sDroLaN3Xs3MDTXQEMMoNUXMCZEIpg9Vtp9x2oeQ5lAbtt7bYAAHf5l+gJWw3sUfs0/Glw5fpdjT8Uggrr+RMZezGrltJEF293rvTIjWOEB3z5OHyHwQkvdrPDFcTqsLfh+8Hr8g+mf+7zVPEC8nEbqpdl3GPv3A7AwpFp7MA=="
},
"sourceDisk": "projects/myproject/zones/us-central1-a/disks/source-disks"
}
選用的 imageEncryptionKey 屬性可讓您提供為映像檔加密的金鑰,因此當您在使用映像檔建立新的永久磁碟時,必須提供相符的金鑰。這個金鑰必須採用先前所述的金鑰格式。您也可以選擇將這個屬性維持為未定義,且映像檔無需金鑰即可用於建立新的永久磁碟。
使用 CSEK 加密匯入的圖片
手動將自訂映像檔匯入至 Compute Engine 時,您可以為新的映像檔加密。匯入映像檔前,請務必建立並壓縮磁碟映像檔,然後將壓縮檔上傳至 Cloud Storage。
請匯入您要加密的自訂 Compute Engine 映像檔。 指定壓縮檔案的 URI 並且另外指定您加密金鑰檔案的路徑。
控制台
前往「Images」(映像檔) 頁面。
點選「建立映像檔」。
在「來源」下方,選擇「Cloud Storage 檔案」。
在「Cloud Storage file」(Cloud Storage 檔案) 下方,輸入 Cloud Storage URI。
在「Encryption」(加密) 下方,選擇「Customer-supplied key」(客戶提供的金鑰),並在「Source disk encryption key」(來源磁碟加密金鑰) 欄位中提供加密金鑰,以加密映像檔。
gcloud
請使用 compute images create 指令來建立新的映像檔,並指定具有加密金鑰檔案的 --csek-key-file 旗標。如果您使用的是 RSA 包裝的金鑰,請使用 gcloud beta 元件:
gcloud (beta) compute images create [IMAGE_NAME] \
--source-uri gs://[BUCKET_NAME]/[COMPRESSED_FILE] \
--csek-key-file [KEY_FILE]
更改下列內容:
[IMAGE_NAME]:新自訂映像檔的名稱。[BUCKET_NAME]:儲存壓縮圖片檔案的 Cloud Storage bucket 名稱。[COMPRESSED_FILE]:壓縮圖片檔案的名稱。[KEY_FILE]:本機工作站上加密金鑰檔案的路徑。
REST
如要加密從 RAW 檔案建立的新映像檔,請將新 imageEncryptionKey 屬性加到映像檔建立要求中,後面加上 rawKey 或是 rsaEncryptedKey。提出要求至 v1 API 來使用原始 (非 RSA 包裝) 金鑰,或是 Beta API 來使用 RSA 包裝金鑰。
POST https://compute.googleapis.com/compute/beta/projects/myproject/global/images
{
"rawDisk": {
"source": "http://storage.googleapis.com/example-image/example-image.tar.gz"
},
"name": "new-encrypted-image",
"sourceType": "RAW",
"imageEncryptionKey": {
"rsaEncryptedKey": "ieCx/NcW06PcT7Ep1X6LUTc/hLvUDYyzSZPPVCVPTVEohpeHASqC8uw5TzyO9U+Fka9JFHz0mBibXUInrC/jEk014kCK/NPjYgEMOyssZ4ZINPKxlUh2zn1bV+MCaTICrdmuSBTWlUUiFoDD6PYznLwh8ZNdaheCeZ8ewEXgFQ8V+sDroLaN3Xs3MDTXQEMMoNUXMCZEIpg9Vtp9x2oeQ5lAbtt7bYAAHf5l+gJWw3sUfs0/Glw5fpdjT8Uggrr+RMZezGrltJEF293rvTIjWOEB3z5OHyHwQkvdrPDFcTqsLfh+8Hr8g+mf+7zVPEC8nEbqpdl3GPv3A7AwpFp7MA=="
}
}
從採用客戶提供的加密金鑰加密的資源建立永久磁碟
您可以透過下列 CSEK 加密資源建立永久磁碟:
- 即時快照
- 標準快照
- 圖片
根據採用客戶提供的加密金鑰的快照建立磁碟
控制台
前往「Disks」(磁碟) 頁面。
按一下 [Create Disk] (建立磁碟)。
在「Source type」(來源類型) 下方,選取快照類型:
- 如要建立標準快照,請選取「快照」。
- 如要建立即時快照,請選取「Instant snapshot」(即時快照)。
- 如要建立標準快照,請選取「封存快照」。
提供來源快照的加密金鑰。在「Source snapshot encryption key」(來源快照加密金鑰) 欄位中,輸入用於加密來源快照的 CSEK。
如果金鑰已使用公開 RSA 金鑰包裝,請選取「Wrapped key」。
選用:如果來源快照是標準或封存快照,您可以選擇為新磁碟設定加密。
- 展開「Advanced configurations」(進階設定) 專區。
- 在「加密」下方,選取加密金鑰管理解決方案。
- 如要使用 Google-owned and Google-managed encryption key,請選取「Google-managed encryption key」。
- 如要使用 Cloud Key Management Service 管理的金鑰,請選取「Cloud KMS 金鑰」。
選用:在「資料保護」部分設定磁碟備份。
如要建立磁碟,請按一下「Create」(建立)。
gcloud
使用 gcloud compute disks create 指令。使用 --csek-key-file 標記提供快照的加密金鑰。
如果您使用的是 RSA 封裝金鑰,請使用 gcloud beta 版本的指令。
- 透過採用客戶提供的加密金鑰加密的標準或封存快照建立磁碟。
gcloud compute disks create ... --source-snapshot example-snapshot \ --csek-key-file example-file.json
- 透過採用客戶提供加密金鑰的即時快照建立磁碟:
gcloud compute disks create ... --source-instant-snapshot example-instant-snapshot \ --csek-key-file example-file.json
REST
建立對 disks.insert 方法的 POST 要求。
如要使用加密快照,請在要求中提供 sourceSnapshotEncryptionKey,然後加上 rawKey 或 rsaEncryptedKey。
如果您使用 RSA 包裝金鑰,請使用 disks.insert 方法的 Beta 版。
如要從使用 RSA 包裝金鑰的標準或封存快照建立新磁碟,請按照下列步驟操作:
POST https://compute.googleapis.com/compute/beta/projects/myproject/zones/us-central1-a/disks { "name": "disk-from-encrypted-snapshot", "sourceSnapshot": "global/snapshots/encrypted-snapshot", "sourceSnapshotEncryptionKey": { "rsaEncryptedKey": "ieCx/NcW06PcT7Ep1X6LUTc/hLvUDYyzSZPPVCVPTVEohpeHASqC8uw5TzyO9U+Fka9JFHz0mBibXUInrC/jEk014kCK/NPjYgEMOyssZ4ZINPKxlUh2zn1bV+MCaTICrdmuSBTWlUUiFoDD6PYznLwh8ZNdaheCeZ8ewEXgFQ8V+sDroLaN3Xs3MDTXQEMMoNUXMCZEIpg9Vtp9x2oeQ5lAbtt7bYAAHf5l+gJWw3sUfs0/Glw5fpdjT8Uggrr+RMZezGrltJEF293rvTIjWOEB3z5OHyHwQkvdrPDFcTqsLfh+8Hr8g+mf+7zVPEC8nEbqpdl3GPv3A7AwpFp7MA==" } }如要透過使用 RSA 包裝金鑰的即時快照建立磁碟,請按照下列步驟操作:
POST https://compute.googleapis.com/compute/beta/projects/PROJECT/zones/SOURCE_ZONE/disks/insert { "name": "NEW_DISK_NAME", "sourceInstantSnapshot": "projects/PROJECT/zones/SOURCE_ZONE/instantSnapshots/INSTANT_SNAPSHOT_NAME", "diskEncryptionKey": { "rsaEncryptedKey": "RSA_ENCRYPTED_KEY" } }
從以 CSEK 加密的映像檔建立磁碟
控制台
前往「Disks」(磁碟) 頁面。
按一下 [Create Disk] (建立磁碟)。
選取「Source type」(來源類型) 底下的 [Image] (映像檔)。
在「加密」下方,選取加密金鑰管理解決方案。
如果金鑰已使用公開 RSA 金鑰包裝,請選取「Wrapped key」。
gcloud
在 gcloud compute 工具中,請使用 --csek-key-file 旗標在磁碟建立期間提供映像檔的加密金鑰。如果您使用的是 RSA 包裝的金鑰,請使用 gcloud beta 元件:
gcloud (beta) compute disks create ... --image example-image --csek-key-file example-file.json
REST
如要使用加密映像檔,請提供 sourceImageEncryptionKey,後面加上 rawKey 或 rsaEncryptedKey。提出要求至 v1 API 來使用原始 (非 RSA 包裝) 金鑰,或是 Beta API 來使用 RSA 包裝金鑰。
POST https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/disks
{
"name": "disk-from-encrypted-image",
"sourceImageEncryptionKey": {
"rsaEncryptedKey": "ieCx/NcW06PcT7Ep1X6LUTc/hLvUDYyzSZPPVCVPTVEohpeHASqC8uw5TzyO9U+Fka9JFHz0mBibXUInrC/jEk014kCK/NPjYgEMOyssZ4ZINPKxlUh2zn1bV+MCaTICrdmuSBTWlUUiFoDD6PYznLwh8ZNdaheCeZ8ewEXgFQ8V+sDroLaN3Xs3MDTXQEMMoNUXMCZEIpg9Vtp9x2oeQ5lAbtt7bYAAHf5l+gJWw3sUfs0/Glw5fpdjT8Uggrr+RMZezGrltJEF293rvTIjWOEB3z5OHyHwQkvdrPDFcTqsLfh+8Hr8g+mf+7zVPEC8nEbqpdl3GPv3A7AwpFp7MA=="
},
"sourceImage": "global/images/encrypted-image"
}
將以 CSEK 加密的磁碟連接至新的 VM
控制台
前往「建立執行個體」頁面。
在「Boot disk」(開機磁碟) 專區中,按一下「Change」(變更),然後執行下列操作:
- 在「Boot disk」(開機磁碟) 頁面中,按一下「Existing disks」(現有磁碟) 分頁標籤。
- 從「Disk」(磁碟) 清單中,選擇要附加至 VM 的現有加密磁碟。
在「來源磁碟解密金鑰」欄位中輸入加密金鑰。 如果金鑰已使用公開 RSA 金鑰包裝,請選取「包裝金鑰」。
按一下「選取」。
繼續執行 VM 建立程序。
gcloud
如要建立 VM 並連結加密磁碟,請建立金鑰檔案,並在建立 VM 時使用 --csek-key-file 旗標提供金鑰。如果您使用的是 RSA 包裝的金鑰,請使用 gcloud beta 元件:
gcloud (beta) compute instances create example-instance \
--disk name=example-disk,boot=yes \
--csek-key-file example-file.json
REST
使用 Compute Engine API 建立 VM,並提供 rawKey 或 rsaEncryptedKey 以及磁碟規格。提出要求至 v1 API 來使用原始 (非 RSA 包裝) 金鑰,或是 Beta API 來使用 RSA 包裝金鑰。
範例磁碟規格的程式碼片段如下:
"disks": [
{
"deviceName": "encrypted-disk",
"source": "projects/myproject/zones/us-central1-f/disks/encrypted-disk",
"diskEncryptionKey": {
"rawKey": "SGVsbG8gZnJvbSBHb29nbGUgQ2xvdWQgUGxhdGZvcm0="
}
}
]
啟動或重新啟動磁碟以 CSEK 加密的 VM
如要進一步瞭解如何停止或啟動含有加密磁碟的 VM,請參閱「重新啟動含有加密磁碟的 VM」。
建立具有不同加密類型的資源
您可以建立執行個體和其他資源,並混合使用 CSEK、CMEK 和Google-owned and managed key加密資源。舉例來說,您可以建立執行個體,其中包含以客戶提供的加密金鑰加密的開機磁碟,以及以客戶管理的加密金鑰加密的資料磁碟。
如要使用 Google Cloud CLI 在單一要求中建立這類資源,您必須在要求中加入 --no-require-csek-key-create 旗標。
對於任何以 CSEK 加密的資源,您仍須使用 --csek-key-file 旗標指定 CSEK 金鑰。同時提供這兩個旗標時,Compute Engine 會建立金鑰檔案中明確定義的任何客戶加密資源,以及您指定的任何標準資源。
舉例來說,假設金鑰檔案包含以下內容:
[
{
"uri": "https://www.googleapis.com/compute/beta/projects/myproject/zones/us-central1-a/disks/example-disk",
"key": "ieCx/NcW06PcT7Ep1X6LUTc/hLvUDYyzSZPPVCVPTVEohpeHASqC8uw5TzyO9U+Fka9JFHz0mBibXUInrC/jEk014kCK/NPjYgEMOyssZ4ZINPKxlUh2zn1bV+MCaTICrdmuSBTWlUUiFoDD6PYznLwh8ZNdaheCeZ8ewEXgFQ8V+sDroLaN3Xs3MDTXQEMMoNUXMCZEIpg9Vtp9x2oeQ5lAbtt7bYAAHf5l+gJWw3sUfs0/Glw5fpdjT8Uggrr+RMZezGrltJEF293rvTIjWOEB3z5OHyHwQkvdrPDFcTqsLfh+8Hr8g+mf+7zVPEC8nEbqpdl3GPv3A7AwpFp7MA==",
"key-type": "rsa-encrypted"
}
]
您可以使用下列指令,同時建立兩個執行個體,一個執行個體使用以 CSEK 加密的開機磁碟,另一個執行個體使用以Google-owned and managed key 加密的開機磁碟:
gcloud beta compute instances create example-disk example-disk-2 \
--csek-key-file mykeyfile.json --no-require-csek-key-create
通常,如果您指定 --csek-key-file 旗標,就無法建立 example-disk-2,因為磁碟未在金鑰檔案中明確定義。加入 --no-require-csek-key-create 後,系統會建立兩個磁碟,一個使用金鑰檔案加密,另一個使用Google-owned and managed keys加密。
從永久磁碟中移除 CSEK
您可以解密客戶加密磁碟的內容,並建立改用 Google-owned and managed keys 的新磁碟。
- 建立加密磁碟的映像檔,並為新映像檔指定自動加密。
- 使用新的映像檔來建立新的永久磁碟。
建立新的永久磁碟後,Compute Engine 會使用Google-owned and managed keys 保護磁碟內容。您從該磁碟建立的任何快照也必須使用Google-owned and managed keys