使用客户管理的加密创建块存储卷
缺省情况下,Block Storage for VPC 引导卷和数据卷使用 IBM 管理的加密进行加密。 您还可以使用受支持的密钥管理服务来创建或导入客户根密钥,并使用该服务来创建包络加密。
准备工作
要创建具有客户管理加密功能的 Block Storage 卷,您必须拥有自己的客户根密钥。 您可以配置密钥管理服务 (KMS),并创建或导入客户根密钥 (CRK)。 您可以在 Key Protect 和 Hyper Protect Crypto Services 之间进行选择。 然后,在 Block Storage for VPC 和您创建的 KMS 实例之间创建服务对服务授权。
也可以使用其他账户的客户根密钥。 在 IBM Cloud 中,KMS 可以与使用加密密钥的服务位于同一个账户或另一个账户。 这种部署模式允许企业集中管理所有企业账户的加密密钥。 有关详细信息,请参阅 加密密钥管理。
在 Cloud Block Storage(源服务)和持有客户根密钥的 KMS 实例(目标服务)之间配置所有必需的 服务对服务授权服务对服务授权服务对服务授权服务对服务授权。 如果使用其他账户的 CRK 配置卷,请联系该账户的管理员,以设置授权和共享的根密钥的 CRN。 如果使用自定义映像调配实例,还需要在 Image Service for VPC(源服务)和 IBM Cloud® Object Storage (目标服务)之间进行授权。
在控制台中创建具有客户管理加密的数据卷
此过程说明如何在创建独立 Block Storage 卷时指定客户管理的加密。
- 在 IBM Cloud 控制台、单击 导航菜单 图标
基础架构
存储 > Block Storage卷,以查看 Block Storage卷的列表。
- 单击创建。
- 查看位置信息。 地理位置、区域和可用区从 VPC 继承(例如,北美、达拉斯、Dallas-1 )。 您可以从菜单中点击編輯圖標
。
- 在里面细节,必须指定卷的名称以及要将卷添加到的资源组。 您可以选择添加用户和访问管理标签。
- 在里面可选配置部分中,您可以指定是否要使用快照中的数据创建卷。 此外,您还可以选择应用备份策略。
- 从快照导入:选择 Import existing snapshot 查看可用快照列表,或 Import snapshot by CRN 并提供要使用的快照的 CRN。 您可以使用不可启动快照创建数据卷,并使用可启动快照创建启动卷。 新的块存储卷从快照继承其存储生成值,并且只有同一代的卷配置文件可以应用于它。
- 应用备份策略:单击申请查看可用的政策和计划。
- 在里面轮廓部分中,您可以指定卷的性能配置文件、其 IOPS 和容量。
- 在里面静态加密部分,您可以选择保留加密IBM-管理密钥在所有卷上默认启用。 或者,您也可以通过选择密钥管理服务来使用 您自己的加密密钥:Key Protect 或 Hyper Protect Crypto Services. 要找到您的加密密钥,请选择以下选项之一:
- 按实例定位:
- 从列表中选择数据加密实例。 如果您还没有实例,您可以单击链接创建一个。
- 选择存储在 KMS 实例中用于加密卷的数据加密密钥。
- 通过 CRN 定位:输入用于加密卷的客户根密钥的 CRN。 如果您正在使用另一个账户的 CRK,请选择此选项。
- 按实例定位:
- 完成更改后,单击创建块存储卷。
刷新控制台中的 Block Storage 卷列表时,新卷会显示在卷列表的开头,加密类型为 客户管理。 创建加密卷时,它显示的状态是_可用_。 对于独立卷,附件类型列为空白 (-)。表行末尾的 Actions 菜单 提供了将 Block Storage 卷附加到实例的链接。
通过 CLI 使用客户管理的加密创建数据卷
先决条件
在使用 CLI 之前,您必须安装 IBM Cloud CLI 和 VPC CLI 插件。 有关更多信息,请参阅 CLI 先决条件。
-
登录 IBM Cloud。
ibmcloud login --sso -a cloud.ibm.com
此命令会返回 URL 并提示输入密码。 在浏览器中转至该 URL 并登录。 如果成功,您将获得一次性密码。 复制此密码并将其作为响应粘贴到提示上。 成功认证后,系统会提示您选择帐户。 如果可以访问多个账户,请选择要登录的账户。 响应任何剩余提示以完成登录。
-
收集所需信息,例如要用于加密块存储卷的根密钥的 CRN。
- 使用
ibmcloud resource service-instances
命令来查找 KMS 实例。$ ibmcloud resource service-instances Retrieving all instances of all services in resource group Default and all locations under account Test Account as test.user@ibm.com... OK Name Location State Type Key Protect-17 us-south active service_instance HS-Crypto-60 us-south active service_instance
- 使用
ibmcloud resource service-instance
命令检索 KMS 实例的实例标识。
实例 ID 是 CRN 中最后一个ibmcloud resource service-instance "Key Protect-17" --id Retrieving service instance Key Protect-17 in resource group Default under account Test Account as test.user@ibm.com... crn:v1:bluemix:public:kms:us-south:a/a1234567-3jkl4xxxx567::7mnxxxo8-91xx-23px-q4rs-xxtuv5w6xxx7
::
后面的字符串。 在此示例中,它是7mnxxxo8-91xx-23px-q4rs-xxtuv5w6xxx7
。 - 通过指定实例标识,列出 Key Protect 服务实例的可用密钥及其关联的 CRN。
$ ibmcloud kp keys -c --instance-id 7mnxxxo8-91xx-23px-q4rs-xxtuv5w6xxx7 Retrieving keys... SUCCESS Key ID Key Name CRN ef1gxxxh-ijxx-234x-56k7-xxxxlmnoxxp8 test-key crn:v1:bluemix:public:kms:us-south:a/a1234567:key:ef1gxxxh-ijxx-234x-56k7-xxxxlmnoxxp8 cdex12ef-xxxg-3hxx-i456-7xxx8jk9xl12 vsi_encrypt_root_key crn:v1:bluemix:public:kms:us-south:a/a1234567:key:cdex12ef-xxxg-3hxx-i456-7xxx8jk9xl12 c12xxxx3-45d6-7efg-xxx8-9xxx12345x6h vsi_encrypt_key crn:v1:bluemix:public:kms:us-south:a/a1234567:key:c12xxxx3-45d6-7efg-xxx8-9xxx12345x6h
按照前面的步骤,就可以从账户中获取客户根密钥的 CRN。 如果客户根密钥为其他账户所有,请向其账户管理员索取 CRN。
有效的卷名称可包括小写字母数字字符(a-z,0-9)和连字符(-)的组合,最多 63 个字符。 卷名必须以小写字母开头。 在整个 VPC 基础设施中,卷名称必须是唯一的。
- 使用
通过 CLI 使用客户管理的加密创建数据卷
要通过 CLI 创建客户管理加密的数据卷,首先要收集客户根密钥的 CRN,然后使用带有 --encryption-key
选项的 ibmcloud is volume-create
命令。 encryption_key
选项必须为密钥管理服务中的根密钥指定一个有效的 CRN。
下面的示例显示了使用客户管理加密创建的加密卷。
$ ibmcloud is volume-create my-customer-key-volume custom us-east-1 --capacity 300 --iops 1500 --encryption-key crn:v1:bluemix:public:kms:us-east:a/a1234567:3b05b403-8f51-4dac-9114-c777d0a760d4:key:7a8a2761-08e3-455f-a348-144ed604bba9
Creating volume my-customer-key-volume under account Test Account as user test.user@ibm.com...
ID r014-3984600c-6f4d-4940-82de-519a867fa3c0
Name my-customer-key-volume
CRN crn:v1:bluemix:public:is:us-east-1:a/a1234567::volume:r014-3984600c-6f4d-4940-82de-519a867fa3c0
Status pending
Attachment state unattached
Capacity 300
IOPS 1500
Bandwidth(Mbps) 3145
Profile custom
Encryption key crn:v1:bluemix:public:kms:us-east:a/a1234567:3b05b403-8f51-4dac-9114-c777d0a760d4:key:7a8a2761-08e3-455f-a348-144ed604bba9
Encryption user_managed
Resource group defaults
Created 2023-06-29T20:10:52+00:00
Zone us-east-1
Health State inapplicable
Volume Attachment Instance Reference -
Active false
Adjustable Capacity States attached
Adjustable IOPS State attached
Busy false
Tags -
Storage Generation 1
您还可以在实例供应期间创建使用客户管理的加密的卷。
使用 API 通过客户管理的加密创建数据卷
您可以通过在 VPC API 中调用 /volumes
方法,以编程方式使用客户管理的加密来创建数据卷,如以下样本请求中所示。 使用 encryption_key
属性来指定客户根密钥 (CRK),在示例中显示为 crn:[...key:...]
。
有效的卷名称可包括小写字母数字字符(a-z,0-9)和连字符(-)的组合,最多 63 个字符。 卷名必须以小写字母开头。 在整个 VPC 基础设施中,卷名称必须是唯一的。
以下示例使用客户管理的加密创建通用数据卷。
curl -X POST \
"$vpc_api_endpoint/v1/volumes?version=2025-02-18&generation=2" \
-H "Authorization: $iam_token" \
-d '{
"name": "my-volume-1",
"iops": 100,
"capacity": 20,
"zone": {"name": "us-south-3"},
"profile": {"name": "general-purpose"},
"encryption_key":{"crn":"crn:[...key:...]"},
"resource_group": {"id": "a342dbfb-3ea7-48d1-96e8-2825ec5feab4"}
}
成功回复的示例如下
{
"id": "8948ad59-bc0f-7510-812f-5dc64f59fab8",
"crn": "crn:[...]",
"name": "my-volume-1",
"href": "https://us-south.iaas.cloud.ibm.com/v1/volumes/8948ad59-bc0f-7510-812f-5dc64f59fab8",
"capacity": 20,
"iops": 100,
"encryption_key": {"crn": "crn:[...key:...]"},
"encryption": "user_managed",
"status": "available",
"zone": {
"name": "us-south-3",
"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south/zones/
us-south-3"
},
"profile": {
"name": "general-purpose",
"href": "https://us-south.iaas.cloud.ibm.com/v1/volume/profiles/general-purpose"
},
"resource_group": {
"id": "a342dbfb-3ea7-48d1-96e8-2825ec5feab4",
"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/
a342dbfb-3ea7-48d1-96e8-2825ec5feab4",
"name": "Default"
},
"storage_generation": 1,
"volume_attachments": [],
"created_at": "2025-02-18T16:03:22.000Z"
}
使用控制台中由客户管理的密钥加密的启动卷调配实例
配置虚拟服务器实例时,可以为启动卷和要添加的任何数据卷指定客户管理加密。 如果需要,可以对与实例关联的卷,组合使用提供者管理的加密和客户管理的加密。
执行以下步骤以创建具有新 Block Storage 卷的实例。
- 在 IBM Cloud 控制台,单击 导航菜单 图标
> 基础架构
> 计算 > 虚拟服务器实例。
- 单击新建实例,然后填写必填字段。 有关这些必填字段的更多信息,请参阅 创建虚拟服务器实例 中的 表 1-实例供应选择。
- 在启动卷部分,加密的默认模式是_提供商管理_加密。 要指定客户管理的加密,请单击引导卷行中的 编辑图标
。
- 在编辑引导卷页面上,更新加密部分中的字段。 选择您的密钥管理服务:(Key Protect或者Hyper Protect Crypto Services )。 要找到您的加密密钥,请选择以下选项之一:
- 按实例定位:
- 从列表中选择数据加密实例。 如果您还没有实例,您可以单击链接创建一个。
- 选择存储在Key Protect用于加密卷的实例。
- 通过 CRN 定位:输入用于加密卷的客户根密钥的 CRN。 如果您使用的是其他账户的 CRK,请选择此选项。
- 按实例定位:
- 更改完成后,单击应用。
- 在附加 Block Storage 卷部分,可以单击新建 Block Storage 卷添加数据卷,并指定客户管理加密。 在新建块存储卷页面上,更新加密部分中的字段。 有关更多信息,请参阅表 1。 更改完成后,单击连接。
使用客户管理的密钥加密的启动卷从 CLI 配置实例
使用 ibmcloud is instance-create 命令为引导卷和数据卷创建具有客户管理的加密的实例。 以下语法显示了如何指定 --boot-volume
和 --volume-attach
属性,以包含定义卷的 JSON 文件。
ibmcloud is instance-create INSTANCE_NAME VPC ZONE_NAME PROFILE_NAME SUBNET --image-id IMAGE_ID [--boot-volume @BOOT_VOLUME_JSON_FILE] [--volume-attach @VOLUME_ATTACH_JSON_FILE]...
以下 BOOT_VOLUME_JSON_FILE
示例定义引导卷的属性。 encryption key
属性包含用于客户管理的加密的根密钥的 CRN。
{
"name":"volume-attachment-1",
"volume":{
"name":"boot-volume-1",
"capacity":250,
"profile":{"name":"general-purpose"},
"encryption_key":{"crn":"crn:[...key:...]"}
},
"delete_volume_on_instance_delete":true
}
下面的 VOLUME_ATTACH_JSON_FILE
示例使用 10iops-tier 配置文件和客户管理加密定义了一个数据卷。
{
"name":"volume-attachment-1",
"volume":{
"name":"data-volume-1",
"capacity":2000,
"profile":{"name":"10iops-tier"},
"encryption_key":{"crn":"crn:[...key:...]"}
},
"delete_volume_on_instance_delete":true
}
使用 API 利用客户管理的密钥加密的启动卷调配实例
您可以通过在 VPC API 中调用 /instances
方法,以编程方式使用客户管理的加密的引导卷来创建虚拟服务器实例,如以下样本请求中所示。 使用 encryption_key
属性来指定客户根密钥 (CRK),在示例中显示为 crn:[...key:...]
。
以下示例使用具有客户管理的加密的引导卷和具有客户管理的加密的两个辅助卷来创建实例。
curl -X POST \
"$vpc_api_endpoint/v1/instances?version=version=2020-03-10&generation=2" \
-H "Authorization: $iam_token" \
-d '{
"boot_volume_attachment":{
"volume": {
"name":"boot-volume-1",
"profile": {"name": "general-purpose"},
"encryption_key": {"crn": "crn:[...key:...]"}}},
"volume_attachments": [
{"volume": {
"name": "my-volume-1",
"capacity": 1500,
"profile": {"name": "general-purpose"},
"encryption_key": {"crn": "crn:[...key:...]"}}},
{"volume": {
"name": "my-volume-2",
"capacity": 2000,
"profile": {"name": "general-purpose"},
"encryption_key": {"crn": "crn:[...key:...]"}}}],
"image": {"id": "9aaf3bcb-dcd7-4de7-bb60-24e39ff9d366"},
"keys": [{"id": "cf7678a3-d4fa-458b-993d-015bd4aeac80"}],
"name": "my-test-vm2",
"virtual_network_interface": {"subnet": {"id": "bea6a632-5e13-42a4-b4b8-31dc877abfe4"}},
"profile": {"name": "cx2-2x4"},
"vpc": {"id": "f0aae929-7047-46d1-92e1-9102b07a7f6f"},
"zone": {"name": "us-south-3"}
}'
成功回复的示例如下 启动卷同时出现在 boot_volume_attachment
和 volume_attachment
下。
{
"id": "eb1b7391-2ca2-4ab5-84a8-b92157a633b0",
"crn": "crn:[...]",
"href": "https://us-south.iaas.cloud.ibm.com/v1/instances/eb1b7391-2ca2-4ab5-84a8-
b92157a633b0",
"name": "my-test-vm2",
"bandwidth": 4000,
"resource_group": {
"id": "08b7af6d-41d9-435a-8b22-fd8f640863a5",
"href": "https://resource-controller.cloud.ibm.com/v2/resource_groups/
08b7af6d-41d9-435a-8b22-fd8f640863a5",
"name": "Default"
},
"boot_volume_attachment": {
"id": "a8a15363-a6f7-4f01-af60-715e85b28141",
"href": "https://us-south.iaas.cloud.ibm.com/v1/instances/eb1b7391-2ca2-4ab5-
84a8-b92157a633b0/volume_attachments/7389-a8a15363-a6f7-4f01-af60-
715e85b28141",
"name": "volume-attachment",
"volume": {
"id": "49c5d61b-41e7-4c01-9b7a-1a97366c6916",
"crn": "crn:[...]",
"href": "https://us-south.iaas.cloud.ibm.com/v1/volumes/49c5d61b-41e7-
4c01-9b7a-1a97366c6916",
"name": "boot-volume-1"
}
},
"created_at": "2020-04-20T16:11:57Z",
"image": {
"id": "9aaf3bcb-dcd7-4de7-bb60-24e39ff9d366",
"crn": "crn:[...]",
"href": "https://us-south.iaas.cloud.ibm.com/v1/images/
9aaf3bcb-dcd7-4de7-bb60-24e39ff9d366",
"name": "ubuntu-amd64-1"
},
"memory": 4,
"network_interfaces": [
{
"id": "7ca88dfb-8962-469d-b1de-1dd56f4c3275",
"href": "https://us-south.iaas.cloud.ibm.com/v1/instances/e402fa1b-96f6-
4aa2-a8d7-703aac843651/network_interfaces/7ca88dfb-8962-469d-b1de-
1dd56f4c3275",
"name": "helpless-profanity-unmixable-fool-hazard-staging",
"primary_ipv4_address": "",
"subnet": {
"id": "bea6a632-5e13-42a4-b4b8-31dc877abfe4",
"crn": "crn:[...]",
"href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/7389-bea6a632-
5e13-42a4-b4b8-31dc877abfe4",
"name": "my-byok-vpc-subnet"
}
}
],
"primary_network_interface": {
"id": "7ca88dfb-8962-469d-b1de-1dd56f4c3275",
"href": "https://us-south.iaas.cloud.ibm.com/v1/instances/e402fa1b-96f6-4aa2-
a8d7-703aac843651/network_interfaces/7ca88dfb-8962-469d-b1de-1dd56f4c3275",
"name": "network-interface-1",
"primary_ipv4_address": "10.0.0.32",
"subnet": {
"id": "bea6a632-5e13-42a4-b4b8-31dc877abfe4",
"crn": "crn:[...]",
"href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/bea6a632-5e13-
42a4-b4b8-31dc877abfe4",
"name": "my-byok-vpc-subnet"
}
},
"profile": {
"name": "cx2-2x4",
"href": "https://us-south.iaas.cloud.ibm.com/v1/instance/profiles/cx2-2x4"
},
"status": "running",
"vcpu": {
"architecture": "amd64",
"count": 2
},
"volume_attachments": [
{
"id": "a8a15363-a6f7-4f01-af60-715e85b28141",
"href": "https://us-south.iaas.cloud.ibm.com/v1/instances/e402fa1b-96f6-
4aa2-a8d7-703aac843651/volume_attachments/7389-a8a15363-a6f7-4f01-af60-
715e85b28141",
"name": "volume-attachment",
"volume": {
"id": "49c5d61b-41e7-4c01-9b7a-1a97366c6916",
"crn": "crn:[...]",
"href": "https://us-south.iaas.cloud.ibm.com/v1/volumes/49c5d61b-41e7-
4c01-9b7a-1a97366c6916",
"name": "boot-volume-1"
}
},
{
"id": "e77125cb-4df0-4988-a878-531ae0ae0b70",
"href": "https://us-south.iaas.cloud.ibm.com/v1/instances/e402fa1b-96f6-
4aa2-a8d7-703aac843651/volume_attachments/7389-e77125cb-4df0-4988-a878-
531ae0ae0b70",
"name": "volume-attachment",
"volume": {
"id": "2cc091f5-4d46-48f3-99b7-3527ae3f4392",
"crn": "crn:[...]",
"href": "https://us-south.iaas.cloud.ibm.com/v1/volumes/2cc091f5-4d46-
48f3-99b7-3527ae3f4392",
"name": "my-volume-2"
}
},
{
"id": "a7641494-5724-46de-9c72-c6b16971ddf4",
"href": "https://us-south.iaas.cloud.ibm.com/v1/instances/e402fa1b-96f6-
4aa2-a8d7-703aac843651/volume_attachments/a7641494-5724-46de-9c72-
c6b16971ddf4",
"name": "volume-attachment",
"volume": {
"id": "ec419496-d79e-4fca-bce7-b4be72e77654",
"crn": "crn:[...]",
"href": "https://us-south.iaas.cloud.ibm.com/v1/volumes/ec419496-d79e-
4fca-bce7-b4be72e77654",
"name": "my-volume-2"
}
}
],
"vpc": {
"id": "f0aae929-7047-46d1-92e1-9102b07a7f6f",
"crn": "crn:[...]",
"href": "https://us-south.iaas.cloud.ibm.com/v1/vpcs/f0aae929-7047-46d1-92e1-
9102b07a7f6f",
"name": "my-byok-vpc"
},
"zone": {
"name": "us-south-3",
"href": "https://us-south.iaas.cloud.ibm.com/v1/regions/us-south/zones/
us-south-3"
}
}
使用 Terraform 创建客户管理加密的数据卷
先决条件
要使用 Terraform,请下载 Terraform CLI 并配置 IBM Cloud® Provider 插件。 有关更多信息,请参阅 开始使用 Terraform。
VPC 基础设施服务使用特定的区域端点,默认情况下,其目标是 us-south
。 如果您的 VPC 是在其他区域创建的,请确保在 provider.tf
文件中的提供程序块中以相应区域为目标。 请参阅下面的示例,了解除默认 us-south
之外的其他目标区域。
provider "ibm" {
region = "eu-de"
}
收集所需的信息,如唯一的卷名,选择 配置文件,确定容量和 IOPS 要求。
有效的卷名称可包括小写字母数字字符(a-z,0-9)和连字符(-)的组合,最多 63 个字符。 卷名必须以小写字母开头。 在整个 VPC 基础设施中,卷名称必须是唯一的。
参考 ibm_kms_key 数据源,读取用于加密的客户根密钥的 CRN。 有关详细信息,请参阅 Terraform 文档 ibm_kms_key。 如果 KMS 位于其他区域或客户根密钥为其他账户所有,则 Terraform 无法检索该实例,Terraform 操作也会失败。 联系其他账户的管理员以获取 CRN。
使用 Terraform 创建独立 Block Storage for VPC 卷
要创建 Block Storage for VPC 卷,请使用 ibm_is_volume
资源。 下面的示例创建了一个带有 custom
配置文件的加密卷。 创建的卷容量为 200 MB,可执行 1000 IOPS。
resource "ibm_is_volume" "example" {
name = "my-example-volume"
profile = "custom"
zone = "us-south-1"
iops = 1000
capacity = 200
encryption_key = "crn:v1:bluemix:public:kms:us-south:a/a1234567:e4a29d1a-2ef0-42a6-8fd2-350deb1c647e:key:5437653b-c4b1-447f-9646-b2a2a4cd6179"
}
有关参数和属性的详细信息,请参阅 ibm_is_volume。
后续步骤
- 使用加密引导卷和数据卷创建实例后,请将浮动 IP 地址与可用于连接到实例的实例相关联。 有关更多信息,请参阅连接到 Linux 实例或连接到 Windows 实例。
- 通过格式化和配置数据卷以满足您的需求,准备数据卷以供使用。
- 附加独立卷 到虚拟服务器实例。
- 配置 VPC 资源的密钥轮换。