IBM Cloud Docs
存储用户凭证

存储用户凭证

您可以使用 IBM Cloud® Secrets Manager 来存储用户名和密码,可用于在 IBM Cloud内部或外部登录和访问受保护服务。

用户凭证由可用于登录或访问外部服务或应用程序的用户名和密码值组成。 私钥安全地存储在专用 Secrets Manager 服务实例中。 在该实例中,您可以集中管理其生命周期,并通过设置到期日期,自动轮换策略等来控制私钥的生命周期。

在用户凭证中,只有密码值可以旋转。 用户名值一旦设置,就不能更改。

要了解有关可以在 Secrets Manager中管理的私钥类型的更多信息,请参阅 什么是私钥?

准备工作

开始之前,请确保您具有所需的访问级别。 要创建或添加私钥,您需要 写入者 服务角色或更高级别的

在 UI 中添加用户凭证

要使用 Secrets Manager UI 存储用户名和密码,请完成以下步骤。

  1. 在控制台中,单击 菜单 图标 "菜单" 图标 > 资源列表

  2. 从服务列表中,选择 Secrets Manager的实例。

  3. 在“私钥”表中,单击 添加

  4. 从私钥类型列表中,选择 用户凭证 磁贴。

  5. 单击下一步

  6. 添加名称和描述以轻松识别私钥。

  7. 选择要分配给私钥的 私钥组包含实例中的私钥的环境和约束必须遵守。 用户可以与一个秘密群组关联,以实现访问和协作。

    没有秘密小组吗 在 私钥组 字段中,可以单击 创建 以提供新组的名称和描述。 您的私钥将自动添加到新组中。 有关私钥组的更多信息,请查看 组织私钥

  8. 可选: 添加标签以帮助您在实例中搜索类似私钥。

  9. 可选: 将元数据添加到私钥或私钥的特定版本。

    1. 上载文件或以 JSON 格式输入元数据和版本元数据。
  10. 单击下一步

  11. 输入要与私钥关联的用户名和密码。

如果选择生成密码,那么 Secrets Manager 会将现有值替换为随机生成的包含大写字母,小写字母,数字和符号的 32 个字符的密码。 您可以选择通过配置其长度 (12-256 个字符) 以及是否包含数字,符号和大写字母来进一步定制生成的密码。

  1. 可选: 启用到期和轮换选项以控制私钥的生命周期。
  2. 要设置私钥的到期日期,请将到期切换开关切换为
  3. 要在 30 天,60 天或 90 天的时间间隔内轮换私钥,请将 自动私钥轮换 切换开关切换为
  4. 单击下一步
  5. 查看私钥的详细信息。
  6. 单击添加

从 CLI 添加用户凭证

开始之前,请 按照 CLI 文档 设置 API 端点。

要使用 Secrets Manager CLI 插件存储用户名和密码,请运行 ibmcloud secrets-manager secret-create 命令。

ibmcloud secrets-manager secret-create \    
    --secret-prototype='{"name": "example-username-password-secret","description": "Description of my user credentials secret","secret_type": "username_password","secret_group_id": "bfc0a4a9-3d58-4fda-945b-76756af516aa","labels": ["dev","us-south"],"username": "example-username","password": "example-password","rotation": {"auto_rotate": true,"interval": 10,"unit": "day"},"custom_metadata": {"metadata_custom_key": "metadata_custom_value"},"version_custom_metadata": {"custom_version_key": "custom_version_value"}}'

从 CLI 生成随机密码

您可以选择通过配置其长度 (12-256 个字符) 以及是否包含数字,符号和大写字母来进一步定制生成的密码。 要使用 Secrets Manager CLI 插件生成随机密码,请运行 ibmcloud secrets-manager secret-create 命令并包含 password_generation_policy 字段。

ibmcloud secrets-manager secret-create \    
    --secret-prototype='{"name": "example-username-password-secret","description": "Description of my user credentials secret","secret_type": "username_password","secret_group_id": "bfc0a4a9-3d58-4fda-945b-76756af516aa","labels": ["dev","us-south"],"username": "example-username","password": "example-password","rotation": {"auto_rotate": true,"interval": 10,"unit": "day"},"password_generation_policy": {"length": 24, "include_digits": true, "include_symbols": false, "include_uppercase": true}, "custom_metadata": {"metadata_custom_key": "metadata_custom_value"},"version_custom_metadata": {"custom_version_key": "custom_version_value"}}'

该命令输出私钥的标识值以及其他元数据。 有关命令选项的更多信息,请参阅 ibmcloud secrets-manager secret-create

使用 API 添加用户凭证

您可以通过调用 Secrets Manager API 以编程方式存储用户名和密码。

以下示例显示可用于创建用户名和密码私钥的查询。 调用 API 时,请将标识变量和 IAM 令牌替换为特定于 Secrets Manager 实例的值。

您可以使用 custom_metadataversion_custom_metadata 请求参数来存储与组织需求相关的元数据。 仅针对私钥版本返回 version_custom_metadata 的值。 私钥的定制元数据存储为最多 50 个版本的所有其他元数据,并且不得包含机密数据。

curl -X POST
    -H "Authorization: Bearer {IAM_token}" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -d '{
      "name": "example-username-password-secret",
      "description": "Description of my user credentials secret",
      "secret_type": "username_password",
      "secret_group_id": "bfc0a4a9-3d58-4fda-945b-76756af516aa",
      "labels": [
        "dev",
        "us-south"
      ],
      "username": "example-username",
      "password": "example-password",
      "rotation": {
        "auto_rotate": true,
        "interval": 10,
        "unit": "day"
      },
      "custom_metadata": {
        "metadata_custom_key": "metadata_custom_value"
      },
      "version_custom_metadata": {
        "custom_version_key": "custom_version_value"
      }
    }'
  "https://{instance_ID}.{region}.secrets-manager.appdomain.cloud/api/v2/secrets"

使用 API 生成随机密码

您可以选择通过配置其长度 (12-256 个字符) 以及是否包含数字,符号和大写字母来进一步定制生成的密码。 调用 Secrets Manager API 时,包含 password_generation_policy 字段。

curl -X POST
    -H "Authorization: Bearer {IAM_token}" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -d '{
      "name": "example-username-password-secret",
      "description": "Description of my user credentials secret",
      "secret_type": "username_password",
      "secret_group_id": "bfc0a4a9-3d58-4fda-945b-76756af516aa",
      "labels": [
        "dev",
        "us-south"
      ],
      "username": "example-username",
      "password": "example-password",
      "rotation": {
        "auto_rotate": true,
        "interval": 10,
        "unit": "day"
      },
      "password_generation_policy": {
        "length": 24,
        "include_digits": true,
        "include_symbols": false,
        "include_uppercase": true
      },
      "custom_metadata": {
        "metadata_custom_key": "metadata_custom_value"
      },
      "version_custom_metadata": {
        "custom_version_key": "custom_version_value"
      }
    }'
  "https://{instance_ID}.{region}.secrets-manager.appdomain.cloud/api/v2/secrets"

使用 Terraform 添加用户凭证

您可以使用 Terraform for Secrets Manager以编程方式存储用户名和密码。

您可以通过在 Terraform 配置中设置可选的 password 参数来提供密码,也可以选择生成随机密码。 如果省略 password 参数,那么 Secrets Manager 将生成 32 个字符的随机密码,其中包含大写字母,小写字母,数字和符号。 您可以选择通过配置其长度 (12-256 个字符) 以及是否包含数字,符号和大写字母来进一步定制生成的密码。

如果使用自动轮换策略配置私钥,那么建议省略 password 参数以自动生成初始密码。 这是为了避免 Terraform 漂移情况,发生自动旋转后,Terraform 会检测到密码已在 Terraform 外部更改。

下面的示例显示了一个查询,您可以用它来创建随机生成密码并启用自动轮换功能的用户名和密码密 码。 此示例还显示了如何为 thr 私钥指定非缺省密码生成策略。

    resource "ibm_sm_username_password_secret" "test_username_password_secret" {
        instance_id = local.instance_id
        region = local.region
        secret_group_id = "default"
        name = "test-user-creds-secret"
        username = "sm_username"
        rotation {
            auto_rotate = true
            interval = 10
            unit = "day"
        }
        password_generation_policy {
            length = 24
            include_digits = true
            include_symbols = false
            include_uppercase = true
        }
    }

下面的示例显示了使用 Terraform 配置中提供的密码创建用户名和密码秘密的查询。 在此示例中禁用了自动轮换,但您可以通过修改配置中 password 参数的值来手动轮换密码。

    resource "ibm_sm_username_password_secret" "test_username_password_secret" {
        instance_id = local.instance_id
        region = local.region
        secret_group_id = "default"
        name = "test-user-creds-secret"
        username = "sm_username"
        password = "sm_password"
    }

成功响应会返回秘密的 ID 值和其他元数据。 有关必需和可选请求参数的更多信息,请查看 API 参考