ユーザーの管理 IBM Cloud

アカウント内のユーザーによる watsonx Orchestrate サービスインスタンスへのアクセスは、 IBM Cloud® のアイデンティティおよびアクセス管理 (IAM)によって制御されます。 アカウント内の watsonx Orchestrate サービスにアクセスするすべてのユーザーには、IAMロールが割り当てられたアクセスポリシーを設定する必要があります。 watsonx Orchestrate へのアクセス権を割り当てる最適な方法を決定するために、以下の役割、アクションなどを確認してください。

アカウント内のユーザーに割り当てるアクセス・ポリシーによって、サービスのコンテキスト内で、または選択する特定のインスタンスでユーザーが実行できるアクションが決まります。 許可されるアクションは、 watsonx Orchestrate によってカスタマイズされ、そのサービスに対して実行が許可される操作として定義されます。 各アクションは、IAM プラットフォーム、またはユーザーに割り当てることのできるサービス役割にマップされます。

IAM アクセスグループおよびアクセスポリシーの詳細については、 「IAM アクセスの概念」 を参照してください。

重要:

IBM watsonx Orchestrate 現在、カスタムロールはサポートされていません。

IAM アクセス・ポリシーによって、さまざまなレベルでアクセス権限を付与できます。 以下に選択肢をいくつか示します。

  • アカウント内のすべてのサービス・インスタンスに対するアクセス権限

  • アカウント内の個別のサービス・インスタンスに対するアクセス権限

  • インスタンス内の特定のリソースに対するアクセス権限

watsonx Orchestrate サービスを利用する際、各ロールで実行可能なタスクの種類をまとめた以下の表を確認してください。 プラットフォーム管理役割により、ユーザーはプラットフォーム・レベルでサービス・リソースに対するタスクを実行できます。例えば、サービスに対するユーザー・アクセス権限の割り当て、インスタンスの作成または削除、アプリケーションへのインスタンスのバインドなどを実行できます。 サービスアクセスロールにより、ユーザーは watsonx Orchestrate にアクセスし、 watsonx Orchestrate のAPIを呼び出すことができます。 各ロールに割り当てられている具体的なアクションについては、 「ロールに割り当てられたアクション」 を参照してください。

プラットフォーム役割

アクションの説明

管理者

管理者は、この役割が割り当てられているリソースに基づくすべてのプラットフォーム・アクション (他のユーザーへのアクセス・ポリシーの割り当てを含む) を行うことができます。

エディター

エディターは、アカウントの管理とアクセス・ポリシーの割り当てを除き、すべてのプラットフォーム・アクションを実行できます。

オペレーター

オペレーターは、サービスのダッシュボードの表示など、サービス・インスタンスを構成および操作するために必要なプラットフォーム・アクションを実行できます。

ビューア―

ビューアーは、サービス・インスタンスを表示できますが、それらを変更することはできません。

サービス役割

アクションの説明

マネージャー

管理者には、サービスで定義されている特権付きアクションを実行する、ライター役割を超える権限があります。 それに加え、サービス固有のリソースを作成および編集できます。

サービス構成リーダー

ガバナンス管理のためのサービス構成を読み取る機能。

WXOユーザー

ユーザーとして、あなたはアシスタントと対話する権限を持っています。

ライター

ライターには、サービス固有のリソースの作成および編集を含め、リーダー役割を超える権限があります。

重要:

役割にマッピングされた行動

アクション

説明

ロール

watsonx-orchestrate.skill.run

スキルを走らせることができる

マネージャー、WXOユーザー、ライター

watsonx-orchestrate.assistant.legacy

v1 API を介してワークスペースのオーサリング・メソッドを実行できます。

マネージャー

watsonx-orchestrate.skill.write

スキルの作成、名前の変更、編集、削除ができます。

管理者、ライター

watsonx-orchestrate.skill.read

スキルをオープンおよび表示できます。

管理者、ライター

watsonx-orchestrate.assistant.write

アシスタントの名前を変更、編集、削除することができます。

管理者、ライター

watsonx-orchestrate.assistant.read

アシスタントをオープンおよび表示できます。

管理者、ライター

watsonx-orchestrate.assistant.list

アシスタントまたはスキルをリストできます

管理者、ライター

watsonx-orchestrate.assistant.default

アシスタントのデフォルトのアクセス権限

管理者、ライター

watsonx-orchestrate.logs.read

スキル分析を表示し、ユーザーの会話ログにアクセスできます。

マネージャー

watsonx-orchestrate.environment.write

環境名の変更、編集、削除が可能

管理者、ライター

watsonx-orchestrate.environment.read

環境を開いて見ることができる

管理者、ライター

watsonx-orchestrate.release.write

アシスタントのリリースの作成と削除

マネージャー

watsonx-orchestrate.dashboard.view

ダッシュボードの表示

管理者、編集者、マネージャー、オペレーター、サービス構成リーダー、ビューアー、WXOユーザー、ライター

watsonx-orchestrate.credentials.write

クレデンシャルの割り当てと設定が可能

マネージャー

コンソールでの watsonx Orchestrate へのアクセス権の割り当て

コンソールでアクセス権限を割り当てるには、以下の 2 つの一般的な方法があります。

  • ユーザー別のアクセス・ポリシー。 コンソールで「管理」>「アクセス (IAM)」>「ユーザー」ページから、ユーザー別のアクセス・ポリシーを管理できます。 IAM アクセス権を割り当てる手順については、 「コンソールでのリソースへのアクセス権の管理」 を参照してください。

  • アクセス・グループ。 アクセス・グループは、アクセス権限をグループに 1 回割り当てることによってアクセス管理を簡素化するために使用されます。その後、ユーザーのアクセス権限を制御するために、必要に応じてグループにユーザーを追加したり、グループからユーザーを削除したりすることができます。 コンソールの「管理」>「アクセス (IAM)」>「アクセス・グループ」ページから、アクセス・グループと各グループのアクセス権限を管理します。 詳しくは、コンソールでのグループへのアクセス権限の割り当てを参照してください。

CLI での ` watsonx Orchestrate ` へのアクセス権の割り当て

アクセス権限の割り当て、割り当て解除、表示を行うステップバイステップの手順については、CLI を使用したリソースに対するアクセス権限の割り当てを参照してください。 次の例は、watsonx OrchestrateWriterの役割を割り当てるコマンドです:

ヒント: サービス名には watsonx-orchestrate を使用してください。 また、以下の例のように、複数の単語で構成されるロール名を引用符で囲みます。

ibmcloud iam user-policy-create USER@EXAMPLE.COM --service-name watsonx-orchestrate --roles "Writer"

API を使用して watsonx Orchestrate へのアクセス権を割り当てる

アクセス権限の割り当て、削除、および確認のステップバイステップの手順については、API を使用したリソースへのアクセス権限の割り当てまたはポリシー API 資料の作成を参照してください。 API でアクセス権限を割り当てるには、以下の表に記載している役割のクラウド・リソース名 (CRN) を使用します。

表 1. 表2. API で使用する役割の ID 値

役割名

役割の CRN

ビューア―

crn:v1:bluemix:public:watsonx-orchestrate::::serviceRole:Viewer

オペレーター

crn:v1:bluemix:public:watsonx-orchestrate::::serviceRole:Operator

エディター

crn:v1:bluemix:public:watsonx-orchestrate::::serviceRole:Editor

管理者

crn:v1:bluemix:public:watsonx-orchestrate::::serviceRole:Administrator

サービス構成リーダー

crn:v1:bluemix:public:watsonx-orchestrate::::serviceRole:ServiceConfigurationReader

ライター

crn:v1:bluemix:public:watsonx-orchestrate::::serviceRole:Writer

マネージャー

crn:v1:bluemix:public:watsonx-orchestrate::::serviceRole:Manager

WXOユーザー

crn:v1:bluemix:public:watsonx-orchestrate::::serviceRole:WXOUser

次の例は、watsonx-orchestrateWXO Userの役割を割り当てるものです:

ヒント: サービス名には watsonx-orchestrate を使用し、CRN に正しい値を使用していることを確認するためにロール ID 値の表を参照してください。

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

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

PolicyRole policyRoles = new PolicyRole.Builder()
      .roleId("crn:v1:bluemix:public:watsonx-orchestrate::::serviceRole:WXOUser")
      .build();

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

ResourceAttribute serviceNameResourceAttribute = new ResourceAttribute.Builder()
      .name("serviceName")
      .value("watsonx-orchestrate")
      .operator("stringEquals")
      .build();

PolicyResource policyResources = new PolicyResource.Builder()
      .addAttributes(accountIdResourceAttribute)
      .addAttributes(serviceNameResourceAttribute)
      .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: 'IBMid-123453user',
      },
    ],
  },
];
const policyRoles = [
  {
    role_id: 'crn:v1:bluemix:public:watsonx-orchestrate::::serviceRole:WXOUser',
  },
];
const accountIdResourceAttribute = {
  name: 'accountId',
  value: 'ACCOUNT_ID',
  operator: 'stringEquals',
};
const serviceNameResourceAttribute = {
  name: 'serviceName',
  value: 'watsonx-orchestrate',
  operator: 'stringEquals',
};
const policyResources = [
  {
    attributes: [accountIdResourceAttribute, serviceNameResourceAttribute]
  },
];
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='IBMid-123453user')])
policy_roles = PolicyRole(
  role_id='crn:v1:bluemix:public:watsonx-orchestrate::::serviceRole:WXOUser')
account_id_resource_attribute = ResourceAttribute(
  name='accountId', value='ACCOUNT_ID')
service_name_resource_attribute = ResourceAttribute(
  name='serviceName', value='watsonx-orchestrate')
policy_resources = PolicyResource(
  attributes=[account_id_resource_attribute,
        service_name_resource_attribute])

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: core.StringPtr("IBMid-123453user"),
}
policySubjects := &iampolicymanagementv1.PolicySubject{
  Attributes: []iampolicymanagementv1.SubjectAttribute{*subjectAttribute},
}
policyRoles := &iampolicymanagementv1.PolicyRole{
  RoleID: core.StringPtr("crn:v1:bluemix:public:watsonx-orchestrate::::serviceRole:WXOUser"),
}
accountIDResourceAttribute := &iampolicymanagementv1.ResourceAttribute{
  Name:     core.StringPtr("accountId"),
  Value:    core.StringPtr("ACCOUNT_ID"),
  Operator: core.StringPtr("stringEquals"),
}
serviceNameResourceAttribute := &iampolicymanagementv1.ResourceAttribute{
  Name:     core.StringPtr("serviceName"),
  Value:    core.StringPtr("watsonx-orchestrate"),
  Operator: core.StringPtr("stringEquals"),
}
policyResources := &iampolicymanagementv1.PolicyResource{
  Attributes: []iampolicymanagementv1.ResourceAttribute{
    *accountIDResourceAttribute, *serviceNameResourceAttribute}
}

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))