IBM Cloud Docs
リソースおよびサービス ID にタグを付けるためのアクセス権限をユーザーに付与する

リソースおよびサービス 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 対応リソースにタグを付けるためのエディター役割を割り当てます。

  1. IBM Cloud コンソールで**「管理」>「アクセス (IAM)」とクリックし、「アクセス・グループ」**を選択します。
  2. 「作成」 をクリックします。
  3. グループ名と説明を入力し、**「作成」**をクリックします。
  4. ユーザーをアクセス・グループに追加します。そのためには、**「ユーザーの追加」をクリックし、表から 1 人以上のユーザーを選択して「グループに追加」**をクリックします。
  5. 「アクセス権限」 > 「アクセス権限の割り当て」 をクリックします。
  6. **「すべての ID およびアクセス対応サービス」**を選択するか、特定のサービスを選択します。
  7. 特定のロケーションを選択します。
  8. プラットフォーム・アクセス役割のリストから**「エディター」を選択し、「確認」**をクリックします。
  9. 追加をクリックして、ポリシー構成をポリシー・サマリーに追加します。
  10. 割り当て をクリックします。

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 ファイアウォール (専用) です。 以下のステップを実行して、ユーザーがクラシック・インフラストラクチャー・サービスにタグを付けるための管理者サービス・アクセス役割を割り当てます。

  1. **「管理」>「アクセス (IAM)」をクリックし、「ユーザー」**を選択します。
  2. 表からユーザーの名前をクリックします。
  3. **「クラシック・インフラストラクチャー」**をクリックします。
  4. **「許可」タブで、「デバイス」**カテゴリーを展開します。
  5. **「ハードウェア詳細の表示 (View Hardware Details)」および「仮想サーバー詳細の表示 (View Virtual Server Details)」を選択します。 Cloud Object Storage S3、ファイル・ストレージ、または EVault バックアップへのアクセス権限を割り当てる必要がある場合は、「ストレージ管理」許可を割り当てます。 コンテンツ配信ネットワークへのアクセス権限を割り当てる必要がある場合には、「CDN アカウントの管理」**許可を割り当てます。
  6. 保存 をクリックします。
  7. **「デバイス」**タブをクリックします。
  8. ユーザーにタグ付けさせたいリソースに応じて、[すべてのベアメタルサーバー]または[すべての仮想サーバー]を選択します。

サービス ID にタグを付けるためのアクセス権限のユーザーへの付与

ユーザーの IAM Identity Service に対する管理者役割を割り当てるには、以下の手順を実行します。

  1. **「管理」>「アクセス (IAM)」をクリックし、「ユーザー」**を選択します。
  2. 表からユーザーの名前をクリックします。
  3. IAM Identity Service を選択し、 「次へ」 をクリックします。
  4. 「すべてのリソース」 を選択し、 「次へ」 をクリックします。
  5. 管理者ロールを選択します。
  6. 「レビュー」 > 「追加」 をクリックします。
  7. 割り当て をクリックします。

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