IAM-Zugriff für VPC-Infrastrukturservices verwalten
Der Zugriff auf IBM Cloud® Virtual Private Cloud-Serviceinstanzen für Benutzer in Ihrem Konto wird von Cloud Identity and Access Management (IAM) gesteuert. Jedem Benutzer, der in Ihrem Konto auf den Dienst „ VPC Infrastructure Services “ zugreift, muss eine Zugriffsrichtlinie mit einer IAM-Rolle zugewiesen werden. Sehen Sie sich die folgenden Rollen, Aktionen und weitere Informationen an, um zu ermitteln, wie Sie die Zugriffsrechte für VPC Infrastructure Services am besten zuweisen können.
Die Zugriffsrichtlinie, die Sie Benutzern in Ihrem Konto zuordnen, bestimmt, welche Aktionen ein Benutzer im Kontext des von Ihnen ausgewählten Service oder der betreffenden Instanz ausführen kann. Die zulässigen Aktionen werden angepasst und
von VPC Infrastructure Services als Operationen definiert, die Sie für den Service ausführen dürfen. Jede Aktion wird einer IAM-Plattform- oder -Servicerolle zugeordnet, die Sie einem Benutzer zuweisen können.
Wenn eine bestimmte Rolle und die zugehörigen Aktionen nicht für den Anwendungsfall geeignet sind, den Sie bearbeiten möchten, können Sie eine angepasste Rolle erstellen und die Aktionen auswählen, die einbezogen werden sollen.
IAM-Zugriffsrichtlinien ermöglichen die Gewährung von Zugriffsrechten auf verschiedenen Ebenen. Die folgenden Optionen sind enthalten:
- Zugriff auf alle Instanzen des Service in Ihrem Konto
- Zugriff auf eine einzelne Serviceinstanz in Ihrem Konto
- Zugriff auf eine bestimmte Ressource innerhalb einer Instanz, wie beispielsweise
vpcIdoderinstanceId.
In der folgenden Tabelle sind die Attribute der VPC-Ressourcen aufgeführt. Weitere Informationen finden Sie unter VPC-Ressourcenattribute.
| Ressource | Ressourcenattribut |
|---|---|
| Auto Scale for VPC | instanceGroupId:<instance-group-id> |
| Sicherungsservice | backupPolicyId: <backup-policy-id> |
| Block Storage for VPC | volumeId: <volume-id> |
| Bare-Metal-Server | bareMetalServerId: <bare-metal-server-id> |
| Cluster-Netzwerke für VPC | clusterNetworkId: <cluster-network-id> |
| Dedicated Host for VPC | dedicatedHostId:<dedicated-host-id> |
| File Storage | shareId: <share-id> |
| Floating IP for VPC | floatingIpId: <fip-id> |
| Flow Logs for VPC | flowLogCollectorId: <flc-id> |
| Image Service for VPC | imageId:<image-id> |
| Load Balancer for VPC | loadBalancerId: <load-balancer-id> |
| Network ACL | networkAclId: <nacl-id> |
| Platzierungsgruppe für VPC | placementGroupId: <placement-group-id> |
| Private Path-Dienste für VPC | privatePathServiceGatewayId: <private-path-service-gateway-id> |
| Öffentlicher Adressbereich für VPC | publicAddressRangeId: <public-address-range-id> |
| Public Gateway for VPC | publicGatewayId: <pgw-id> |
| Reservierungen für VPC | reservationId: <reservation-id> |
| Security Group for VPC | securityGroupId: <default-sec-grp-id> |
| Snapshots | snapshotId: <snapshot-id> |
| SSH Key for VPC | keyId:<key-id> |
| Teilnetz | subnetId: <subnet-id> |
| Virtuelle Netzschnittstelle | virtualNetworkInterfaceId:<virtual-network-interface-id> |
| Virtual Private Endpoint for VPC | endpointGatewayId:<endpoint-gateway-id> |
| Virtual Private Cloud | vpcId: <vpc-id> |
| Virtual Server for VPC | instanceId: <instance-id> |
| VPN for VPC | vpnGatewayID: <vpn-gateway-id> |
Sehen Sie sich die folgenden Tabellen an, in denen aufgeführt ist, welche Arten von Aufgaben die einzelnen Rollen bei der Arbeit mit dem Dienst „ VPC Infrastructure Services “ zulassen. Plattformmanagementrollen ermöglichen Benutzern,
Tasks für Serviceressourcen auf Plattformebene auszuführen. Beispielsweise können Sie Benutzern Zugriff auf den Dienst gewähren, Instanzen erstellen oder löschen und Instanzen an Anwendungen binden. Servicezugriffsrollen ermöglichen den Benutzerzugriff
auf VPC Infrastructure Services und die Möglichkeit, die VPC Infrastructure Services-API aufzurufen.
| Plattformrolle | Beschreibung der Aktionen |
|---|---|
| Anzeigeberechtigter | Sie können Service-Instanzen anzeigen, aber nicht ändern. |
| Operator | Sie können Plattformaktionen ausführen, die für die Konfiguration und den Betrieb von Service-Instanzen erforderlich sind, beispielsweise das Anzeigen eines Service-Dashboards. |
| Bearbeiter | Sie können alle Plattformaktionen ausführen, mit Ausnahme der Kontoverwaltung und der Zuweisung von Zugriffsrichtlinien. |
| Administrator | Sie können alle Plattformaktionen durchführen, die auf der Ressource basieren, der diese Rolle zugewiesen ist, einschließlich der Zuweisung von Zugriffsrichtlinien an andere Benutzer. |
| Servicerolle | Beschreibung der Aktionen |
|---|---|
| Leseberechtigter | Innerhalb eines Dienstes können Sie Lesezugriffe durchführen, beispielsweise das Anzeigen dienstbezogener Ressourcen. |
| Schreibberechtigter | Sie verfügen über Berechtigungen, die über die Rolle „Leser“ hinausgehen, darunter das Erstellen und Bearbeiten von dienstbezogenen Ressourcen. |
| Manager | Sie verfügen über Berechtigungen, die über die Rolle „Writer“ hinausgehen und es Ihnen ermöglichen, privilegierte Aktionen durchzuführen, wie sie vom Dienst definiert sind. Außerdem können Sie servicespezifische Ressourcen erstellen und bearbeiten. |
| VPN-Client | Sie müssen nur diese Rolle auswählen, wenn Sie VPN-Clients, für die die Authentifizierung mit Benutzer-ID und Kenncode konfiguriert ist, Zugriff zuweisen müssen. Wenn Sie die Benutzer-ID und die Kenncodeauthentifizierung konfigurieren müssen, lesen Sie die Informationen unter Benutzer-IDs und Kenncodes konfigurieren. |
| Erweiterter Bare-Metal-Netzoperator | Sie haben Zugriff zum Ändern von IP-Spoofing und Infrastruktur-NAT auf Bare-Metal-Schnittstellen. |
| Bare-Metal-Konsolen-Administrator | Sie können auf die Bare-Metal-Serverkonsole zugreifen. |
| IP-Spoofing-Operator | Sie können die IP-Spoofing-Prüfung für virtuelle Serverinstanzen aktivieren oder inaktivieren. Erteilen Sie diese Rolle nur bei Bedarf. |
| Konsolenadministrator | Sie können auf die Konsole der virtuellen Serverinstanz zugreifen. Diese Rolle gewährt lediglich Konsolenzugriff und muss mit einer anderen Rolle kombiniert werden, die über Betreiberzugriff auf den virtuellen Server verfügt, beispielsweise „Operator“, „Editor“ oder „Administrator“. |
Weitere Informationen zu den genauen Aktionen, die den einzelnen Rollen zugeordnet sind, finden Sie unter Infrastructure Services auf der Seite mit den IAM-Rollen
und -Aktionen.
Über die folgenden Links gelangen Sie direkt zu dem jeweiligen Infrastrukturservice auf der IAM-Seite für Rollen und Aktionen.
IAM-Rollen und -Aktionen im Netzwerk
- Cluster-Netzwerke für VPC
- Floating IP for VPC
- Flow Logs for VPC
- Load Balancer for VPC
- Network ACL
- privater Pfadservice
- öffentlicher Adressbereich
- Public Gateway
- Routing-Tabellen (siehe Abschnitt Virtual Private Cloud > Registerkarte Aktionen)
- Security Group for VPC
- Teilnetze
- Virtual Private Cloud
- Virtual Private Endpoint for VPC
- VPN for VPC
- VPN-Client für VPC
- Virtuelle Netzschnittstelle
IAM-Rollen und -Aktionen berechnen
IAM-Rollen und -Aktionen für den Speicher
- Block Storage for VPC
- Block Storage-Snapshots für VPC
- Block Storage Mehrere Datenträgermomentaufnahmen für VPC
- Backup as a Service für VPC
- File Storage for VPC
Einige VPC-Tasks erfordern Berechtigungen für mehrere IAM-Aktionen. Beispielsweise erfordert die Erstellung einer virtuellen Serverinstanz nicht nur is.instance.instance.create, sondern auch is.vpc.vpc.operate, is.subnet.subnet.operate,
is.security-group.security-group.operate und is.volume.volume.create. Möglicherweise sind zusätzliche bedingte Aktionen erforderlich. Wenn Sie beispielsweise eine Instanz auf einem dedizierten Host bereitstellen,
benötigen Sie is.dedicated-host.dedicated-host-group.operate und is.dedicated-host.dedicated-host.operate. Die API-Referenz für Virtual Private Cloud enthält einen Berechtigungsabschnitt für jeden API-Aufruf, z. B.
Instanz erstellen.
Zugriff auf VPC-Infrastrukturservices in der Konsole zuweisen
Es gibt zwei gängige Möglichkeiten, in der Konsole Zugriffsrechte zuzuweisen:
- Zugriffsrichtlinien pro Benutzer. Sie können Zugriffsrichtlinien pro Benutzer über die Seite Verwalten > Zugriff (IAM) > Benutzer in der Konsole verwalten. Weitere Informationen zu den Schritten zum Zuordnen von IAM-Zugriff finden Sie unter Zugriff auf Ressourcen verwalten.
- Zugriffsgruppen. Zugriffsgruppen werden verwendet, um das Zugriffsmanagement zu optimieren, indem Sie einer Gruppe einmal Zugriff erteilen. Anschließend können Sie Benutzer nach Bedarf zu der Gruppe hinzufügen oder aus der Gruppe entfernen, um ihren Zugriff zu steuern. Sie verwalten Zugriffsgruppen und deren Zugriff über die Seite Verwalten > Zugriff (IAM) > Zugriffsgruppen in der Konsole. Weitere Informationen finden Sie unter Zugriff auf eine Gruppe in der Konsole zuweisen.
Zugriff auf VPC-Infrastrukturservices in der Befehlszeilenschnittstelle zuweisen
Schrittweise Anleitungen zum Zuweisen, Entfernen und Prüfen des Zugriffs finden Sie unter Zugriff auf Ressourcen über die Befehlszeilenschnittstelle zuweisen.
Das folgende Beispiel zeigt einen Befehl für die Zuordnung der Rolle Viewer für VPC Infrastructure Services:
Verwenden Sie is als Servicenamen. Setzen Sie außerdem Anführungszeichen um Rollennamen, die aus mehr als einem Wort bestehen, wie im folgenden Beispiel gezeigt.
ibmcloud iam user-policy-create USER@EXAMPLE.COM --service-name is --roles "Viewer"
Zugriff auf VPC-Infrastrukturservices über die API zuweisen
Eine Schritt-für-Schritt-Anleitung zum Zuweisen, Entziehen und Überprüfen von Zugriffsrechten finden Sie unter Zugriffsrechte auf Ressourcen über die API zuweisen oder Eine Policy-API erstellen. Die Cloudressourcennamen (CRN) der Rolle in der folgenden Tabelle werden verwendet, um Zugriff mit der API zuzuweisen.
| Rollenname | Rollen-CRN |
|---|---|
| Anzeigeberechtigter | crn:v1:bluemix:public:iam::::role:Viewer |
| Operator | crn:v1:bluemix:public:iam::::role:Operator |
| Bearbeiter | crn:v1:bluemix:public:iam::::role:Editor |
| Administrator | crn:v1:bluemix:public:iam::::role:Administrator |
| Leseberechtigter | crn:v1:bluemix:public:iam::::serviceRole:Reader |
| Schreibberechtigter | crn:v1:bluemix:public:iam::::serviceRole:Writer |
| Manager | crn:v1:bluemix:public:iam::::serviceRole:Manager |
| VPN-Client | crn:v1:bluemix:public:iam::::serviceRole:VPNClient |
| Erweiterter Bare-Metal-Netzoperator | crn:v1:bluemix:public:iam::::serviceRole:BareMetalAdvancedNetworkOperator |
| Bare-Metal-Konsolen-Administrator | crn:v1:bluemix:public:iam::::serviceRole:BareMetalConsoleAdmin |
| IP-Spoofing-Operator | crn:v1:bluemix:public:iam::::serviceRole:IPSpoofingOperator |
| Konsolenadministrator | crn:v1:bluemix:public:iam::::serviceRole:VirtualServerConsoleAdmin |
Im folgenden Beispiel wird die Rolle Viewer für VPC Infrastructure Services zugeordnet:
Geben Sie als Dienstnamen „ is “ ein und überprüfen Sie anhand der Tabelle mit den Rollen-ID-Werten, ob Sie den richtigen Wert für die CRN verwenden.
curl -X POST 'https://iam.cloud.ibm.com/v1/policies' -H 'Authorization: Bearer $TOKEN' -H 'Content-Type: application/json' -d '{
"type": "access",
"description": "Object Writer role for Cloud Object Storage",
"subjects": [
{
"attributes": [
{
"name": "iam_id",
"value": "IBMid-123453user"
}
]
}'
],
"roles":[
{
"role_id": "crn:v1:bluemix:public:iam::::role:Viewer"
}
],
"resources":[
{
"attributes": [
{
"name": "accountId",
"value": "$ACCOUNT_ID"
},
{
"name": "serviceName",
"value": "is"
}
]
}
]
}
SubjectAttribute subjectAttribute = new SubjectAttribute.Builder()
.name("iam_id")
.value("IBMid-123453user")
.build();
PolicySubject policySubjects = new PolicySubject.Builder()
.addAttributes(subjectAttribute)
.build();
PolicyRole policyRoles = new PolicyRole.Builder()
.roleId("crn:v1:bluemix:public:iam::::role:Viewer")
.build();
ResourceAttribute accountIdResourceAttribute = new ResourceAttribute.Builder()
.name("accountId")
.value("ACCOUNT_ID")
.operator("stringEquals")
.build();
ResourceAttribute serviceNameResourceAttribute = new ResourceAttribute.Builder()
.name("serviceName")
.value("is")
.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: 'IBMid-123453user',
},
],
},
];
const policyRoles = [
{
role_id: 'crn:v1:bluemix:public:iam::::role:Viewer',
},
];
const accountIdResourceAttribute = {
name: 'accountId',
value: 'ACCOUNT_ID',
operator: 'stringEquals',
};
const serviceNameResourceAttribute = {
name: 'serviceName',
value: 'is',
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='IBMid-123453user')])
policy_roles = PolicyRole(
role_id='crn:v1:bluemix:public:iam::::role:Viewer')
account_id_resource_attribute = ResourceAttribute(
name='accountId', value='ACCOUNT_ID')
service_name_resource_attribute = ResourceAttribute(
name='serviceName', value='is')
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: core.StringPtr("IBMid-123453user"),
}
policySubjects := &iampolicymanagementv1.PolicySubject{
Attributes: []iampolicymanagementv1.SubjectAttribute{*subjectAttribute},
}
policyRoles := &iampolicymanagementv1.PolicyRole{
RoleID: core.StringPtr("crn:v1:bluemix:public:iam::::role:Viewer"),
}
accountIDResourceAttribute := &iampolicymanagementv1.ResourceAttribute{
Name: core.StringPtr("accountId"),
Value: core.StringPtr("ACCOUNT_ID"),
Operator: core.StringPtr("stringEquals"),
}
serviceNameResourceAttribute := &iampolicymanagementv1.ResourceAttribute{
Name: core.StringPtr("serviceName"),
Value: core.StringPtr("is"),
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))
Zugriff auf VPC-Infrastrukturservices mithilfe von Terraform zuweisen
Im folgenden Beispiel wird die Rolle Viewer für VPC Infrastructure Services zugeordnet:
Verwenden Sie is als Servicenamen.
resource "ibm_iam_user_policy" "policy" {
ibm_id = "test@example.com"
roles = ["Viewer"]
resources {
service = "is"
}
}
Weitere Informationen finden Sie unter ibm_iam_user_policy.
Tipps:
- Der Zugriff auf eine Containerressource umfasst nicht automatisch auch den Zugriff auf die zugehörigen Unterressourcen. Wenn z. B. der Zugriff auf eine VPC-Instanz erteilt wird, dann wird dadurch nicht auch der Zugriff auf die Teilnetze in dieser VPC-Instanz erteilt.
- Der Zugriff auf eine Unterressource führt in ähnlicher Weise auch nicht zur Erteilung des Zugriffs auf die zugehörige Containerressource. Wenn z. B. der Zugriff auf ein Teilnetz erteilt wird, dann wird dadurch nicht auch der Zugriff auf die VPC-Instanz dieses Teilnetzes erteilt.
- Im Allgemeinen benötigt der Benutzer zum Ändern der Beziehung zwischen mehreren Ressourcen Zugriff auf alle betroffenen Ressourcen. Um beispielsweise einer Sicherheitsgruppe eine Netzschnittstelle zuzuordnen, benötigt der Benutzer Zugriff auf die entsprechende Netzschnittstelle und auch auf die entsprechende Sicherheitsgruppe.
Weitere Informationen zum Zuweisen von Benutzerrollen in der Konsole finden Sie unter „ Verwalten von Benutzerberechtigungen für VPC-Ressourcen “.
Sie können Benutzerrollen auch in der IBM Cloud®-Befehlszeilenschnittstelle zuweisen. Sie können Ressourcen anhand ihrer Ressourcenattribute auswählen. Weitere Informationen finden Sie unter VPC-Ressourcenattribute.
Ressourcengruppen
Eine Ressourcengruppe ist eine Sammlung von Ressourcen, wie beispielsweise eine gesamte VPC oder ein einzelnes Subnetz, die zum Zweck der Autorisierung und Nutzungserfassung miteinander verknüpft sind. Eine Ressourcengruppe kann als eine Sammlung von Infrastrukturressourcen angesehen werden, die von einem Projekt, einer Abteilung oder einem Team verwendet werden können.
In großen Unternehmen können VPC-Instanzen in verschiedene Ressourcengruppen unterteilt werden, wohingegen in kleineren Unternehmen möglicherweise nur eine Ressourcengruppe benötigt wird, da alle Teammitglieder Zugriff auf die gesamte VPC-Instanz haben. Wenn Sie mit OpenStack vertraut sind, ähnelt eine Ressourcengruppe dem Konzept einer Projekt in OpenStack Keystone.
Die Zuordnung einer Ressource zu einer Ressourcengruppe kann nur bei der Erstellung der jeweiligen Ressource ausgeführt werden. Ressourcen können nach ihrer Erstellung keiner anderen Ressourcengruppe zugeordnet werden.
Wenn Sie mehrere Ressourcengruppen verwenden möchten, sollten Sie im Voraus planen, wie Sie die Ressourcen und die Benutzer in Ihrer Organisation den einzelnen Ressourcengruppen zuweisen möchten.
Weitere Informationen zur Ressourcengruppe finden Sie unter Ressourcengruppen.