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:
- Klicken Sie in der IBM Cloud-Konsole auf Verwalten > Zugriff (IAM) und wählen Sie Zugriffsgruppe aus.
- Klicken Sie auf Erstellen.
- Geben Sie einen Namen und eine Beschreibung für die Gruppe ein und klicken Sie auf Erstellen.
- 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.
- Klicken Sie auf Zugang > Zugang zuweisen.
- Wählen Sie Alle Services mit aktiviertem Identity and Access Management oder einen bestimmten Service aus.
- Wählen Sie einen bestimmten Standort aus.
- Wählen Sie in der Liste der Plattformzugriffsrollen den Eintrag Bearbeiter aus und klicken Sie auf Überprüfen.
- Klicken Sie auf Hinzufügen, um die Richtlinienkonfiguration zu Ihrer Richtlinienzusammenfassung hinzuzufügen.
- 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.
- Klicken Sie auf Verwalten > Zugriff (IAM) und wählen Sie Benutzer aus.
- Klicken Sie in der Tabelle auf den Namen des Benutzers.
- Klicken Sie auf Klassische Infrastruktur.
- Erweitern Sie auf der Registerkarte Berechtigungen die Kategorie Geräte.
- 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.
- Klicken Sie auf Speichern.
- Klicken Sie auf die Registerkarte Geräte.
- 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:
- Klicken Sie auf Verwalten > Zugriff (IAM) und wählen Sie Benutzer aus.
- Klicken Sie in der Tabelle auf den Namen des Benutzers.
- Wählen Sie den IAM-Identitätsdienst aus und klicken Sie auf Weiter.
- Wählen Alle Ressourcen und klicken Sie auf Nächste.
- Wählen Sie die Rolle Administrator.
- Klicken Rezension >Hinzufügen.
- 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))