IBM Cloud Docs
カタログへのアクセス権限の割り当て

カタログへのアクセス権限の割り当て

アカウント所有者は、ユーザーが実行するタスクに応じて特定のカタログ管理アクセス権をユーザーに割り当てます。 アクセス権を割り当てるこのプロセスを簡素化するため、アクセス・グループを使用してユーザーの集合を 1 つのエンティティーに編成できます。 このようにして、対象グループに 1 つのポリシーを一度割り当てると、その後、必要に応じてそのグループに関してユーザーを追加したり削除したりできます。

詳しくは、IBM Cloud におけるアクセスの管理を参照してください。

コンソールでのアクセス・グループのセットアップ

アクセス・グループの作成と、各グループへの特定の IAM ポリシーの割り当てについて詳しくは、以下のセクションを参照してください。

コンソールでの管理者アクセス権限

IBM Cloud カタログに対するアカウント・レベルのフィルターを設定するには、管理者アクセスが必要です。

  1. IBM Cloud アカウントにログインします。
  2. IBM Cloud コンソールで 管理 > アクセス (IAM) > アクセス・グループに移動します。
  3. 「作成」 をクリックします。
  4. グループ名として private-catalog-admins と入力し、 「作成」 をクリックします。
  5. 「アクセス権限」 > 「アクセス権限の割り当て」 をクリックします。
  6. サービスのリストからカタログ管理を選択します。
  7. ユーザーがアクセスするようにするカタログを選択します。
  8. 「プラットフォーム・アクセス」セクションで、 管理者 役割を選択します。
  9. 追加 > 割り当て をクリックします。

コンソールでのエディター・アクセス権限

プライベート・カタログの作成、プライベート・カタログ・レベルのフィルターの設定、プライベート・カタログへのソフトウェアの追加、およびソフトウェアの更新、非推奨、復元を行うには、エディター・アクセスが必要です。

  1. アクセス・グループ に移動して 作成 をクリックします。
  2. グループ名として private-catalog-editors と入力し、 「作成」 をクリックします。
  3. 「アクセス権限」 > 「アクセス権限の割り当て」 をクリックします。
  4. サービスのリストからカタログ管理を選択します。
  5. ユーザーがアクセスするようにするカタログを選択します。
  6. 「プラットフォーム・アクセス」セクションで、 エディター 役割を選択します。
  7. 追加 をクリックします。
  8. サービスのリストからKubernetes Serviceを選択します。
  9. クラスターを選択し、 管理者 役割と 管理者 役割を選択します。
  10. 追加 をクリックします。
  11. サービスのリストからSchematicsを選択します。
  12. 管理者 役割を選択します。
  13. 追加 > 割り当て をクリックします。

コンソールでのビューアー・アクセス権限

プライベート・カタログ、フィルター処理された IBM Cloud カタログ、およびフィルター設定を表示するには、ビューアー・アクセスが必要です。

  1. アクセス・グループ に移動して 作成 をクリックします。
  2. グループ名として private-catalog-viewers と入力し、 「作成」 をクリックします。
  3. 「アクセス権限」 > 「アクセス権限の割り当て」 をクリックします。
  4. サービスのリストからカタログ管理を選択します。
  5. ユーザーがアクセスするようにするカタログを選択します。
  6. 「プラットフォーム・アクセス」セクションで、 ビューアー 役割を選択します。
  7. 追加 > 割り当て をクリックします。

プライベート・カタログが割り当てられているリソース・グループに対するビューアー権限も必要です。 プライベート・カタログを作成するためのステップを実行するときに、プライベート・カタログをリソース・グループに割り当てることができます。 詳しくは、すべてのアカウント・ユーザーのための IBM Cloud カタログのカスタマイズを参照してください。

プライベート・カタログのリソース・グループに対するビューアー権限を割り当てるには、以下の手順を使用します。

  1. ユーザー に移動し、ユーザーを選択します。
  2. アクセス > アクセス権の割り当てを選択します。
  3. サービスのリストからすべての ID およびアクセス対応サービスを選択します。
  4. 選択した属性に基づいてアクセス権限のスコープを特定のリソースに設定し、プライベート・カタログのリソース・グループを選択します。
  5. プラットフォーム・アクセスに対して、ビューアー役割を選択します。
  6. 追加 > 割り当て をクリックします。

コンソールでのアクセス・グループへのユーザーの追加

アクセス・グループをセットアップした後、以下のステップを実行して、ユーザーをグループに追加します。

  1. ユーザー に移動して、 ユーザーの招待 をクリックします。
  2. ユーザーの E メール・アドレスを指定します。 1 つの招待で複数のユーザーを招待すると、すべてのユーザーに同じアクセス権限が割り当てられます。
  3. 以前に作成した 3 つのアクセス・グループのいずれかを選択し、 追加> 招待 とクリックします。
  4. 他のアクセス・グループにユーザーを追加する場合、上記の手順を繰り返します。

または、トラステッド・プロファイルをアクセス・グループに追加することで、ユーザーにアクセス権限を付与できます。 詳しくは、優れたトラステッド・プロファイル戦略とはおよびトラステッド・プロファイルの作成を参照してください。

CLI を使用したアクセス・グループのセットアップ

アクセス権限を割り当てるには、ibmcloud iam user-policy-create コマンドを実行します。

CLI を使用した管理者アクセス権限

以下のコマンドを実行して、管理者アクセス権限を割り当てます。

ibmcloud iam user-policy-create USER_NAME --roles Administrator --service-name globalcatalog-collection

CLI を使用したエディター・アクセス権限

次のコマンドを実行して、エディター・アクセス権限を割り当てます。

ibmcloud iam user-policy-create USER_NAME --roles Editor --service-name globalcatalog-collection

CLI を使用したビューアー・アクセス権限

次のコマンドを実行して、ビューアー・アクセス権限を設定します。

ibmcloud iam user-policy-create USER_NAME --roles Viewer --service-name globalcatalog-collection

CLI を使用したアクセス・グループへのユーザーの追加

CLI を使用してアクセス・グループにユーザーを追加するには、ibmcloud iam access-group-user-add コマンドを実行します。

ibmcloud iam access-group-user-add GROUP_NAME USER_NAME [USER_NAME2...]

例えば、以下のコマンドは、name@example.com アクセス・グループにユーザー example_group を追加します。

ibmcloud iam access-group-user-add example_group name@example.com

または、トラステッド・プロファイルをアクセス・グループに追加することで、ユーザーにアクセス権限を付与できます。 詳しくは、優れたトラステッド・プロファイル戦略とはおよびトラステッド・プロファイルの作成を参照してください。

API を使用したアクセス・グループのセットアップ

アクセス権限を割り当てるには、以下の例に示されているように、IAM ポリシー管理 API を呼び出します。 role_id 変数を、割り当てたい役割 (ViewerEditor、またはAdministrator) に置き換えます。

curl -X POST 'https://iam.cloud.ibm.com/v1/policies' -H 'Authorization: Bearer $TOKEN' -H 'Content-Type: application/json' -d '{
  "type": "access",
  "description": "Editor role for SERVICE_NAME RESOURCE_NAME",
  "subjects": [
    {
      "attributes": [
        {
          "name": "iam_id",
          "value": "IBMid-123453user"
        }
      ]
    }
  ],
  "roles":[
    {
      "role_id": "crn:v1:bluemix:public:iam::::role:Editor"
    }
  ],
  "resources":[
    {
      "attributes": [
        {
          "name": "accountId",
          "value": "$ACCOUNT_ID"
        },
        {
          "name": "serviceName",
          "value": "$SERVICE_NAME"
        },
        {
          "name": "resource",
          "value": "$RESOURCE_NAME",
          "operator": "stringEquals"
        }
      ]
    }
  ]
}'
SubjectAttribute subjectAttribute = new SubjectAttribute.Builder()
        .name("iam_id")
        .value(EXAMPLE_USER_ID)
        .build();

PolicySubject policySubjects = new PolicySubject.Builder()
        .addAttributes(subjectAttribute)
        .build();

PolicyRole policyRoles = new PolicyRole.Builder()
        .roleId("crn:v1:bluemix:public:iam::::role:Viewer")
        .build();

ResourceAttribute accountIdResourceAttribute = new ResourceAttribute.Builder()
        .name("accountId")
        .value(exampleAccountId)
        .operator("stringEquals")
        .build();

ResourceAttribute serviceNameResourceAttribute = new ResourceAttribute.Builder()
        .name("serviceType")
        .value("service")
        .operator("stringEquals")
        .build();

ResourceTag policyResourceTag = new ResourceTag.Builder()
        .name("project")
        .value("prototype")
        .operator("stringEquals")
        .build();

PolicyResource policyResources = new PolicyResource.Builder()
        .addAttributes(accountIdResourceAttribute)
        .addAttributes(serviceNameResourceAttribute)
        .addTags(policyResourceTag)
        .build();

CreatePolicyOptions options = new CreatePolicyOptions.Builder()
        .type("access")
        .subjects(Arrays.asList(policySubjects))
        .roles(Arrays.asList(policyRoles))
        .resources(Arrays.asList(policyResources))
        .build();

Response<Policy> response = service.createPolicy(options).execute();
Policy policy = response.getResult();

System.out.println(policy);
const policySubjects = [
  {
    attributes: [
      {
        name: 'iam_id',
        value: exampleUserId,
      },
    ],
  },
];
const policyRoles = [
  {
    role_id: 'crn:v1:bluemix:public:iam::::role:Viewer',
  },
];
const accountIdResourceAttribute = {
  name: 'accountId',
  value: exampleAccountId,
  operator: 'stringEquals',
};
const serviceNameResourceAttribute = {
  name: 'serviceType',
  value: 'service',
  operator: 'stringEquals',
};
const policyResourceTag = {
  name: 'project',
  operator: 'stringEquals',
  value: 'prototype',
};
const policyResources = [
  {
    attributes: [accountIdResourceAttribute, serviceNameResourceAttribute],
    tags: [policyResourceTag],
  },
];
const params = {
  type: 'access',
  subjects: policySubjects,
  roles: policyRoles,
  resources: policyResources,
};

iamPolicyManagementService.createPolicy(params)
  .then(res => {
    examplePolicyId = res.result.id;
    console.log(JSON.stringify(res.result, null, 2));
  })
  .catch(err => {
    console.warn(err)
  });
policy_subjects = PolicySubject(
  attributes=[SubjectAttribute(name='iam_id', value=example_user_id)])
policy_roles = PolicyRole(
  role_id='crn:v1:bluemix:public:iam::::role:Viewer')
account_id_resource_attribute = ResourceAttribute(
  name='accountId', value=example_account_id)
service_name_resource_attribute = ResourceAttribute(
  name='serviceType', value='service')
policy_resource_tag = ResourceTag(
  name='project', value='prototype')
policy_resources = PolicyResource(
  attributes=[account_id_resource_attribute,
        service_name_resource_attribute],
  tags=[policy_resource_tag])

policy = iam_policy_management_service.create_policy(
  type='access',
  subjects=[policy_subjects],
  roles=[policy_roles],
  resources=[policy_resources]
).get_result()

print(json.dumps(policy, indent=2))
subjectAttribute := &iampolicymanagementv1.SubjectAttribute{
  Name:  core.StringPtr("iam_id"),
  Value: &exampleUserID,
}
policySubjects := &iampolicymanagementv1.PolicySubject{
  Attributes: []iampolicymanagementv1.SubjectAttribute{*subjectAttribute},
}
policyRoles := &iampolicymanagementv1.PolicyRole{
  RoleID: core.StringPtr("crn:v1:bluemix:public:iam::::role:Viewer"),
}
accountIDResourceAttribute := &iampolicymanagementv1.ResourceAttribute{
  Name:     core.StringPtr("accountId"),
  Value:    core.StringPtr(exampleAccountID),
  Operator: core.StringPtr("stringEquals"),
}
serviceNameResourceAttribute := &iampolicymanagementv1.ResourceAttribute{
  Name:     core.StringPtr("serviceType"),
  Value:    core.StringPtr("service"),
  Operator: core.StringPtr("stringEquals"),
}
policyResourceTag := &iampolicymanagementv1.ResourceTag{
  Name:     core.StringPtr("project"),
  Value:    core.StringPtr("prototype"),
  Operator: core.StringPtr("stringEquals"),
}
policyResources := &iampolicymanagementv1.PolicyResource{
  Attributes: []iampolicymanagementv1.ResourceAttribute{
    *accountIDResourceAttribute, *serviceNameResourceAttribute},
  Tags: []iampolicymanagementv1.ResourceTag{*policyResourceTag},
}

options := iamPolicyManagementService.NewCreatePolicyOptions(
  "access",
  []iampolicymanagementv1.PolicySubject{*policySubjects},
  []iampolicymanagementv1.PolicyRole{*policyRoles},
  []iampolicymanagementv1.PolicyResource{*policyResources},
)

policy, response, err := iamPolicyManagementService.CreatePolicy(options)
if err != nil {
  panic(err)
}
b, _ := json.MarshalIndent(policy, "", "  ")
fmt.Println(string(b))

アクセスの予期される応答のセットアップ

{
  "id": "12345678-abcd-1a2b-a1b2-1234567890ab",
  "type": "access",
  "description": "Viewer role access for all instances of SERVICE_NAME in the account.",
  "subjects": [
    {
      "attributes": [
        {
          "name": "iam_id",
          "value": "IBMid-123453user"
        }
      ]
    }
  ],
  "roles": [
    {
      "roles_id": "crn:v1:bluemix:public:iam::::role:Viewer"
    }
  ],
  "resources": [
    {
      "attributes": [
        {
          "name": "accountId",
          "value": "ACCOUNT_ID",
          "operator": "stringEquals"
        },
        {
          "name": "serviceName",
          "value": "SERVICE_NAME",
          "operator": "stringEquals"
        }
      ]
    },
    {
      "tags": [
        {
          "name": "project",
          "value": "moonshot",
          "operator": "stringEquals"
        },
        {
          "name": "pipeline",
          "value": "test",
          "operator": "stringEquals"
        }
      ]
    }
  ],
  "href": "https://iam.cloud.ibm.com/v1/policies/12345678-abcd-1a2b-a1b2-1234567890ab",
  "created_at": "2018-08-30T14:09:09.907Z",
  "created_by_id": "USER_ID",
  "last_modified_at": "2018-08-30T14:09:09.907Z",
  "last_modified_by_id": "USER_ID",
  "state": "active"
}
{
  "id": "12345678-abcd-1a2b-a1b2-1234567890ab",
  "type": "access",
  "description": "Viewer role access for all instances of SERVICE_NAME in the account.",
  "subjects": [
    {
      "attributes": [
        {
          "name": "iam_id",
          "value": "IBMid-123453user"
        }
      ]
    }
  ],
  "roles": [
    {
      "roles_id": "crn:v1:bluemix:public:iam::::role:Viewer"
    }
  ],
  "resources": [
    {
      "attributes": [
        {
          "name": "accountId",
          "value": "ACCOUNT_ID",
          "operator": "stringEquals"
        },
        {
          "name": "serviceName",
          "value": "SERVICE_NAME",
          "operator": "stringEquals"
        }
      ]
    },
    {
      "tags": [
        {
          "name": "project",
          "value": "moonshot",
          "operator": "stringEquals"
        },
        {
          "name": "pipeline",
          "value": "test",
          "operator": "stringEquals"
        }
      ]
    }
  ],
  "href": "https://iam.cloud.ibm.com/v1/policies/12345678-abcd-1a2b-a1b2-1234567890ab",
  "created_at": "2018-08-30T14:09:09.907Z",
  "created_by_id": "USER_ID",
  "last_modified_at": "2018-08-30T14:09:09.907Z",
  "last_modified_by_id": "USER_ID",
  "state": "active"
}
{
  "id": "12345678-abcd-1a2b-a1b2-1234567890ab",
  "type": "access",
  "description": "Viewer role access for all instances of SERVICE_NAME in the account.",
  "subjects": [
    {
      "attributes": [
        {
          "name": "iam_id",
          "value": "IBMid-123453user"
        }
      ]
    }
  ],
  "roles": [
    {
      "roles_id": "crn:v1:bluemix:public:iam::::role:Viewer"
    }
  ],
  "resources": [
    {
      "attributes": [
        {
          "name": "accountId",
          "value": "ACCOUNT_ID",
          "operator": "stringEquals"
        },
        {
          "name": "serviceName",
          "value": "SERVICE_NAME",
          "operator": "stringEquals"
        }
      ]
    },
    {
      "tags": [
        {
          "name": "project",
          "value": "moonshot",
          "operator": "stringEquals"
        },
        {
          "name": "pipeline",
          "value": "test",
          "operator": "stringEquals"
        }
      ]
    }
  ],
  "href": "https://iam.cloud.ibm.com/v1/policies/12345678-abcd-1a2b-a1b2-1234567890ab",
  "created_at": "2018-08-30T14:09:09.907Z",
  "created_by_id": "USER_ID",
  "last_modified_at": "2018-08-30T14:09:09.907Z",
  "last_modified_by_id": "USER_ID",
  "state": "active"
}
{
  "id": "12345678-abcd-1a2b-a1b2-1234567890ab",
  "type": "access",
  "description": "Viewer role access for all instances of SERVICE_NAME in the account.",
  "subjects": [
    {
      "attributes": [
        {
          "name": "iam_id",
          "value": "IBMid-123453user"
        }
      ]
    }
  ],
  "roles": [
    {
      "roles_id": "crn:v1:bluemix:public:iam::::role:Viewer"
    }
  ],
  "resources": [
    {
      "attributes": [
        {
          "name": "accountId",
          "value": "ACCOUNT_ID",
          "operator": "stringEquals"
        },
        {
          "name": "serviceName",
          "value": "SERVICE_NAME",
          "operator": "stringEquals"
        }
      ]
    },
    {
      "tags": [
        {
          "name": "project",
          "value": "moonshot",
          "operator": "stringEquals"
        },
        {
          "name": "pipeline",
          "value": "test",
          "operator": "stringEquals"
        }
      ]
    }
  ],
  "href": "https://iam.cloud.ibm.com/v1/policies/12345678-abcd-1a2b-a1b2-1234567890ab",
  "created_at": "2018-08-30T14:09:09.907Z",
  "created_by_id": "USER_ID",
  "last_modified_at": "2018-08-30T14:09:09.907Z",
  "last_modified_by_id": "USER_ID",
  "state": "active"
}
{
  "id": "12345678-abcd-1a2b-a1b2-1234567890ab",
  "type": "access",
  "description": "Viewer role access for all instances of SERVICE_NAME in the account.",
  "subjects": [
    {
      "attributes": [
        {
          "name": "iam_id",
          "value": "IBMid-123453user"
        }
      ]
    }
  ],
  "roles": [
    {
      "roles_id": "crn:v1:bluemix:public:iam::::role:Viewer"
    }
  ],
  "resources": [
    {
      "attributes": [
        {
          "name": "accountId",
          "value": "ACCOUNT_ID",
          "operator": "stringEquals"
        },
        {
          "name": "serviceName",
          "value": "SERVICE_NAME",
          "operator": "stringEquals"
        }
      ]
    },
    {
      "tags": [
        {
          "name": "project",
          "value": "moonshot",
          "operator": "stringEquals"
        },
        {
          "name": "pipeline",
          "value": "test",
          "operator": "stringEquals"
        }
      ]
    }
  ],
  "href": "https://iam.cloud.ibm.com/v1/policies/12345678-abcd-1a2b-a1b2-1234567890ab",
  "created_at": "2018-08-30T14:09:09.907Z",
  "created_by_id": "USER_ID",
  "last_modified_at": "2018-08-30T14:09:09.907Z",
  "last_modified_by_id": "USER_ID",
  "state": "active"
}

API を使用したアクセス・グループへのユーザーの追加

APIを使用してユーザーにアクセスグループを追加するには、次の例のように IAM Access Groups APIを呼び出します。

curl -X PUT -H "Authorization: {iam_token}" -H "Accept: application/json" -H "Content-Type: application/json" -d '{"members": [ {"iam_id": "IBMid-user1", "type": "user"}, {"iam_id": "iam-ServiceId-123", "type": "service"} ]}' "{base_url}/groups/{access_group_id}/members"
AddGroupMembersRequestMembersItem member1 = new AddGroupMembersRequestMembersItem.Builder()
  .iamId("IBMid-user1")
  .type("user")
  .build();
AddGroupMembersRequestMembersItem member2 = new AddGroupMembersRequestMembersItem.Builder()
  .iamId("iam-ServiceId-123")
  .type("service")
  .build();
AddMembersToAccessGroupOptions addMembersToAccessGroupOptions = new AddMembersToAccessGroupOptions.Builder()
  .accessGroupId(testGroupId)
  .addMembers(member1)
  .addMembers(member2)
  .build();
Response<AddGroupMembersResponse> response = service.addMembersToAccessGroup(addMembersToAccessGroupOptions).execute();
AddGroupMembersResponse addGroupMembersResponse = response.getResult();

System.out.println(addGroupMembersResponse);
const groupMember1 = {
  iam_id: 'IBMid-user1',
  type: 'user',
};
const groupMember2 = {
  iam_id: 'iam-ServiceId-123',
  type: 'service',
};
const params = {
  accessGroupId: testGroupId,
  members: [groupMember1, groupMember2],
};

iamAccessGroupsService.addMembersToAccessGroup(params)
  .then(res => {
    console.log(JSON.stringify(res.result, null, 2));
  })
  .catch(err => {
    console.warn(err)
  });
member1 = AddGroupMembersRequestMembersItem(
  iam_id='IBMid-user1', type='user')
member2 = AddGroupMembersRequestMembersItem(
  iam_id='iam-ServiceId-123', type='service')
members = [member1, member2]

add_group_members_response = iam_access_groups_service.add_members_to_access_group(
  access_group_id=test_group_id,
  members=members
).get_result()

print(json.dumps(add_group_members_response, indent=2))
groupMembers := []iamaccessgroupsv2.AddGroupMembersRequestMembersItem{
  iamaccessgroupsv2.AddGroupMembersRequestMembersItem{
    IamID: core.StringPtr("IBMid-user1"),
    Type:  core.StringPtr("user"),
  },
  iamaccessgroupsv2.AddGroupMembersRequestMembersItem{
    IamID: core.StringPtr("iam-ServiceId-123"),
    Type:  core.StringPtr("service"),
  },
}
addMembersToAccessGroupOptions := iamAccessGroupsService.NewAddMembersToAccessGroupOptions(testGroupID)
addMembersToAccessGroupOptions.SetMembers(groupMembers)
addGroupMembersResponse, response, err := iamAccessGroupsService.AddMembersToAccessGroup(addMembersToAccessGroupOptions)
if err != nil {
  panic(err)
}
b, _ := json.MarshalIndent(addGroupMembersResponse, "", "  ")
fmt.Println(string(b))

または、トラステッド・プロファイルをアクセス・グループに追加することで、ユーザーにアクセス権限を付与できます。 詳しくは、優れたトラステッド・プロファイル戦略とはおよびトラステッド・プロファイルの作成を参照してください。

ユーザーの予期される応答の追加

{
  "members": [
    {
      "iam_id": "$IBM_ID",
      "type": "user",
      "created_at": "2019-01-01T01:01:00Z",
      "created_by_id": "CREATOR_ID",
      "status_code": 200
    },
    {
      "iam_id": "$SERVICE_ID",
      "status_code": 400,
      "trace": "12345678-abcd-1a2b-a1b2-1234567890ab",
      "errors": [
        {
          "code": "error_occurred",
          "message": "The service id is missing or incorrect"
        }
      ]
    }
  ]
}
{
  "members": [
    {
      "iam_id": "$IBM_ID",
      "type": "user",
      "created_at": "2019-01-01T01:01:00Z",
      "created_by_id": "CREATOR_ID",
      "status_code": 200
    },
    {
      "iam_id": "$SERVICE_ID",
      "status_code": 400,
      "trace": "12345678-abcd-1a2b-a1b2-1234567890ab",
      "errors": [
        {
          "code": "error_occurred",
          "message": "The service id is missing or incorrect"
        }
      ]
    }
  ]
}
{
  "members": [
    {
      "iam_id": "$IBM_ID",
      "type": "user",
      "created_at": "2019-01-01T01:01:00Z",
      "created_by_id": "CREATOR_ID",
      "status_code": 200
    },
    {
      "iam_id": "$SERVICE_ID",
      "status_code": 400,
      "trace": "12345678-abcd-1a2b-a1b2-1234567890ab",
      "errors": [
        {
          "code": "error_occurred",
          "message": "The service id is missing or incorrect"
        }
      ]
    }
  ]
}
{
  "members": [
    {
      "iam_id": "$IBM_ID",
      "type": "user",
      "created_at": "2019-01-01T01:01:00Z",
      "created_by_id": "CREATOR_ID",
      "status_code": 200
    },
    {
      "iam_id": "$SERVICE_ID",
      "status_code": 400,
      "trace": "12345678-abcd-1a2b-a1b2-1234567890ab",
      "errors": [
        {
          "code": "error_occurred",
          "message": "The service id is missing or incorrect"
        }
      ]
    }
  ]
}
{
  "members": [
    {
      "iam_id": "$IBM_ID",
      "type": "user",
      "created_at": "2019-01-01T01:01:00Z",
      "created_by_id": "CREATOR_ID",
      "status_code": 200
    },
    {
      "iam_id": "$SERVICE_ID",
      "status_code": 400,
      "trace": "12345678-abcd-1a2b-a1b2-1234567890ab",
      "errors": [
        {
          "code": "error_occurred",
          "message": "The service id is missing or incorrect"
        }
      ]
    }
  ]
}

Terraform を使用したアクセス・グループへのユーザーの追加

Terraform を使用してアクセス・グループにユーザーを追加する前に、以下を完了していることを確認してください。

  • Terraform CLI をインストールし、Terraform 用の IBM Cloud プロバイダー・プラグインを構成します。 詳しくは、 IBM Cloud® のチュートリアルを参照してください。 このプラグインは、以下のタスクを実行するために使用される IBM Cloud API を抽象化します。
  • main.tfという名前の Terraform 構成ファイルを作成します。 このファイルでは、 HashiCorp 構成言語を使用してリソースを定義します。 詳細については 、Terraformのドキュメントを参照してください。

アクセス・グループにユーザーを追加するには、以下の手順を使用します。

  1. Terraform 構成ファイルで、アクセス・グループの作成に使用した Terraform コードを見つけ、アクセス・グループに割り当てられている access_group_id をメモします。

  2. メンバーをこのアクセス・グループに追加します。

    resource "ibm_iam_access_group_members" "accgroupmem" {
    access_group_id = ibm_iam_access_group.accgroup.id
    ibm_ids = ["test@in.ibm.com"]
    }
    

    詳細については 、Terraform Identity and Access Management(IAM)ページの引数リファレンスの詳細を参照してください。

  3. 構成ファイルの作成が完了したら、Terraform CLI を初期化します。 詳しくは、 作業ディレクトリーの初期化を参照してください。

    terraform init
    
  4. main.tf ファイルからリソースをプロビジョンします。 詳しくは、 Terraform を使用したインフラストラクチャーのプロビジョニングを参照してください。

    1. terraform plan を実行して、提案されたアクションをプレビューするための Terraform 実行プランを生成します。

      terraform plan
      
    2. terraform apply を実行して、計画に定義されているリソースを作成します。

      terraform apply