Benutzern Zugriff auf Tag-Ressourcen und Service-IDs gewähren

Als Kontobesitzer können Sie einen Teil der Verantwortung für die Kennzeichnung von Ressourcen und Service-IDs delegieren. Damit Benutzer Tags an eine Ressourcen- oder Service-ID anhängen können, müssen Sie ihnen den entsprechenden Zugriff gewähren. Verwenden Sie IBM Cloud® Identity and Access Management-Zugriffsrichtlinien (IAM-Zugriffsrichtlinien), um Benutzern Zugriffsberechtigungen für Ressourcen in einer Ressourcengruppe zu erteilen.

Tags sind für das gesamte Konto sichtbar und können über geografische Regionen hinweg repliziert werden. Da Tags keine regulierten Informationen sind, vermeiden Sie es, Tags zu erstellen, die personenbezogene Informationen wie Ihren Namen, Ihre Adresse, Ihre Telefonnummer, Ihre E-Mail-Adresse oder andere identifizierende oder proprietäre Informationen verwenden.

Tagging-Berechtigungen

Alle Benutzer in einem Konto können Tags anzeigen. Wenn eine Ressource mit einem Tag versehen ist, können alle Benutzer, die unter read Zugriff auf die Ressource haben, das Tag sehen. Um ein Tag an eine Ressourcen- oder Service-ID anzuhängen oder zu entfernen, sind je nach Ressourcentyp und Tag-Typ bestimmte Zugriffsrollen oder -berechtigungen erforderlich. In der folgenden Tabelle finden Sie die Rollen, die für die einzelnen Ressourcentypen erforderlich sind.

Ressourcentyp Rolle
Für IAM aktiviert Um Benutzer-Tags hinzuzufügen oder zu entfernen, Editor oder Administrator auf der Ressource
Um Zugriffsverwaltungs-Tags hinzuzufügen oder zu entfernen, Administrator auf der Ressource
Um die zugewiesenen Richtlinien auf der Ressource anzuzeigen, der ein Zugriffsverwaltungs-Tag hinzugefügt wurde, Viewer-Rolle
Bare-Metal in der klassischen Infrastruktur Hardwaredetails anzeigen und Zugriff auf eine bestimmte Gruppe von Services bzw. auf alle Bare-Metal-Server
Dedizierte Hosts in der klassischen Infrastruktur Details zur virtuellen dedizierten Hosts anzeigen und Zugriff auf eine bestimmte Gruppe von Services bzw. auf all dedizierten Hosts
Virtual Server in der klassischen Infrastruktur Details zu virtuellen Servern anzeigen und Zugriff auf eine bestimmte Gruppe von Services oder auf alle virtuellen Server
Cloud Object Storage S3 in der klassischen Infrastruktur Speicherverwaltungsberechtigung
File Storage in der klassischen Infrastruktur Speicherverwaltungsberechtigung
EVault Backup in der klassischen Infrastruktur Speicherverwaltungsberechtigung
Content Delivery Network in der klassischen Infrastruktur CDN-Kontoverwaltungsberechtigung
Direct Link in der klassischen Infrastruktur Kontomitglied
Hardware Firewall Firewalls verwalten
FortiGate Security Appliance Firewalls verwalten
IBM Cloud Load Balancer Lastausgleichsfunktionen verwalten
Gateway Appliance Netzgateways verwalten
Service-IDs So fügen Sie Benutzertags hinzu oder entfernen sie: Redakteur oder Administrator des IAM-Identitätsdiensts
Um Zugriffsverwaltungs-Tags anzufügen oder zu entfernen, muss der Administrator des IAM-Identitätsdiensts

Benutzern Zugriffsberechtigungen für das Tagging von für IAM aktivierten Ressourcen erteilen

Führen Sie die folgenden Schritte aus, um einem Benutzer die Bearbeiterrolle zuzuweisen, damit dieser für IAM aktivierte Ressourcen mit Tags versehen kann:

  1. Klicken Sie in der IBM Cloud-Konsole auf Verwalten > Zugriff (IAM) und wählen Sie Zugriffsgruppe aus.
  2. Klicken Sie auf Erstellen.
  3. Geben Sie einen Namen und eine Beschreibung für die Gruppe ein und klicken Sie auf Erstellen.
  4. Fügen Sie Benutzer zur Zugriffsgruppe hinzu, indem Sie auf Benutzer hinzufügen klicken, ein oder mehrere Benutzer in der Tabelle auswählen und auf Zu Gruppe hinzufügen klicken.
  5. Klicken Sie auf Zugang > Zugang zuweisen.
  6. Wählen Sie Alle Services mit aktiviertem Identity and Access Management oder einen bestimmten Service aus.
  7. Wählen Sie einen bestimmten Standort aus.
  8. Wählen Sie in der Liste der Plattformzugriffsrollen den Eintrag Bearbeiter aus und klicken Sie auf Überprüfen.
  9. Klicken Sie auf Hinzufügen, um die Richtlinienkonfiguration zu Ihrer Richtlinienzusammenfassung hinzuzufügen.
  10. Klicken Sie auf Zuweisen.

Benutzern Zugriffsberechtigungen für Ressourcen, die für IAM aktiviert sind, über die Anwendungsprogrammierschnittstelle (API) zuweisen

Um einem Benutzer die Herausgeberrolle zuzuweisen, um IAM-aktivierte Ressourcen zu taggen, rufen Sie die IAM Policy Management API auf, wie in der folgenden Beispielanforderung gezeigt. Ersetzen Sie die Variablen durch den Zielservice und den Ressourcennamen.

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

Benutzern die Zugriffsberechtigung für das Tagging von Ressourcen der klassischen Infrastruktur erteilen

Die Ressourcen der klassischen Infrastruktur, die mit Tags versehen werden können, sind Virtual Guest, Virtual Dedicated Host, Network Application Delivery Controller, Gateway Member, Subnet, VLAN und VLAN Firewall (Dedicated). Führen Sie die folgenden Schritte aus, um einem Benutzer die Servicezugriffsrolle eines Managers zuzuweisen, damit dieser Services der klassischen Infrastruktur mit Tags versehen kann.

  1. Klicken Sie auf Verwalten > Zugriff (IAM) und wählen Sie Benutzer aus.
  2. Klicken Sie in der Tabelle auf den Namen des Benutzers.
  3. Klicken Sie auf Klassische Infrastruktur.
  4. Erweitern Sie auf der Registerkarte Berechtigungen die Kategorie Geräte.
  5. Wählen Sie Hardwaredetails anzeigen und Details zu virtuellen Servern anzeigen aus. Zum Zuweisen der Zugriffsberechtigung für Cloud Object Storage S3, File Storage oder EVault Backup weisen Sie die Berechtigung Speicher verwalten zu. Falls Zugriffsberechtigung für Content Delivery Network zugewiesen werden muss, weisen Sie die Berechtigung CDN-Konto verwalten zu.
  6. Klicken Sie auf Speichern.
  7. Klicken Sie auf die Registerkarte Geräte.
  8. Wählen Sie " Alle Bare-Metal-Server " oder "Alle virtuellen Server", je nachdem, auf welche Ressource der Benutzer Zugriff haben soll.

Benutzern Zugriff auf Tag-Service-IDs gewähren

Führen Sie die folgenden Schritte aus, um die Administratorrolle auf demIAM Identity Service für einen Benutzer:

  1. Klicken Sie auf Verwalten > Zugriff (IAM) und wählen Sie Benutzer aus.
  2. Klicken Sie in der Tabelle auf den Namen des Benutzers.
  3. Wählen Sie den IAM-Identitätsdienst aus und klicken Sie auf Weiter.
  4. Wählen Alle Ressourcen und klicken Sie auf Nächste.
  5. Wählen Sie die Rolle Administrator.
  6. Klicken Rezension >Hinzufügen.
  7. Klicken Sie auf Zuweisen.

Gewährung von Benutzerzugriff auf Tag-Service-IDs über die API

Um die Administratorrolle auf demIAM Identity Service für einen Benutzer, rufen Sie die API zur IAM-Richtlinienverwaltung wie in der folgenden Beispielanforderung gezeigt. Ersetzen Sie die Werte durch die IAM-ID und die Konto-ID Ihres Zielbenutzers.

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