IBM Cloud Docs
为群集组件配置可信配置文件

为群集组件配置可信配置文件

您可以使用受信任的配置文件来控制对资源的访问,包括 Block Storage, File Storage 或 Cloud Object Storage 等组件。

关于可信档案

通过使用受信任的配置文件,可以为联合用户建立一种灵活、安全的方式来访问 IBM Cloud 账户中的资源。 所有共享企业用户目录中定义的某些属性的联合用户都会映射到一个共同的配置文件,并可共享访问 IBM Cloud 资源。 有了这种通用身份,就可以让有共同访问要求的组织成员一次性自动访问资源,而不必将每个用户添加到一个账户,然后直接或通过访问组授予他们访问权。

可信档案的优点包括

无需长期使用 API 密钥
根据创建受信任配置文件时建立的受信任关系,而不是嵌入式 API 密钥,授予对资源的访问权限。 这就降低了凭证受损或泄露的风险。
集中访问控制
通过单个受信任配置文件管理权限,简化授予、撤销或审核访问权限的流程。
权限范围
坚持最小权限原则,创建具有完成特定任务所需的最低权限的配置文件。

最低访问要求

要在存储组件中使用受信任配置文件,至少需要一套访问策略。

所有存储组件的最低要求

使用以下配置创建信任关系。 VPC 群集需要这些权限。

  • 计算服务类型(可在用户界面的计算资源选项卡下找到):
    • Kubernetes
    • Red Hat OpenShift
  • 受信任的命名空间:kube-system

使用下表中的权限创建访问策略。

所有组件的最低权限
服务名称 需要的许可权 描述
计费 编辑者 允许查看和管理计费数据,如用量、成本和报告。 适用于自动成本跟踪或预算感知操作。
Kubernetes 服务 管理员 使 Kubernetes 集群能够与存储资源交互。
VPC 基础设施服务 作家、编辑、快照远程账户恢复员 实现存储资源的调配和管理。
资源组 查看者 指定应用受信任配置文件的资源组。 对于跨多个资源组的操作,必须指定所有相关资源组。 请注意,如果要使用资源组创建自定义存储类,还必须为资源组的受信任配置文件分配查看器访问权限。

此外,如果计划使用经典基础架构,则必须启用添加/升级存储(存储层)存储管理权限。 要启用这些权限,请导航到用户界面中的受 信任配置文件仪表板,然后选择相关的受信任配置文件。 单击“经典基础结构”,然后展开“销售设备”下的选项,找到权限。

单个存储组件的最低要求

VPC Block Storage

使用以下配置创建信任关系。

  • 计算服务类型(可在用户界面的计算资源选项卡下找到):
    • Kubernetes
    • Red Hat OpenShift
  • 受信任的命名空间:kube-system

使用下表中的权限创建访问策略。

VPC 块存储的最低权限
服务名称 需要的许可权 描述
Kubernetes 服务 运算符 使 Kubernetes 集群能够与块存储资源交互。
VPC 基础设施服务 作家、编辑、快照远程账户恢复员 支持块存储资源的调配、管理和交叉快照操作。
资源组 查看者 指定应用受信任配置文件的资源组。 对于跨多个资源组的操作,必须指定所有相关资源组。 请注意,如果要使用资源组创建自定义存储类,还必须为资源组的受信任配置文件分配查看器访问权限。

经典块存储器

使用以下配置创建信任关系。

  • 计算服务类型(可在用户界面的计算资源选项卡下找到):
    • Kubernetes
    • Red Hat OpenShift
  • 受信任的命名空间:kube-system

添加下表中的权限。 要启用这些权限,必须使用用户界面。 导航至用户界面中的 受信任配置文件仪表板,然后选择相关的受信任配置文件。 单击“经典基础结构”,然后展开选项查找权限。

经典数据块存储的最低权限
服务名称 需要的许可权 描述
Devices 存储管理 可在设备上连接、拆卸和配置经典块存储。
Sales 添加/升级存储(存储层) 授予通过销售 API 订购、升级或修改经典存储产品的权限。

计算资源选项卡中的计算服务类型,而不是计算资源

VPC 文件存储

使用以下配置创建信任关系。

  • 计算服务类型(可在用户界面的计算资源选项卡下找到):
    • Kubernetes
    • Red Hat OpenShift
  • 受信任的命名空间:kube-system

使用下表中的权限创建访问策略。

VPC 文件存储的最小权限
服务名称 需要的许可权 描述
Kubernetes 服务 运算符 使 Kubernetes 集群能够与文件存储资源交互。
VPC 基础设施服务 作家、编辑 支持文件存储资源的调配和管理。
资源组 查看者 指定应用受信任配置文件的资源组。 对于跨多个资源组的操作,必须指定所有相关资源组。 请注意,如果要使用资源组创建自定义存储类,还必须为资源组的受信任配置文件分配查看器访问权限。

经典文件存储器

使用以下配置创建信任关系。

  • 计算服务类型(可在用户界面的计算资源选项卡下找到):
    • Kubernetes
    • Red Hat OpenShift
  • 受信任的命名空间:kube-system

添加下表中的权限。 要启用这些权限,必须使用用户界面。 导航至用户界面中的 受信任配置文件仪表板,然后选择相关的受信任配置文件。 单击“经典基础结构”,然后展开选项查找权限。

经典文件存储的最低权限
服务名称 需要的许可权 描述
Devices 存储管理 可在设备上连接、拆卸和配置经典块存储。
Sales 添加/升级存储(存储层) 授予通过销售 API 订购、升级或修改经典存储产品的权限。

集群自动缩放器

使用以下配置创建信任关系。

  • 计算服务类型(可在用户界面的计算资源选项卡下找到):
    • Kubernetes
    • Red Hat OpenShift
  • 受信任的命名空间:kube-system

使用下表中的权限创建访问策略。

群集自动分隔器的最低权限
服务名称 需要的许可权 描述
Kubernetes 服务 管理员 使 Kubernetes 集群能够与自动分级组件交互。

Object Storage

使用以下配置创建信任关系。

  • 计算服务类型(可在用户界面的计算资源选项卡下找到):
    • Kubernetes
    • Red Hat OpenShift
  • 受信任的命名空间:kube-system

使用下表中的权限创建访问策略。

对象存储的最低权限
服务名称 需要的许可权 描述
Kubernetes 服务 阅读器、查看器 使 Kubernetes 集群能够与 COS 插件交互。
VPC 基础设施服务 阅读器、查看器 启用与 VPC 的通信,以获取 API 调用。
资源组 查看者 指定应用受信任配置文件的资源组。 对于跨多个资源组的操作,必须指定所有相关资源组。

ODF 计费代理

使用以下配置创建信任关系。

  • 计算服务类型(可在用户界面的计算资源选项卡下找到):
    • Kubernetes
    • Red Hat OpenShift
  • 受信任的命名空间:kube-system

使用下表中的权限创建访问策略。

ODF 计费代理的最低权限
服务名称 需要的许可权 描述
计费 编辑者 计费服务。 允许查看和管理计费数据,如用量、成本和报告。 适用于自动成本跟踪或预算感知操作。
Kubernetes 服务 编辑者 使 Kubernetes 集群能够与块存储互动。
VPC 基础设施服务 编辑、作家 允许调配和管理存储资源。
资源组 查看者 指定应用受信任配置文件的资源组。 对于跨多个资源组的操作,必须指定所有相关资源组。

在 CLI 中设置可信配置文件

请按照以下步骤在 CLI 中创建和设置受信任配置文件。

一旦将受信任配置文件添加到群集,就不能将其移除,也不能再为资源使用 API 密钥。 请务必仔细遵循这些步骤,以确保正确设置受信任的配置文件。

  1. 登录到 IBM Cloud CLI。

    ibmcloud login --apikey <API_KEY> -g <RESOURCE_GROUP>
    
  2. 运行命令创建受信任的配置文件。 有关命令选项的完整列表,请参阅 IAM CLI 文档

    ibmcloud iam trusted-profile-create NAME --description "Identity for storage"
    
  3. 将使用范围规则附加到 kube‑system 命名空间。 有关命令选项的完整列表,请参阅 IAM CLI 文档

    ibmcloud iam trusted-profile-rule-create --name NAME --type Profile-CR --cr-type IKS_SA  --conditions claim:namespace,operator:EQUALS,value:kube-system
    
  4. 对于 VPC 群集:为受信任配置文件创建和分配访问策略。 此示例为所有存储组件分配了所需的最小权限。 有关单个组件所需的权限列表,请参阅 单个存储组件的最低要求。 指定要为其分配策略的受信任配置文件的名称或 ID。 有关命令选项的完整列表,请参阅 IAM CLI 文档。 此步骤不适用于传统群集。 为 VPC 基础设施服务添加策略。

    ibmcloud iam trusted-profile-policy-create NAME|ID  --roles Editor,Writer --service-name is
    

    为计费服务添加政策。

    ibmcloud iam trusted-profile-policy-create NAME|ID --roles Editor --service-name billing
    

    为 Kubernetes 服务添加策略。

    ibmcloud iam trusted-profile-policy-create NAME|ID --roles Administrator --service-name "containers-kubernetes"
    

    为应用受信任配置文件的相关资源组添加策略。 指定应用受信任配置文件的资源组。

    ibmcloud iam trusted-profile-policy-create NAME|ID --roles Operator  --resource-type "resource-group" --resource "my-resource-group"
    
  5. 对于传统群集:运行命令向受信任配置文件添加所 需的最低权限。 指定为受信任配置文件创建的用户 ID。

    ibmcloud ks sl user permission-edit TRUSTED_PROFILE_ID --permission NAS_MANAGE,ADD_SERVICE_STORAGE
    
  6. 创建受信任配置文件并分配所需访问策略后,为群集或群集所在的资源组 设置受信任配置文件。 设置受信任配置文件可将其应用于存储组件。

使用用户界面设置受信任的配置文件

请按照以下步骤在 CLI 中创建和设置受信任配置文件。

一旦将受信任配置文件添加到群集,就不能将其移除,也不能再为资源使用 API 密钥。 请务必仔细遵循这些步骤,以确保正确设置受信任的配置文件。

  1. 登录 IBM Cloud 账户并导航至“受信任的配置文件”页面。

  2. 创建可信档案。

  3. 与 IBM Cloud Kubernetes Service 服务建立信任关系。

    1. 在“选择可信实体类型”部分,单击“计算资源”。
    2. 创建信任关系下,选择 Kubernetes.
    3. 选择所有服务资源。 然后添加一个条件,当 Namespace 等于 kube-system 时允许访问。
      • 注意:您可以选择账户中存在的特定资源。
  4. 单击创建

  5. 仅限 VPC。 在受信任配置文件中添加访问策略。

    1. 从“受信任的配置文件”页面,单击刚刚创建的受信任的配置文件。
    2. 从“访问”选项卡,单击“分配访问”。
    3. 在“如何分配访问权限?”部分,单击“访问策略”。
    4. 添加服务和角色,以满足相关组件的 最低要求。 将政策应用于所有资源。
  6. 仅限经典。 为受信任的配置文件添加权限。

    1. 从“受信任的配置文件”页面,单击刚刚创建的受信任的配置文件。
    2. 导航至“经典基础设施”选项卡。
    3. 在权限下拉菜单中,选择所需的权限,以满足相关组件的 最低要求

使用应用程序接口设置受信任的配置文件

  1. 创建可信档案。

    curl --request POST \
    --url https://iam.test.cloud.ibm.com/v1/profiles \
    --header 'Content-Type: application/json' \
    --data '{
        "name":"<PROFILE_NAME>",
        "account_id":"<ACCOUNT_ID>"
    }'
    
  2. 将使用范围规则附加到 kube‑system 命名空间。

    curl --request POST \
    --url https://iam.test.cloud.ibm.com/v1/profiles/<PROFILE_NAME>/rules \
    --header 'Content-Type: application/json' \
    --data '{
        "type": "Profile-CR",
        "cr_type":"IKS_SA",
        "conditions": [
            {
                "claim": "namespace",
                "operator": "EQUALS",
                "value": "\"kube-system\""
            }
        ]
    }'
    
  3. 对于 VPC 群集:将访问策略附加到 VPC 组件。 这些示例分配了所有存储组件所需的最低权限。

    curl --request POST \
    --url https://iam.test.cloud.ibm.com/v1/policies \
    --header 'Content-Type: application/json' \
    --data '{
        "type": "access",
        "description": "Writer, Operator role for VPC infrastructure services",
        "subjects": [
            {
                "attributes": [
                    {
                        "name": "iam_id",
                        "value": "<IAM_PROFILE>"
                    }
                ]
            }
        ],
        "roles": [
            {
                "role_id": "crn:v1:bluemix:public:iam::::serviceRole:Writer"
            },
            {
                "role_id": "crn:v1:bluemix:public:iam::::role:Editor"
            }
        ],
        "resources": [
            {
                "attributes": [
                    {
                        "name": "accountId",
                        "value": "<ACCOUNT_ID>"
                    },
                    {
                        "name": "serviceName",
                        "value": "is"
                    }
                ]
            }
        ]
    }'
    
    curl --request POST \
    --url https://iam.test.cloud.ibm.com/v1/policies \
    --header 'Content-Type: application/json' \
    --data '{
        "type": "access",
        "description": "Editor role for billing services",
        "subjects": [
            {
                "attributes": [
                    {
                        "name": "iam_id",
                        "value": "<IAM_PROFILE>"
                    }
                ]
            }
        ],
        "roles": [
            {
                "role_id": "crn:v1:bluemix:public:iam::::role:Editor"
            }
        ],
        "resources": [
            {
                "attributes": [
                    {
                        "name": "accountId",
                        "value": "<ACCOUNT_ID>"
                    },
                    {
                        "name": "serviceName",
                        "value": "billing"
                    }
                ]
            }
        ]
    }'
    
    curl --request POST \
    --url https://iam.test.cloud.ibm.com/v1/policies \
    --header 'Content-Type: application/json' \
    --data '{	
        "type": "access",
        "description": "Administrator role for containers-kubernetes services",
        "subjects": [
            {
                "attributes": [
                    {
                        "name": "iam_id",
                        "value": "<IAM_PROFILE>"
                    }
                ]
            }
        ],
        "roles": [
            {
                "role_id": "crn:v1:bluemix:public:iam::::role:Administrator"
            }
        ],
        "resources": [
            {
                "attributes": [
                    {
                        "name": "accountId",
                        "value": "<ACCOUNT_ID>"
                    },
                    {
                        "name": "serviceName",
                        "value": "containers-kubernetes"
                    }
                ]
            }
        ]
    }'
    
    curl --request POST \
    --url https://iam.test.cloud.ibm.com/v1/policies \
    --header 'Content-Type: application/json' \
    --data '{	
        "type": "access",
        "subjects": [
            {
                "attributes": [
                    {
                        "name": "iam_id",
                        "value": "<IAM_PROFILE>"
                    }
                ]
            }
        ],
        "roles": [
            {
                "role_id": "crn:v1:bluemix:public:iam::::role:Operator"
            }
        ],
        "resources": [
            {
                "attributes": [
                    {
                        "name": "accountId",
                        "value": "<ACCOUNT_ID>"
                    },
                    {
                        "name": "resource",
                        "value": "<RESOURCE_GROUP_ID>"
                    },
                    {
                        "name": "resourceType",
                        "value": "resource-group"
                    },
                ]
            }
        ]
    }
    
  4. 对于传统群集:使用用户界面为受信任配置文件添加权限。

    1. 登录 IBM Cloud 账户并导航至“受信任的配置文件”页面。
    2. 单击您刚刚创建的受信任配置文件。
    3. 导航至“经典基础设施”选项卡。
    4. 在权限下拉菜单中,选择所需的权限,以满足相关组件的 最低要求

为群集或资源组设置受信任配置文件

为群集设置受信任配置文件时,它适用于存储组件。 您可以为单个群集或资源组设置受信任配置文件。

一旦将受信任配置文件添加到群集,就不能将其移除,也不能再为资源使用 API 密钥。 请务必仔细遵循这些步骤,以确保正确设置受信任的配置文件。

  1. 确保创建的可信配置文件满足 存储组件的最低要求

  2. 将受信任配置文件分配给群集或群集所在的资源组。 如果将受信任配置文件分配给资源组,它将适用于资源组中的所有群集。

    要为群集分配可信配置文件。

    ibmcloud ks experimental trusted-profile set --trusted-profile PROFILE --cluster CLUSTER [--output OUTPUT] [-q]
    
    --cluster CLUSTER
    要设置受信任配置文件的群组 ID。 要获取群集 ID,请运行 ibmcloud ks cluster get
    --trusted-profile PROFILE
    受信任的配置文件 ID。 要获取受信任配置文件 ID,请运行 ibmcloud iam trusted-profiles
    --output OUTPUT
    以提供的格式打印命令输出。 接受值:json
    -q
    不显示每日消息或更新提示。

    要将可信配置文件分配给资源组。

    ibmcloud ks experimental trusted-profile default set --region REGION --resource-group GROUP --trusted-profile PROFILE [--output OUTPUT] [-q]
    
    --region REGION
    资源组所在的区域。 要获取资源组的详细信息,请运行 ibmcloud resource group
    --resource-group GROUP
    要设置受信任配置文件的资源组 ID。 要列出资源组,请运行 ibmcloud resource groups
    --trusted-profile PROFILE
    受信任的配置文件 ID。 要获取受信任配置文件 ID,请运行 ibmcloud iam trusted-profiles
    --output OUTPUT
    以提供的格式打印命令输出。 接受值:json
    -q
    不显示每日消息或更新提示。
  3. 验证受信任配置文件是否已添加到群集。

    ibmcloud ks experimental trusted-profile get --cluster CLUSTER
    

    示例输出。

    Fetching trusted-profile for the cluster...
    OK
    Cluster a1bc2de45fgh6ijklmn7op is configured with trusted-profile Profile-a12bc34-1111-1111-1234-a123bc456
    

局限性和考虑因素

使用受信任的配置文件前,请查看以下限制和注意事项。

不可逆转地过渡到可信配置文件
一旦在群集或资源组级别配置了可信配置文件,就不支持恢复使用 API 密钥。 请仔细按照步骤操作,以确保正确配置受信任的配置文件。
验证范围仅限于 kube-system 命名空间。
可信配置文件信任验证目前仅限于 Kubernetes 和 Red Hat OpenShift 集群的 kube-system 命名空间。 如果用户尝试使用其他可信配置文件功能或超出此范围的配置,可能会遇到问题。
VPC Block Storage 卷的用户标签
由于一个已知问题,在实施受信任配置文件时,VPC Block Storage 卷上的用户标记更新可能不会显示。