创建服务凭证
您可以使用 IBM Cloud® Secrets Manager 创建服务凭证,用于访问需要身份验证的 IBM Cloud 资源。
服务凭证可以保存 Identity and Access Management 发放的凭证。 凭证也可以是特定于服务的本地凭证,如 HMAC 密钥、数据库用户 ID 和密码、SASL 凭证或 TLS 证书。 要进一步了解使用 Secrets Manager 可以管理的秘密类型,请参阅 什么是秘密?
受支持的 IBM Cloud 服务
您可以通过 Secrets Manager 为以下 IBM Cloud 服务创建服务凭证:
准备工作
开始之前,请确保您具有所需的访问级别。 要创建或添加私钥,您需要 写入者 服务角色或更高级别的。
账户管理员或任何拥有所需访问权限的实体都可以从外部更改由 Secrets Manager 创建和管理的服务证书。 如果在 Secrets Manager 之外删除此类凭证,服务可能会出现意外行为。 例如,您可能无法创建或轮换凭证。
请注意,对于为数据库创建的服务凭证,如果除了凭证之外,您还在更改所创建凭证的数据库许可权,那么一旦轮换了服务凭证,将不会同步这些凭证。 当轮换数据库服务凭证时,这被视为身份轮换。
更改服务凭证私钥的 TTL 时,将仅在下一个私钥版本轮换时应用该私钥。
Secrets Manager 创建的服务凭据密文也将是资源密钥的名称。 例如,名为 my-secret-name 的 Cloud Object Storage 服务凭据密钥在 Cloud Object Storage 中会有一个匹配的资源密钥,名为 my-secret-name。 如果以后在 Secrets Manager 中重新命名秘密,这一更改将不会反映在资源密钥中,但功能不会中断。
为服务凭证分配 IAM 服务访问角色
要创建服务凭证,必须选择 IAM 服务访问角色。 要从中选择的可用角色在受支持的服务之间可能有所不同。 请参阅受支持服务的列表 以获取相关文档。 然后,所选角色将附加到 IAM Service 标识,该标识可以是现有服务标识,也可以是自动生成的服务标识。
一旦发生秘密轮换,将继续使用服务标识。 如果删除私钥,那么将不会删除预先存在的服务标识,但是将删除自动生成的服务标识。
如果选择使用预先存在的服务标识,那么还可以预先配置其服务访问策略。 在这种情况下,请在创建私钥时选择 无 作为角色。 了解有关 IAM 策略的更多信息。
服务凭证最佳实践
建议对生产用例应用最小特权访问原则:
- 设置服务到服务授权时,应该在具体源服务 实例和目标服务实例之间定义服务到服务授权,而不是在 所有 服务之间定义服务到服务授权。
- 手动设置要与服务凭证配合使用的服务标识的访问权时,应将其应用于具体服务实例。
在 UI 中创建服务凭证
要使用 Secrets Manager UI 创建服务凭证,请完成以下步骤。
-
在控制台中,单击 菜单 图标
> 资源列表。
-
从服务列表中,选择 Secrets Manager的实例。
-
在“私钥”表中,单击 添加。
-
从私钥类型列表中,单击 服务凭证 磁贴。
-
单击下一步。
-
添加名称和描述以轻松识别私钥。
-
选择要分配给私钥的 私钥组包含实例中的私钥的环境和约束必须遵守。 用户可以与一个秘密群组关联,以实现访问和协作。 。
没有秘密小组吗 在 私钥组 字段中,可以单击 创建 以提供新组的名称和描述。 您的私钥将自动添加到新组中。 有关私钥组的更多信息,请查看 组织私钥。
-
可选: 添加标签以帮助您在实例中搜索类似私钥。
-
选择要为其创建证书的服务和服务实例
如果这是首次选择服务实例或提供了服务 CRN,请首先授权 Secrets Manager 对其进行访问
- 单击 " **授权 **" 并选择 " 密钥管理器
-
单击下一步。
-
根据所选服务,提供所请求的输入。
-
可选: 将元数据添加到私钥或私钥的特定版本。
- 上载文件或以 JSON 格式输入元数据和版本元数据。
-
可选: 设置私钥的租赁持续时间或生存时间 (TTL)。
通过设置服务凭证的租赁持续时间,您可以确定其关联凭证保持有效的时间长度。 服务凭证的租期结束后,将自动被撤销。
-
可选: 启用私钥的自动旋转。
-
单击下一步。
-
查看私钥的详细信息。
-
单击添加。
从 CLI 创建服务凭证
要使用 Secrets Manager CLI 插件创建服务凭证私钥,请运行 ibmcloud secrets-manager secret-create 命令。 您可以使用 --secret-type service_credentials 选项来指定私钥类型。 例如,以下命令为 Cloud Object Storage 实例创建具有 HMAC 支持的服务凭证。 以及指定为该凭证提供的 IAM 角色,例如 Writer。
ibmcloud secrets-manager secret-create --secret-type="service_credentials" --secret-name="example-service-credentials-secret" --secret-source-service='{"instance": {"crn": "CRN of the instance to create a credential for"},"parameters": {"HMAC": true},"role": {"crn": "crn:v1:bluemix:public:iam::::serviceRole:Writer"}}'
该命令输出私钥的标识值以及其他元数据。 有关命令选项的更多信息,请参阅 ibmcloud secrets-manager secret-create。
使用 API 创建服务凭证
您可以通过调用 Secrets Manager API 以编程方式创建服务凭证。
您可以使用 custom_metadata 和 version_custom_metadata 请求参数来存储与组织需求相关的元数据。 仅针对私钥版本返回 version_custom_metadata 的值。 私钥的定制元数据存储为最多 50 个版本的所有其他元数据,并且不得包含机密数据。
在下面的示例中,创建了 Cloud Object Storage 的服务凭据,使用现有服务 ID 的 IAM ID 自定义参数,并启用了 HMAC。 以及指定为该凭证提供的 IAM 角色,例如 Writer。
curl -X POST
-H "Authorization: Bearer {iam_token}" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{
{
"name": "example-service-credentials-secret",
"description": "Description of my Service Credentials secret",
"secret_type": "service_credentials",
"secret_group_id": "bfc0a4a9-3d58-4fda-945b-76756af516aa",
"labels": [
"dev",
"us-south"
],
"source_service": {
"instance": {
"crn": "CRN of the instance to create a credential for"
},
"parameters": {
"serviceid_crn": "Existing Service ID's IAM ID",
"HMAC": true
},
"role": {
"crn": "crn:v1:bluemix:public:iam::::serviceRole:Writer"
}
}
}' \ "https://{instance_ID}.{region}.secrets-manager.appdomain.cloud/api/v2/secrets"
响应成功时,将返回密钥的 ID 值以及其他元数据。 有关必需和可选请求参数的更多信息,请查看 API 参考。
使用Terraform创建服务凭证
您可以使用 Terraform 为 Secrets Manager 创建服务凭据。 以下示例显示了一种可用于创建Cloud Object Storage凭证的配置。
resource "ibm_sm_service_credentials_secret" "my_service_credentials_secret" {
instance_id = "local.instance_id"
region = "local.region"
name = "example-service-credentials-secret"
secret_group_id = "ibm_sm_secret_group.sm_secret_group_test.secret_group_id"
description = "Description of my Service Credentials secret"
ttl = "24h"
source_service {
role = {
crn = "crn:v1:bluemix:public:iam::::serviceRole:Writer"
},
instance = {
crn = "crn:v1:bluemix:public:cloud-object-storage:global:a/347df6de25020f0fa8b711c6d9881111:f35e85fc-3d4d-476e-8547-51222e3c1111::"
},
parameters = {
HMAC: true
}
}
rotation {
auto_rotate = true
interval = 1
unit = "day"
}
}
使用 Terraform IBM Modules (TIM) 为 Secrets Manager Secret 自动轮换部署服务凭证。 有关示例,请查看 Terraform IBM 模块。