9.5. 角色管理


作为存储管理员,您可以使用 radosgw-admin 命令创建、删除或更新角色以及与该角色关联的权限。

角色与用户类似,并附加了权限策略。它可以被任何身份假定。如果用户假定角色,则一组动态创建的临时凭据将返回给用户。角色可用于委派对用户、没有权限访问某些 S3 资源的应用程序和服务的访问权限。

9.5.1. 创建角色

使用 radosgw-admin role create 命令为用户创建一个角色。您需要在命令中创建具有 assume-role-policy-doc 参数的用户,这是授予授予角色权限的实体的信任关系策略文档。

先决条件

  • 一个正在运行的 Red Hat Ceph Storage 集群。
  • 安装 Ceph 对象网关.
  • Ceph 对象网关节点的根级别访问权限.
  • 已创建 S3 存储桶。
  • 创建的用户具有访问权限的 S3 用户。

流程

  • 创建角色:

    语法

    radosgw-admin role create --role-name=ROLE_NAME [--path=="PATH_TO_FILE"] [--assume-role-policy-doc=TRUST_RELATIONSHIP_POLICY_DOCUMENT]

    示例

    [root@host01 ~]# radosgw-admin role create --role-name=S3Access1 --path=/application_abc/component_xyz/ --assume-role-policy-doc=\{\"Version\":\"2012-10-17\",\"Statement\":\[\{\"Effect\":\"Allow\",\"Principal\":\{\"AWS\":\[\"arn:aws:iam:::user/TESTER\"\]\},\"Action\":\[\"sts:AssumeRole\"\]\}\]\}
    
    {
      "RoleId": "ca43045c-082c-491a-8af1-2eebca13deec",
      "RoleName": "S3Access1",
      "Path": "/application_abc/component_xyz/",
      "Arn": "arn:aws:iam:::role/application_abc/component_xyz/S3Access1",
      "CreateDate": "2022-06-17T10:18:29.116Z",
      "MaxSessionDuration": 3600,
      "AssumeRolePolicyDocument": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Principal\":{\"AWS\":[\"arn:aws:iam:::user/TESTER\"]},\"Action\":[\"sts:AssumeRole\"]}]}"
    }

    --path 的值默认为 /

9.5.2. 获取角色

使用 get 命令获取有关角色的信息。

先决条件

  • 一个正在运行的 Red Hat Ceph Storage 集群。
  • 安装 Ceph 对象网关.
  • Ceph 对象网关节点的根级别访问权限.
  • 已创建 S3 存储桶。
  • 已创建角色。
  • 创建的用户具有访问权限的 S3 用户。

流程

  • 获取有关角色的信息:

    语法

    radosgw-admin role get --role-name=ROLE_NAME

    示例

    [root@host01 ~]# radosgw-admin role get --role-name=S3Access1
    
    {
      "RoleId": "ca43045c-082c-491a-8af1-2eebca13deec",
      "RoleName": "S3Access1",
      "Path": "/application_abc/component_xyz/",
      "Arn": "arn:aws:iam:::role/application_abc/component_xyz/S3Access1",
      "CreateDate": "2022-06-17T10:18:29.116Z",
      "MaxSessionDuration": 3600,
      "AssumeRolePolicyDocument": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Principal\":{\"AWS\":[\"arn:aws:iam:::user/TESTER\"]},\"Action\":[\"sts:AssumeRole\"]}]}"
    }

其它资源

  • 详情请参阅 Red Hat Ceph Storage Object Gateway 指南中的创建 角色 部分。

9.5.3. 列出角色

您可以使用 list 命令列出特定路径 中的角色

先决条件

  • 一个正在运行的 Red Hat Ceph Storage 集群。
  • 安装 Ceph 对象网关.
  • Ceph 对象网关节点的根级别访问权限.
  • 已创建 S3 存储桶。
  • 已创建角色。
  • 创建的用户具有访问权限的 S3 用户。

流程

  • 列出角色:

    语法

    radosgw-admin role list

    示例

    [root@host01 ~]# radosgw-admin role list
    
    [
        {
            "RoleId": "85fb46dd-a88a-4233-96f5-4fb54f4353f7",
            "RoleName": "kvm-sts",
            "Path": "/application_abc/component_xyz/",
            "Arn": "arn:aws:iam:::role/application_abc/component_xyz/kvm-sts",
            "CreateDate": "2022-09-13T11:55:09.39Z",
            "MaxSessionDuration": 7200,
            "AssumeRolePolicyDocument": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Principal\":{\"AWS\":[\"arn:aws:iam:::user/kvm\"]},\"Action\":[\"sts:AssumeRole\"]}]}"
        },
        {
            "RoleId": "9116218d-4e85-4413-b28d-cdfafba24794",
            "RoleName": "kvm-sts-1",
            "Path": "/application_abc/component_xyz/",
            "Arn": "arn:aws:iam:::role/application_abc/component_xyz/kvm-sts-1",
            "CreateDate": "2022-09-16T00:05:57.483Z",
            "MaxSessionDuration": 3600,
            "AssumeRolePolicyDocument": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Principal\":{\"AWS\":[\"arn:aws:iam:::user/kvm\"]},\"Action\":[\"sts:AssumeRole\"]}]}"
        }
    ]

9.5.4. 更新角色的 assume 角色策略文档

您可以更新假定角色策略文档,该策略授予实体权限,以通过 modify 命令假定角色。

先决条件

  • 一个正在运行的 Red Hat Ceph Storage 集群。
  • 安装 Ceph 对象网关.
  • Ceph 对象网关节点的根级别访问权限.
  • 已创建 S3 存储桶。
  • 已创建角色。
  • 创建的用户具有访问权限的 S3 用户。

流程

  • 修改角色的 assume 角色策略文档:

    语法

    radosgw-admin role-trust-policy modify --role-name=ROLE_NAME --assume-role-policy-doc=TRUST_RELATIONSHIP_POLICY_DOCUMENT

    示例

    [root@host01 ~]# radosgw-admin role-trust-policy modify --role-name=S3Access1 --assume-role-policy-doc=\{\"Version\":\"2012-10-17\",\"Statement\":\[\{\"Effect\":\"Allow\",\"Principal\":\{\"AWS\":\[\"arn:aws:iam:::user/TESTER\"\]\},\"Action\":\[\"sts:AssumeRole\"\]\}\]\}
    
    {
      "RoleId": "ca43045c-082c-491a-8af1-2eebca13deec",
      "RoleName": "S3Access1",
      "Path": "/application_abc/component_xyz/",
      "Arn": "arn:aws:iam:::role/application_abc/component_xyz/S3Access1",
      "CreateDate": "2022-06-17T10:18:29.116Z",
      "MaxSessionDuration": 3600,
      "AssumeRolePolicyDocument": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Principal\":{\"AWS\":[\"arn:aws:iam:::user/TESTER\"]},\"Action\":[\"sts:AssumeRole\"]}]}"
    }

9.5.5. 获取附加到角色的权限策略

您可以使用 get 命令获取附加到角色的特定权限策略。

先决条件

  • 一个正在运行的 Red Hat Ceph Storage 集群。
  • 安装 Ceph 对象网关.
  • Ceph 对象网关节点的根级别访问权限.
  • 已创建 S3 存储桶。
  • 已创建角色。
  • 创建的用户具有访问权限的 S3 用户。

流程

  • 获取权限策略:

    语法

    radosgw-admin role-policy get --role-name=ROLE_NAME --policy-name=POLICY_NAME

    示例

    [root@host01 ~]# radosgw-admin role-policy get --role-name=S3Access1 --policy-name=Policy1
    
    {
      "Permission policy": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Action\":[\"s3:*\"],\"Resource\":\"arn:aws:s3:::example_bucket\"}]}"
    }

9.5.6. 删除角色

您只能在删除附加的权限策略后删除角色。

先决条件

  • 一个正在运行的 Red Hat Ceph Storage 集群。
  • 安装 Ceph 对象网关.
  • Ceph 对象网关节点的根级别访问权限.
  • 已创建角色。
  • 已创建 S3 存储桶。
  • 创建的用户具有访问权限的 S3 用户。

流程

  1. 删除附加到角色的策略:

    语法

    radosgw-admin role policy delete --role-name=ROLE_NAME --policy-name=POLICY_NAME

    示例

    [root@host01 ~]# radosgw-admin role policy delete --role-name=S3Access1 --policy-name=Policy1

  2. 删除角色:

    语法

    radosgw-admin role delete --role-name=ROLE_NAME

    示例

    [root@host01 ~]# radosgw-admin role delete --role-name=S3Access1

9.5.7. 更新附加到角色的策略

您可以使用 put 命令添加或更新附加到角色中的内联策略。

先决条件

  • 一个正在运行的 Red Hat Ceph Storage 集群。
  • 安装 Ceph 对象网关.
  • Ceph 对象网关节点的根级别访问权限.
  • 已创建 S3 存储桶。
  • 已创建角色。
  • 创建的用户具有访问权限的 S3 用户。

流程

  • 更新内联策略:

    语法

    radosgw-admin role-policy put --role-name=ROLE_NAME --policy-name=POLICY_NAME --policy-doc=PERMISSION_POLICY_DOCUMENT

    示例

    [root@host01 ~]# radosgw-admin role-policy put --role-name=S3Access1 --policy-name=Policy1 --policy-doc=\{\"Version\":\"2012-10-17\",\"Statement\":\[\{\"Effect\":\"Allow\",\"Action\":\[\"s3:*\"\],\"Resource\":\"arn:aws:s3:::example_bucket\"\}\]\}

    在本例中,您可以将 Policy1 附加到角色 S3Access1 中,它允许对 example_bucket 的所有 S3 操作。

9.5.8. 列出附加到角色的权限策略

您可以使用 list 命令列出附加到角色的权限策略的名称。

先决条件

  • 一个正在运行的 Red Hat Ceph Storage 集群。
  • 安装 Ceph 对象网关.
  • Ceph 对象网关节点的根级别访问权限.
  • 已创建 S3 存储桶。
  • 已创建角色。
  • 创建的用户具有访问权限的 S3 用户。

流程

  • 列出权限策略的名称:

    语法

    radosgw-admin role-policy list --role-name=ROLE_NAME

    示例

    [root@host01 ~]# radosgw-admin role-policy list --role-name=S3Access1
    
    [
      "Policy1"
    ]

9.5.9. 删除附加到角色的策略

您可以使用 rm 命令删除附加到角色的权限策略。

先决条件

  • 一个正在运行的 Red Hat Ceph Storage 集群。
  • 安装 Ceph 对象网关.
  • Ceph 对象网关节点的根级别访问权限.
  • 已创建 S3 存储桶。
  • 已创建角色。
  • 创建的用户具有访问权限的 S3 用户。

流程

  • 删除权限策略:

    语法

    radosgw-admin role policy delete --role-name=ROLE_NAME --policy-name=POLICY_NAME

    示例

    [root@host01 ~]# radosgw-admin role policy delete --role-name=S3Access1 --policy-name=Policy1

9.5.10. 更新角色的会话持续时间

您可以使用 update 命令更新角色的会话持续时间,以控制用户可以使用提供的凭证登录到帐户中的时间长度。

先决条件

  • 一个正在运行的 Red Hat Ceph Storage 集群。
  • 安装 Ceph 对象网关.
  • Ceph 对象网关节点的根级别访问权限.
  • 已创建 S3 存储桶。
  • 已创建角色。
  • 创建的用户具有访问权限的 S3 用户。

流程

  • 使用 update 命令更新 max-session-duration :

    语法

    [root@node1 ~]# radosgw-admin role update --role-name=ROLE_NAME --max-session-duration=7200

    示例

    [root@node1 ~]# radosgw-admin role update --role-name=test-sts-role --max-session-duration=7200

验证

  • 列出角色以验证更新:

    示例

    [root@node1 ~]#radosgw-admin role list
    [
        {
            "RoleId": "d4caf33f-caba-42f3-8bd4-48c84b4ea4d3",
            "RoleName": "test-sts-role",
            "Path": "/",
            "Arn": "arn:aws:iam:::role/test-role",
            "CreateDate": "2022-09-07T20:01:15.563Z",
            "MaxSessionDuration": 7200,				<<<<<<
            "AssumeRolePolicyDocument": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Principal\":{\"AWS\":[\"arn:aws:iam:::user/kvm\"]},\"Action\":[\"sts:AssumeRole\"]}]}"
        }
    ]

其它资源

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.