ユーザーの管理 IBM Cloud
アカウント内のユーザーの watsonx Orchestrate サービス インスタンスへのアクセスは、IBM Cloud® Identity and Access Management (IAM) によって制御されます。 アカウントで watsonx Orchestrate サービスにアクセスするすべてのユーザーには、IAM ロールを持つアクセス ポリシーを割り当てる必要があります。 watsonx Orchestrate へのアクセスを割り当てる最適な方法を判断するために、以下のロールやアクションなどを確認してください。
アカウント内のユーザーに割り当てるアクセス・ポリシーによって、サービスのコンテキスト内で、または選択する特定のインスタンスでユーザーが実行できるアクションが決まります。 許可されるアクションは、watsonx Orchestrate によってカスタマイズされ、サービス上で実行可能な操作として定義されます。 各アクションは、IAM プラットフォーム、またはユーザーに割り当てることのできるサービス役割にマップされます。
IAMアクセスグループとアクセスポリシーの詳細については、IAMアクセスの概念を参照してください。
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 OrchestrateにWriterの役割を割り当てるコマンドです:
サービス名には watsonx-orchestrate を使用します。 また、以下の例のように、複数の単語で構成されるロール名を引用符で囲みます。
ibmcloud iam user-policy-create USER@EXAMPLE.COM --service-name watsonx-orchestrate --roles "Writer"
API を使用して watsonx Orchestrate にアクセス権を割り当てる
アクセス権限の割り当て、削除、および確認のステップバイステップの手順については、API を使用したリソースへのアクセス権限の割り当てまたはポリシー API 資料の作成を参照してください。 API でアクセス権限を割り当てるには、以下の表に記載している役割のクラウド・リソース名 (CRN) を使用します。
| 役割名 | 役割の 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-orchestrateにWXO 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))
親トピック:
→ ユーザー管理