IBM Cloud Docs
配置服务绑定的访问权

配置服务绑定的访问权

Code Engine 中的服务绑定使用服务标识来访问 IBM Cloud 服务。 服务标识包含用于代表 Code Engine 项目与服务实例进行通信的凭证。 在可以将服务实例绑定到 Code Engine 工作负载之前,必须根据您是否希望 Code Engine 自动为您创建和管理服务标识或者是否要使用您管理的服务标识来配置对绑定的访问权。

是否有兴趣配置项目,以便项目的所有用户都可以创建和删除服务绑定? 在具有足够许可权的情况下,您可以使用控制台中的“项目”集成页面从单个页面配置服务绑定操作。 如果您没有足够的许可权来执行这些操作,那么可以使用此页面来帮助您了解必需的许可权。 请参阅 配置项目范围的设置

在可以将应用程序,作业或函数绑定到特定 IBM Cloud 服务实例之前,请确定是要 创建和管理您自己的服务标识,还是要 Code Engine 自动为您创建和管理服务标识。 根据您的选择,分配正确的访问策略。Code Engine 针对每个项目使用一个服务标识来处理服务绑定。

使用缺省服务绑定访问策略

缺省情况下,当用于项目的帐户具有足够的许可权时,Code Engine 会自动创建服务标识以访问 Code Engine 项目的资源组中的所有服务。 服务标识是在第一次服务绑定操作期间创建的。

要在 Code Engine 项目与要绑定到的服务实例位于 同一 资源组中时使用缺省服务绑定访问策略,请 配置对 Code Engine 的访问以自动创建和管理服务绑定的服务标识

配置 Code Engine 的访问权,以自动创建和管理服务绑定的服务标识

如果服务实例与 Code Engine 项目位于同一资源组中,并且您希望 Code Engine 自动为您创建和管理服务绑定的服务标识,那么用于 Code Engine 项目的 IBM Cloud 帐户必须具有 Writer 服务访问权和 Operator 平台访问权,至少。

通过为您的帐户设置这些许可权,当您创建服务绑定时,Code Engine 将检查并自动设置具有 OperatorManager 访问权的服务标识,以访问 Code Engine 项目的资源组中的所有服务。Code Engine 使用此服务标识通过服务绑定访问 IBM Cloud 服务。

每当 Code Engine 创建用于项目的服务绑定的服务标识时,此服务标识将与同一项目中的后续服务绑定一起复用。除非运行 project update CLI 命令 配置项目以绑定其他资源组中的服务,或者运行 project update CLI 命令以使用 具有 Code Engine 服务绑定访问许可权的定制服务标识

例如,假设您希望 Code Engine 自动为 IBM Cloudant 服务实例创建和管理服务绑定的服务标识。 此外,假定用于 Code Engine 项目和 IBM Cloudant 服务实例的 my-user 帐户都位于同一资源组中。

以下步骤描述了一种设置所需访问许可权的方法,以便 Code Engine 可以自动创建和管理 my-user 的服务绑定的服务标识。 服务实例的帐户所有者完成以下步骤来为 my-user 分配许可权。

  1. 为创建 Code Engine 服务绑定的用户创建 IAM 资源组

    1. 启动 Access(IAM)概述
    2. 选择 管理 > 帐户 > 资源组 > 创建资源组
    3. 创建资源组; 例如,CodeEngine_servicebindings_resourcegroup
  2. 在同一资源组中创建要绑定到的服务实例。 对于此示例,请在 CodeEngine_servicebindings_resource group 资源组中创建 IBM Cloudant 服务实例。

  3. 为创建 Code Engine 服务绑定的用户 创建 IAM 访问组

    1. 启动 Access(IAM)概述

    2. 选择 管理 > 访问权 (IAM) > 访问组

    3. 创建组; 例如,CodeEngine_servicebindings_accessgroup

    4. 在此新访问组中,单击 访问权 选项卡,并将以下两个访问策略分配给该访问组。 对于第一个访问策略,

      • 对于“服务”,选择 All Identity and Access enabled services
      • 对于“资源”,选择您在上一步中创建的特定资源组; 例如,CodeEngine_servicebindings_resourcegroup
      • 对于资源组访问权,请选择 Viewer
      • 对于角色和操作,请选择 Administrator 的“平台”访问权。
      • 单击 添加 以将访问策略添加到此访问组。
    5. 为此访问组分配第二个访问策略。

      • 对于“服务”,选择 Code Engine
      • 对于“资源”,选择您在上一步中创建的特定资源组; 例如,CodeEngine_servicebindings_resourcegroup
      • 对于资源组访问权,请选择 Viewer
      • 对于角色和操作,选择 Writer 的服务访问权和 Operator 的平台访问权。
      • 单击 添加 以将访问策略添加到此访问组。
    6. 单击 分配 以将访问策略分配给此访问组。

  4. my-user 用户添加到此访问组。

现在,您已准备好在 Code Engine 中创建服务绑定,其中 Code Engine 会自动创建具有足够许可权的服务标识,以创建对指定服务实例的服务凭证。 请参阅 将服务实例绑定到应用程序,作业或函数工作负载

配置项目以绑定其他资源组中的服务

缺省情况下,当用于项目的帐户具有足够的许可权时,Code Engine 会自动创建服务标识以访问 Code Engine 项目的资源组中的所有服务。 服务标识是在第一次服务绑定操作期间创建的。

但是,如果要绑定到 Code Engine 工作负载的 IBM Cloud 服务实例位于与工作负载的 Code Engine 项目的资源组 不同的 资源组中,并且您希望 Code Engine 自动为您创建和管理服务绑定的服务标识,那么必须先完成以下操作,然后才能创建服务绑定。

例如,如果 Code Engine 项目位于 Default 资源组中,并且您要绑定到 dev 资源组中存在的服务实例,那么必须更新 Code Engine 项目,以便 Code Engine 可以访问其他资源组中的服务实例。

更新项目以访问其他资源组中的服务实例

当要绑定到的资源位于其他资源组中时,请使用 CLI 配置 Code Engine 项目,以便它可以访问不同资源组中的资源。 使用 ibmcloud ce project update 命令并指定 --binding-resource-group 选项以配置 Code Engine 项目,以便对资源组中的所有服务实例进行服务绑定访问。 此命令告诉 Code Engine 项目它可以绑定到哪个资源组。 只能使用 CLI 更新项目以将服务绑定到其他资源组。

project update 命令在选择为当前上下文的项目中工作。 在使用 project update 命令之前,请确认您在期望的项目中。 使用 ibmcloud ce project current 命令可显示当前目标项目的详细信息。 如果需要,请使用 ibmcloud ce project select 命令来选择项目作为当前上下文。

  • 要为 缺省 资源组中的所有服务实例配置服务绑定访问权,

    ibmcloud ce project update --binding-resource-group Default
    
  • 要通过指定资源组的标识来配置资源组中所有服务实例的服务绑定访问权,

    ibmcloud ce project update --binding-resource-group-id abcdabcdabcdabcdabcdabcdabcdabcd
    

    要获取资源组 (包括资源组标识) 的列表,请运行 ibmcloud resource groups

  • 要为所有资源组中的所有服务实例配置服务绑定访问权,请执行以下操作:

    ibmcloud ce project update --binding-resource-group "*"
    

运行 project update 命令时,将为项目创建服务标识,并用于为服务绑定配置当前项目。 如果您无权创建此服务标识,那么会收到错误,指示您的项目未准备好使用服务绑定。 与帐户管理员讨论您的访问策略,或者请求管理员 为 Code Engine 以自动创建和管理服务绑定的服务标识

将定制服务标识用于服务绑定

如果要对访问策略或资源组进行更多控制,可以为服务实例创建定制服务标识。

如果帐户所有者不希望为用户授予对资源组中 所有启用身份和访问权的服务Administrator 访问权,那么您的组织可能会选择使用定制服务标识来访问特定服务实例,Code Engine 需要此服务标识才能自动创建和管理服务绑定的服务标识。 帐户所有者可能希望将用户访问权限定为特定服务类型或服务实例。 在这些情况下,定制服务标识提供此控件。

要将定制服务标识用于服务绑定,

创建具有 Code Engine 服务绑定访问许可权的定制服务标识

使用定制服务标识时,必须授予定制服务标识 Operator 平台访问权,以便此服务标识可以为服务绑定创建服务凭证。

例如,假设要创建服务绑定以将 Code Engine 工作负载绑定到 IBM Cloudant 服务实例。 但是,您不希望授予用户对资源组中所有 所有启用身份和访问权的服务Administrator 访问权。 但是,您希望授予用户对 IBM Cloudant的特定实例的访问权。

以下步骤描述了一种设置具有所需访问许可权的定制服务标识的方法,以便 Code Engine 可以为 my-user 创建服务绑定。 服务实例的帐户所有者完成以下步骤以创建定制服务标识。

  1. 为创建 Code Engine 服务绑定的用户创建 IAM 资源组

    1. 启动 Access(IAM)概述
    2. 选择 管理 > 帐户 > 资源组 > 创建资源组
    3. 创建资源组; 例如,CodeEngine_servicebindings_resourcegroup
  2. 在同一资源组中创建要绑定到的服务实例。 对于此示例,请在 CodeEngine_servicebindings_resource group 资源组中创建 IBM Cloudant 服务实例。

  3. 为创建 Code Engine 服务绑定的用户 创建 IAM 访问组

    1. 启动 Access(IAM)概述
    2. 选择 管理 > 访问权 (IAM) > 访问组
    3. 创建组; 例如,CodeEngine_servicebindings_accessgroup
    4. 在此新访问组中,单击 访问权 选项卡,并为 Code Engine 服务分配以下访问策略。
      • 对于“服务”,选择 Code Engine
      • 对于“资源”,选择您在上一步中创建的特定资源组; 例如,CodeEngine_servicebindings_resourcegroup
      • 对于资源组访问权,请选择 Viewer
      • 对于角色和操作,选择 Writer 的服务访问权和 Operator 的平台访问权。
      • 单击 添加 以将访问策略添加到此访问组。
    5. 单击 分配 以将访问策略分配给此访问组。
    6. 在同一资源组中创建要绑定到的服务实例。 对于此示例,请在 CodeEngine_servicebindings_resource group 资源组中创建 IBM Cloudant 服务实例。
  4. my-user 用户添加到此访问组。

  5. 为要绑定到的服务实例创建服务标识。

    1. 启动 Access(IAM)概述
    2. 选择 管理 > 访问权 (IAM) > 服务标识
    3. 创建服务标识; 例如,CodeEngine_servicebindings_serviceid
    4. 在此新服务标识中,单击 分配组。 从“分配访问权”页面中,选择 访问策略。 请勿选择 访问组。 分配以下访问策略:
      • 对于“服务”,选择要绑定到的服务实例; 例如,IBM Cloudant 服务实例。
      • 对于“资源”,选择您为可以为此服务创建服务绑定的用户创建的特定资源组。
      • 对于资源组访问权,请选择 Viewer
      • 对于角色和操作,选择 Manager 的服务访问权和 Operator 的平台访问权。
      • 单击 添加 以将访问策略添加到此服务标识。
    5. 单击 分配 以将访问策略分配给此服务标识。

既然您具有用于服务绑定的定制服务标识,那么必须配置 Code Engine 项目以使用该定制服务标识。

配置项目以使用定制服务标识

要为服务绑定配置 Code Engine 项目以使用您管理的定制服务标识,请使用 ibmcloud ce project update CLI 命令并指定 --binding-service-id 选项。 您可以更新项目以仅将定制服务标识用于 CLI。

project update 命令在选择为当前上下文的项目中工作。 在使用 project update 命令之前,请确认您在期望的项目中。 使用 ibmcloud ce project current 命令可显示当前目标项目的详细信息。 如果需要,请使用 ibmcloud ce project select 命令来选择项目作为当前上下文。

  1. 通过从控制台单击“服务标识”页面上的“详细信息”来查找定制服务标识的标识,或者运行 ibmcloud iam service-ids CLI 命令。

  2. 运行 ibmcloud ce project update 命令。 例如,如果服务标识的标识为 ServiceId-12a3456b-c78d-901e-f2a3b4cabcde:

    ibmcloud ce project update --binding-service-id ServiceId-12a3456b-c78d-901e-f2a3b4cabcde
    

每当运行 project update --binding-service-id 命令时,Code Engine 都会替换任何现有服务标识,并将此服务标识用于服务绑定。

后续步骤

现在,已配置服务绑定的访问权,您已准备好 将服务实例绑定到应用程序,作业或功能工作负载