A.18. ロールを操作する REST API

radosgw-admin role コマンドの他に、REST API を使用してロールを操作できます。

REST 管理 API を呼び出すには、admin キャップを持つユーザーを作成します。

例:

[root@host01 ~]# radosgw-admin --uid TESTER --display-name "TestUser" --access_key TESTER --secret test123 user create
[root@host01 ~]# radosgw-admin caps add --uid="TESTER" --caps="roles=*"

  • ロールを作成します。

    構文

    POST “<hostname>?Action=CreateRole&RoleName=ROLE_NAME&Path=PATH_TO_FILE&AssumeRolePolicyDocument=TRUST_RELATIONSHIP_POLICY_DOCUMENT

    例:

    POST “<hostname>?Action=CreateRole&RoleName=S3Access&Path=/application_abc/component_xyz/&AssumeRolePolicyDocument={"Version":"2022-06-17","Statement":[{"Effect":"Allow","Principal":{"AWS":["arn:aws:iam:::user/TESTER"]},"Action":["sts:AssumeRole"]}]}”

    応答の例

    <role>
      <id>8f41f4e0-7094-4dc0-ac20-074a881ccbc5</id>
      <name>S3Access</name>
      <path>/application_abc/component_xyz/</path>
      <arn>arn:aws:iam:::role/application_abc/component_xyz/S3Access</arn>
      <create_date>2022-06-23T07:43:42.811Z</create_date>
      <max_session_duration>3600</max_session_duration>
      <assume_role_policy_document>{"Version":"2022-06-17","Statement":[{"Effect":"Allow","Principal":{"AWS":["arn:aws:iam:::user/TESTER"]},"Action":["sts:AssumeRole"]}]}</assume_role_policy_document>
    </role>

  • ロールを取得します。

    構文

    POST “<hostname>?Action=GetRole&RoleName=ROLE_NAME

    例:

    POST “<hostname>?Action=GetRole&RoleName=S3Access”

    応答の例

    <role>
      <id>8f41f4e0-7094-4dc0-ac20-074a881ccbc5</id>
      <name>S3Access</name>
      <path>/application_abc/component_xyz/</path>
      <arn>arn:aws:iam:::role/application_abc/component_xyz/S3Access</arn>
      <create_date>2022-06-23T07:43:42.811Z</create_date>
      <max_session_duration>3600</max_session_duration>
      <assume_role_policy_document>{"Version":"2022-06-17","Statement":[{"Effect":"Allow","Principal":{"AWS":["arn:aws:iam:::user/TESTER"]},"Action":["sts:AssumeRole"]}]}</assume_role_policy_document>
    </role>

  • ロールを一覧表示します。

    構文

    POST “<hostname>?Action=GetRole&RoleName=ROLE_NAME&PathPrefix=PATH_PREFIX

    要求の例

    POST “<hostname>?Action=ListRoles&RoleName=S3Access&PathPrefix=/application”

    応答の例

    <role>
      <id>8f41f4e0-7094-4dc0-ac20-074a881ccbc5</id>
      <name>S3Access</name>
      <path>/application_abc/component_xyz/</path>
      <arn>arn:aws:iam:::role/application_abc/component_xyz/S3Access</arn>
      <create_date>2022-06-23T07:43:42.811Z</create_date>
      <max_session_duration>3600</max_session_duration>
      <assume_role_policy_document>{"Version":"2022-06-17","Statement":[{"Effect":"Allow","Principal":{"AWS":["arn:aws:iam:::user/TESTER"]},"Action":["sts:AssumeRole"]}]}</assume_role_policy_document>
    </role>

  • assume ロールポリシードキュメントを更新します。

    構文

    POST “<hostname>?Action=UpdateAssumeRolePolicy&RoleName=ROLE_NAME&PolicyDocument=TRUST_RELATIONSHIP_POLICY_DOCUMENT

    例:

    POST “<hostname>?Action=UpdateAssumeRolePolicy&RoleName=S3Access&PolicyDocument={"Version":"2022-06-17","Statement":[{"Effect":"Allow","Principal":{"AWS":["arn:aws:iam:::user/TESTER2"]},"Action":["sts:AssumeRole"]}]}”

  • ロールに割り当てられたポリシーを更新します。

    構文

    POST “<hostname>?Action=PutRolePolicy&RoleName=ROLE_NAME&PolicyName=POLICY_NAME&PolicyDocument=TRUST_RELATIONSHIP_POLICY_DOCUMENT

    例:

    POST “<hostname>?Action=PutRolePolicy&RoleName=S3Access&PolicyName=Policy1&PolicyDocument={"Version":"2022-06-17","Statement":[{"Effect":"Allow","Action":["s3:CreateBucket"],"Resource":"arn:aws:s3:::example_bucket"}]}”

  • ロールに割り当てられているパーミッションポリシー名を一覧表示します。

    構文

    POST “<hostname>?Action=ListRolePolicies&RoleName=ROLE_NAME

    例:

    POST “<hostname>?Action=ListRolePolicies&RoleName=S3Access”
    
    <PolicyNames>
      <member>Policy1</member>
    </PolicyNames>

  • ロールに割り当てられたパーミッションポリシーを取得します。

    構文

    POST “<hostname>?Action=GetRolePolicy&RoleName=ROLE_NAME&PolicyName=POLICY_NAME

    例:

    POST “<hostname>?Action=GetRolePolicy&RoleName=S3Access&PolicyName=Policy1”
    
    <GetRolePolicyResult>
      <PolicyName>Policy1</PolicyName>
      <RoleName>S3Access</RoleName>
      <Permission_policy>{"Version":"2022-06-17","Statement":[{"Effect":"Allow","Action":["s3:CreateBucket"],"Resource":"arn:aws:s3:::example_bucket"}]}</Permission_policy>
    </GetRolePolicyResult>

  • ロールに割り当てられたポリシーを削除します。

    構文

    POST “hostname>?Action=DeleteRolePolicy&RoleName=ROLE_NAME&PolicyName=POLICY_NAME

    例:

    POST “<hostname>?Action=DeleteRolePolicy&RoleName=S3Access&PolicyName=Policy1”

  • ロールを削除します。

    注記

    ロールは、パーミッションポリシーが割り当てられていない場合にのみ削除できます。

    構文

    POST “<hostname>?Action=DeleteRole&RoleName=ROLE_NAME"

    POST “<hostname>?Action=DeleteRole&RoleName=S3Access"

関連情報

  • 詳細は、Red Hat Ceph Storage Object Gateway ガイドロールの管理 セクションを参照してください。