リソースおよびサービス ID にタグを付けるためのアクセス権限をユーザーに付与する
アカウント所有者として、リソースとサービスIDのタグ付けの責任の一部を委任したいかもしれません。 ユーザーがリソースまたはサービスIDにタグを付けるには、適切なアクセス権を付与する必要があります。 リソース・グループ内のリソースに対するアクセス権限をユーザーに付与するには、IBM Cloud® ID およびアクセス管理 (IAM) アクセス・ポリシーを使用します。
タグはアカウント全体に表示され、地域間で複製できます。 タグは規制情報ではないため、個人情報 (名前、住所、電話番号、E メール・アドレス、その他の識別情報や専有情報など) を使用するタグを作成しないようにしてください。
タグ付けの許可
アカウント内のどのユーザーもタグを表示できます。 リソースにタグが付けられると、「read
アクセス権を持つすべてのユーザーがそのタグを見ることができます。 リソースまたはサービスIDにタグをアタッチまたはデタッチするには、リソースのタイプとタグのタイプに応じて、特定のアクセス・ロールまたはパーミッションが必要です。 以下の表を参照して、各リソース・タイプに必要な役割を理解してください。
リソース・タイプ | 役割 |
---|---|
IAM対応 | ユーザー・タグをアタッチまたはデタッチするには、リソースの、エディターまたは管理者 アクセス管理タグをアタッチまたはデタッチするには、リソースの管理者 アクセス管理タグがアタッチされているリソースに対して割り当てられたポリシーを表示するには、ビューアー役割 |
クラシック・インフラストラクチャー上のベアメタル | ハードウェアの詳細と特定のサービス・セットまたはすべてのベアメタル・サーバーに対するアクセス権限の表示 |
クラシック・インフラストラクチャー上の専用ホスト | 仮想専用ホストの詳細と特定のサービス・セットまたはすべての専用ホストに対するアクセス権限の表示 |
クラシック・インフラストラクチャー上の仮想サーバー | 仮想サーバーの詳細と特定のサービス・セットまたはすべての仮想サーバーに対するアクセス権限の表示 |
クラシック・インフラストラクチャー上の Cloud Object Storage S3 | ストレージ管理許可 |
クラシック・インフラストラクチャー上のファイル・ストレージ | ストレージ管理許可 |
クラシック・インフラストラクチャー上の EVault バックアップ | ストレージ管理許可 |
クラシック・インフラストラクチャー上のコンテンツ配信ネットワーク | CDN アカウント許可の管理 |
クラシック・インフラストラクチャー上の Direct Link | アカウント・メンバー |
Hardware Firewall | ファイアウォールの管理 |
Fortigate Security Appliance | ファイアウォールの管理 |
IBM Cloud Load Balancer | ロード・バランサーの管理 |
Gateway Appliance | ネットワーク・ゲートウェイの管理 |
サービス ID | IAM Identity サービスでユーザー・タグの追加または切り離しを行うには、エディターまたは管理者を使用します。 アクセス管理タグの追加または切り離しを行うには、IAM Identity サービスの管理者を使用します。 |
IAM 対応リソースにタグを付けるためのアクセス権限をユーザーに付与する
以下のステップを実行して、ユーザーが IAM 対応リソースにタグを付けるためのエディター役割を割り当てます。
- IBM Cloud コンソールで**「管理」>「アクセス (IAM)」とクリックし、「アクセス・グループ」**を選択します。
- 「作成」 をクリックします。
- グループ名と説明を入力し、**「作成」**をクリックします。
- ユーザーをアクセス・グループに追加します。そのためには、**「ユーザーの追加」をクリックし、表から 1 人以上のユーザーを選択して「グループに追加」**をクリックします。
- 「アクセス権限」 > 「アクセス権限の割り当て」 をクリックします。
- **「すべての ID およびアクセス対応サービス」**を選択するか、特定のサービスを選択します。
- 特定のロケーションを選択します。
- プラットフォーム・アクセス役割のリストから**「エディター」を選択し、「確認」**をクリックします。
- 追加をクリックして、ポリシー構成をポリシー・サマリーに追加します。
- 割り当て をクリックします。
API を使用した、IAM 対応リソースにタグを付けるためのユーザーへのアクセス権限の付与
IAM 対応リソースにタグを付けるユーザーに編集者ロールを割り当てるには、次のリクエスト例に示すように IAM ポリシー管理 APIを呼び出す。 変数は、ターゲット・サービスおよびリソース名に置き換えてください。
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's 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:Editor")
.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();
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: exampleUserId,
},
],
},
];
const policyRoles = [
{
role_id: 'crn:v1:bluemix:public:iam::::role:Editor',
},
];
const accountIdResourceAttribute = {
name: 'accountId',
value: exampleAccountId,
operator: 'stringEquals',
};
const serviceNameResourceAttribute = {
name: 'serviceType',
value: 'service',
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=example_user_id)])
policy_roles = PolicyRole(
role_id='crn:v1:bluemix:public:iam::::role:Editor')
account_id_resource_attribute = ResourceAttribute(
name='accountId', value=example_account_id)
service_name_resource_attribute = ResourceAttribute(
name='serviceType', value='service')
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: &exampleUserID,
}
policySubjects := &iampolicymanagementv1.PolicySubject{
Attributes: []iampolicymanagementv1.SubjectAttribute{*subjectAttribute},
}
policyRoles := &iampolicymanagementv1.PolicyRole{
RoleID: core.StringPtr("crn:v1:bluemix:public:iam::::role:Editor"),
}
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"),
}
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))
クラシック・インフラストラクチャー・リソースにタグを付けるためアクセス権限をユーザーに付与する
クラシック・インフラストラクチャーのタグ付け可能リソースは、仮想ゲスト、仮想専用ホスト、ネットワーク・アプリケーション配信コントローラー、ゲートウェイ・メンバー、サブネット、VLAN、および VLAN ファイアウォール (専用) です。 以下のステップを実行して、ユーザーがクラシック・インフラストラクチャー・サービスにタグを付けるための管理者サービス・アクセス役割を割り当てます。
- **「管理」>「アクセス (IAM)」をクリックし、「ユーザー」**を選択します。
- 表からユーザーの名前をクリックします。
- **「クラシック・インフラストラクチャー」**をクリックします。
- **「許可」タブで、「デバイス」**カテゴリーを展開します。
- **「ハードウェア詳細の表示 (View Hardware Details)」および「仮想サーバー詳細の表示 (View Virtual Server Details)」を選択します。 Cloud Object Storage S3、ファイル・ストレージ、または EVault バックアップへのアクセス権限を割り当てる必要がある場合は、「ストレージ管理」許可を割り当てます。 コンテンツ配信ネットワークへのアクセス権限を割り当てる必要がある場合には、「CDN アカウントの管理」**許可を割り当てます。
- 保存 をクリックします。
- **「デバイス」**タブをクリックします。
- ユーザーにタグ付けさせたいリソースに応じて、[すべてのベアメタルサーバー]または[すべての仮想サーバー]を選択します。
サービス ID にタグを付けるためのアクセス権限のユーザーへの付与
ユーザーの IAM Identity Service に対する管理者役割を割り当てるには、以下の手順を実行します。
- **「管理」>「アクセス (IAM)」をクリックし、「ユーザー」**を選択します。
- 表からユーザーの名前をクリックします。
- IAM Identity Service を選択し、 「次へ」 をクリックします。
- 「すべてのリソース」 を選択し、 「次へ」 をクリックします。
- 管理者ロールを選択します。
- 「レビュー」 > 「追加」 をクリックします。
- 割り当て をクリックします。
APIを使用してタグ・サービスIDへのアクセス権をユーザーに付与する
ユーザーの IAM Identity Service に対する管理者役割を割り当てるには、以下の要求例に示すように、 IAM Policy Management API を呼び出します。 値を、ターゲット・ユーザーの IAM ID およびアカウント ID に置き換えます。
curl -X POST 'https://iam.cloud.ibm.com/v1/policies' -H 'Authorization: Bearer $TOKEN' -H 'Content-Type: application/json' -d '{
"type": "access",
"description": "Administrator role for the IAM Identity Service so that user can tag service IDs",
"subjects": [
{
"attributes": [
{
"name": "iam_id",
"value": "IBMid-123453user"
}
]
}'
],
"roles":[
{
"role_id": "crn:v1:bluemix:public:iam::::role:Administrator"
}
],
"resources":[
{
"attributes": [
{
"name": "accountId",
"value": "$ACCOUNT_ID"
},
{
"name": "serviceName",
"value": "iam-identity"
}
]
}
]
}'
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:Administrator")
.build();
ResourceAttribute accountIdResourceAttribute = new ResourceAttribute.Builder()
.name("accountId")
.value(exampleAccountId)
.operator("stringEquals")
.build();
ResourceAttribute serviceNameResourceAttribute = new ResourceAttribute.Builder()
.name("serviceType")
.value("iam-identity")
.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: exampleUserId,
},
],
},
];
const policyRoles = [
{
role_id: 'crn:v1:bluemix:public:iam::::role:Administrator',
},
];
const accountIdResourceAttribute = {
name: 'accountId',
value: exampleAccountId,
operator: 'stringEquals',
};
const serviceNameResourceAttribute = {
name: 'serviceType',
value: 'iam-identity',
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=example_user_id)])
policy_roles = PolicyRole(
role_id='crn:v1:bluemix:public:iam::::role:Administrator')
account_id_resource_attribute = ResourceAttribute(
name='accountId', value=example_account_id)
service_name_resource_attribute = ResourceAttribute(
name='serviceType', value='iam-identity')
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: &exampleUserID,
}
policySubjects := &iampolicymanagementv1.PolicySubject{
Attributes: []iampolicymanagementv1.SubjectAttribute{*subjectAttribute},
}
policyRoles := &iampolicymanagementv1.PolicyRole{
RoleID: core.StringPtr("crn:v1:bluemix:public:iam::::role:Administrator"),
}
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("iam-identity"),
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))