사용자에게 태그 리소스 및 서비스 ID에 대한 액세스 권한 부여

계정 소유자는 리소스 및 서비스 ID를 태그하는 책임의 일부를 위임할 수 있습니다. 사용자가 리소스 또는 서비스 ID에 태그를 첨부하려면 해당 사용자에게 적절한 액세스 권한을 부여해야 합니다. 사용자에게 리소스 그룹의 리소스에 대한 액세스 권한을 부여하려면 IBM Cloud® Identity and Access Management(IAM) 액세스 정책을 사용하십시오.

태그는 계정 전체에서 볼 수 있으며 지리적 영역에 걸쳐 복제할 수 있습니다. 태그는 규제 정보가 아니므로 이름, 주소, 전화번호, 이메일 주소 또는 기타 식별 정보 또는 독점 정보와 같은 개인정보를 사용하는 태그를 생성하지 마십시오.

태그 지정 권한

계정의 모든 사용자는 태그를 볼 수 있습니다. 리소스에 태그가 지정되면 해당 리소스에 대한 read 액세스 권한이 있는 모든 사용자가 태그를 볼 수 있습니다. 리소스 또는 서비스 ID에 태그를 붙이거나 떼려면 리소스 유형 및 태그 유형에 따라 특정 액세스 역할 또는 권한이 필요합니다. 각 리소스 유형에 필요한 역할을 이해하려면 다음 표를 참조하십시오.

리소스 유형 역할
IAM 사용 사용자 태그를 첨부하거나 분리 - 리소스의 편집자 또는 관리자
액세스 관리 태그를 첨부하거나 분리 - 리소스에 대한 관리자
연결된 액세스 관리 태그가 있는 리소스에 지정된 정책 보기 - 뷰어 역할
클래식 인프라의 Bare Metal 하드웨어 세부사항 보기 및 특정 서비스 세트 또는 모든 베어 메탈 서버에 액세스
클래식 인프라의 전용 호스트 가상의 전용 호스트 세부사항 보기 및 특정 서비스 세트 또는 모든 전용 호스트에 액세스
클래식 인프라의 가상 서버 가상 서버 세부사항 보기 및 특정 서비스 세트 또는 모든 가상 서버에 액세스
클래식 인프라의 Cloud Object Storage S3 스토리지 관리 권한
클래식 인프라의 File Storage 스토리지 관리 권한
클래식 인프라의 Evault 백업 스토리지 관리 권한
클래식 인프라의 Content Delivery Network CDN 계정 권한 관리
클래식 인프라의 Direct Link 계정 구성원
Hardware Firewall 방화벽 관리
FortiGate Security Appliance 방화벽 관리
IBM Cloud Load Balancer 로드 밸런서 관리
Gateway Appliance 네트워크 게이트웨이 관리
서비스 ID IAM ID 서비스에 사용자 태그, 편집자 또는 관리자를 연결하거나 분리하려면
액세스 관리 태그를 연결하거나 분리하려면 IAM ID 서비스 관리자가 필요합니다.

사용자에게 IAM 사용 리소스에 태그를 지정하기 위한 액세스 부여

사용자가 IAM 사용 리소스에 태그를 지정할 수 있도록 하려면 다음 단계를 완료하여 편집자 역할을 지정하십시오.

  1. IBM Cloud 콘솔에서 **관리 > 액세스(IAM)**를 클릭하고 액세스 그룹을 선택하십시오.
  2. 작성을 클릭하십시오.
  3. 그룹 이름 및 설명을 입력하고 작성을 클릭하십시오.
  4. 사용자 추가를 클릭하고 표에서 한 명 이상의 사용자를 선택한 후 그룹에 추가를 클릭하여 사용자를 액세스 그룹에 추가하십시오.
  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))

사용자에게 클래식 인프라 리소스에 태그를 지정하기 위한 액세스 부여

클래식 인프라의 태그 지정 가능 리소스는 가상 게스트, 가상 전용 호스트, Network Application Delivery Controller, 게이트웨이 구성원, 서브넷, VLAN 및 VLAN 방화벽(전용)입니다. 사용자가 클래식 인프라 서비스에 태그를 지정할 수 있도록 하려면 다음 단계를 완료하여 관리자 서비스 액세스 역할을 지정하십시오.

  1. **관리 > 액세스(IAM)**를 클릭하고 사용자를 선택하십시오.
  2. 표에서 사용자 이름을 클릭하십시오.
  3. 클래식 인프라를 클릭하십시오.
  4. 권한 탭에서 디바이스 카테고리를 펼치십시오.
  5. 하드웨어 세부사항 보기가상 서버 세부사항 보기를 선택하십시오. Cloud Object Storage S3, File Storage 또는 Evault 백업에 대한 액세스를 지정해야 하는 경우 스토리지 관리 권한을 지정하십시오. Content Delivery 네트워크에 대한 액세스를 지정해야 하는 경우 CDN 계정 관리 권한을 지정하십시오.
  6. 저장 을 클릭하십시오.
  7. 디바이스 탭을 클릭하십시오.
  8. 사용자가 태그를 지정할 수 있는 리소스에 따라 모든 베어메탈 서버 또는 모든 가상 서버를 선택합니다.

사용자에게 태그 서비스 ID에 대한 액세스 권한 부여

다음 단계를 완료하여 관리자 역할을 할당하세요.IAM Identity Service 사용자의 경우:

  1. **관리 > 액세스(IAM)**를 클릭하고 사용자를 선택하십시오.
  2. 표에서 사용자 이름을 클릭하십시오.
  3. IAM 신원 서비스를 선택하고 다음을 클릭합니다.
  4. 선택하다모든 리소스 그리고 클릭다음.
  5. 관리자 역할을 선택합니다.
  6. 딸깍 하는 소리검토 >추가하다.
  7. 지정을 클릭하십시오.

API를 사용하여 사용자에게 서비스 ID 태그 액세스 권한 부여하기

관리자 역할을 할당하려면IAM Identity Service 사용자의 경우 IAM 정책 관리 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))