Clusterressourcen mit kontextbasierten Einschränkungen schützen
Kontextbasierte Beschränkungen geben Kontobesitzern und Administratoren die Möglichkeit, Zugriffsbeschränkungen für IBM Cloud® Ressourcen auf der Grundlage des Kontexts von Zugriffsanfragen zu definieren und durchzusetzen. Der Zugriff auf die Ressourcen von Red Hat OpenShift on IBM Cloud kann mit kontextbezogenen Einschränkungen und Richtlinien für das Identitäts- und Zugriffsmanagement gesteuert werden.
Diese Einschränkungen können mit herkömmlichen, auf der Identität basierenden IAM-Richtlinien kombiniert werden und so eine zusätzliche Schutzebene bieten. Im Gegensatz zu IAM-Richtlinien weisen kontextbasierte Einschränkungen keine Zugriffsberechtigung zu. Bei kontextbasierten Einschränkungen wird geprüft, ob eine Zugriffsanforderung aus einem zulässigen Kontext stammt, der von Ihnen konfiguriert wird. Da sowohl der IAM-Zugriff als auch die kontextbasierten Einschränkungen den Zugriff durchsetzen, bieten kontextbasierte Einschränkungen Schutz sogar bei beeinträchtigten oder falsch verwalteten Berechtigungsnachweisen. Weitere Informationen finden Sie unter Was sind kontextbasierte Einschränkungen?
Um Regeln zu erstellen, zu aktualisieren oder zu löschen, muss ein Benutzer die Administratorrolle für den Dienst Red Hat OpenShift on IBM Cloud haben. Außerdem muss ein Benutzer über die Rolle 'Editor' oder 'Administrator' für den kontextbasierten Einschränkungsservice verfügen, um Netzzonen erstellen, aktualisieren und löschen zu können.
Alle generierten Activity Tracker-oder Prüfprotokollereignisse stammen aus dem kontextbasierten Einschränkungsservice und nicht aus Red Hat OpenShift on IBM Cloud. Weitere Informationen finden Sie unter Kontextbasierte Einschränkungen für Monitoring.
Versuche, auf die Clusterkontrollebene zuzugreifen, die durch die Verwendung des API-Typs Cluster eingeschränkt werden können, erzeugen keine Activity Tracker oder Audit-Log-Ereignisse.
Integration von Red Hat OpenShift on IBM Cloud mit kontextbasierten Einschränkungen
Sie können kontextbasierte Einschränkungen (CBR) für Ihre Cluster Control Plane APIs oder für die IBM Cloud Cluster Management APIs erstellen. Mit kontextbasierten Einschränkungen können Sie die folgenden Ressourcen schützen:
- Cluster Control Plane APIs
- Schützt den Zugriff auf die Red Hat OpenShift on IBM Cloud APIs für Ihre Cluster oder bestimmte Namespaces in Ihren Clustern. Sie können zum Beispiel die API schützen, um einen Kubernetes Namespace zu erstellen.
- Management-APIs
- Schützt den Zugriff auf die Red Hat OpenShift on IBM Cloud APIs für bestimmte Cluster. Sie können zum Beispiel die API schützen, um einen Cluster zu erstellen.
Anwendungen, die auf Red Hat OpenShift on IBM Cloud Clustern laufen, z. B. Webserver, die von einem Kubernetes LoadBalancer bereitgestellt werden, sind nicht durch CBR-Regeln eingeschränkt.
Clusterressourcen schützen
Sie können CBR-Regeln erstellen, um bestimmte Regionen und Cluster zu schützen.
- Cluster
- Schützt einen bestimmten Red Hat OpenShift on IBM Cloud-Cluster. Wenn Sie einen Cluster in Ihrer CBR-Regel auswählen, kann nur Datenverkehr von Ressourcen in den Netzzonen, die Sie der Regel zuordnen, mit diesem Cluster interagieren.
- Wenn Sie die CLI verwenden, können Sie die Option
--service-instance CLUSTER-IDangeben, um einen bestimmten Cluster zu schützen. - Wenn Sie die API verwenden, können Sie
"name": "serviceInstance","value": "CLUSTER-ID"in den Ressourcenattributen angeben. - Bereich
- Schützt Red Hat OpenShift on IBM Cloud-Ressourcen in einer bestimmten Region Wenn Sie eine Region in Ihrer CBR-Regel auswählen, kann nur der Datenverkehr von Ressourcen in den Netzzonen, die Sie der Regel zuordnen, mit Ressourcen in dieser Region interagieren.
- Wenn Sie die CLI verwenden, können Sie die Option
--region REGIONangeben, um Ressourcen in einer bestimmten Region zu schützen. - Wenn Sie die API verwenden, können Sie das Feld
"name": "region","value": "REGION"in den Ressourcenattributen angeben. - Ressourcengruppe
- Schützt Red Hat OpenShift on IBM Cloud Ressourcen in einer bestimmten Ressourcengruppe.
- Wenn Sie die CLI verwenden, können Sie die Option
--resource-group-id RESOURCE-GROUP-IDangeben, um Ressourcen in einer bestimmten Ressourcengruppe zu schützen. - Wenn Sie die API verwenden, können Sie das Feld
"name": "resourceGroupId","value": "RESOURCE-GROUP-ID"in den Ressourcenattributen angeben.
Bestimmte APIs schützen
Sie können CBR-Regeln erstellen, um die folgenden API-Typen für Red Hat OpenShift on IBM Cloudzu schützen.
- APIs für Clustersteuerebene
- Schützen Sie den Zugriff auf die APIs in Ihren Clustern, wie z. B. die APIs zum Erstellen von Namensbereichen, Pods usw. CBR-Regeln für den Cluster-API-Typ steuern den Zugriff auf Ihren Cluster-API-Server, der alle
oc-Befehle für diesen Cluster enthält. Wenn Sie die APIs der Clustersteuerebene in Ihrer CBR-Regel auswählen, kann nur der Datenverkehr von Ressourcen in den Netzzonen, die dieser Regel zugeordnet sind, mit den APIs der Clustersteuerebene interagieren. Alle anderen Anforderungen werden blockiert. - Wenn Sie die CLI verwenden, können Sie die Option
--api-typesund den Typcrn:v1:bluemix:public:containers-kubernetes::::api-type:clusterangeben. - Wenn Sie die API verwenden, können Sie
"api_type_id": "crn:v1:bluemix:public:containers-kubernetes::::api-type:cluster"in der Spezifikation von"operations"angeben. - Management-APIs
- Schutz des Zugriffs auf APIs für die Bereitstellung und Verwaltung von Clustern, Worker-Pools und mehr. CBR-Regeln, die auf den Management-API-Typ angewendet werden, steuern den Zugriff auf die Red Hat OpenShift on IBM Cloud-APIs, die alle
ibmcloud oc-Befehlsaufrufe wieibmcloud oc clusters,ibmcloud oc cluster createusw. enthalten. Wenn Sie die Management-APIs in Ihrer CBR-Regel auswählen, können Ressourcen in der Netzzone, die der Regel zugeordnet sind, mit den Management-APIs interagieren. - Wenn Sie die CLI verwenden, können Sie die Option
--api-typesund den Typcrn:v1:bluemix:public:containers-kubernetes::::api-type:managementangeben. - Wenn Sie die API verwenden, können Sie
"api_type_id": "crn:v1:bluemix:public:containers-kubernetes::::api-type:management"in der Spezifikation von"operations"angeben.
Ein Beispiel für ein CBR-Szenario finden Sie unter Kontextbasierte Einschränkungen einrichten.
Um eine Liste der Dienstreferenzziele in der CLI zu erhalten, führen Sie den Befehl ibmcloud cbr service-ref-targets aus.
Sicherstellen, dass Red Hat OpenShift on IBM Cloud den Zugang zu anderen IBM Cloud Ressourcen aufrechterhalten kann, wenn CBR für sie aktiviert ist
Sie müssen die containers-kubernetes Ihren Netzzonen für Regeln hinzufügen, die für die folgenden Services erstellt wurden.
- IAM Identity Service
- Zulassen, dass Red Hat OpenShift on IBM Cloud Tokens und API-Schlüssel wie den Cluster-API-Schlüssel und das Token und den API-Schlüssel IBM Cloud Container Registry erstellt.
- IAM-Zugriffsmanagement-Service
- Zulassen, dass Red Hat OpenShift on IBM Cloud eine IAM-Zugriffsrichtlinie für die Zugriffsrolle des Leserservice für IBM Cloud Container Registryerstellt.
- IAM-Zugriffsgruppenservice
- Zulassen, dass Red Hat OpenShift on IBM Cloud Zugriffsgruppen sucht, wenn IAM-Zugriffsrichtlinien mit RBAC im Cluster synchronisiert werden.
- Benutzermanagement
- Zulassen, dass Red Hat OpenShift on IBM Cloud auf Benutzerinformationen zugreift, wenn IAM-Zugriffsrichtlinien mit RBAC im Cluster synchronisiert werden
- IBM Cloud Object Storage
- Zulassen, dass Red Hat OpenShift on IBM Cloud die internen Registry-Images in VPC-Clustern sichert.
- Schlüsselschutz:
- Zulassen, dass Red Hat OpenShift on IBM Cloud die Verschlüsselung im Cluster aktiviert.
- Block Storage for VPC (Server Protect)
- Erlauben Sie Red Hat OpenShift on IBM Cloud den Zugriff auf und die Verschlüsselung von Block Storage for VPC Volumes.
- VPC
- Erlauben Sie Red Hat OpenShift on IBM Cloud den Zugriff auf Ressourcen in der VPC.
Netzzonen erstellen
Netzzonen dienen als Zulassungslisten für die Zielressourcen, die bei der Erstellung von CBR-Regeln definiert werden. Nachdem Sie eine Netzzone oder Zulassungsliste erstellt haben, können Sie Regeln erstellen, die definieren, auf welche Ressourcen die Netzzone zugreifen kann.
Stellen Sie sicher, dass Sie den Dienst containers-kubernetes zu Ihren Netzwerkzonen für Regeln hinzufügen, die für andere IBM Cloud-Ressourcen gelten, wie z. B. eine Regel, die IBM Cloud Object Storage schützt, da sonst einige
Clusteroperationen fehlschlagen könnten. Weitere Informationen finden Sie unter Ermöglichung des Zugriffs von Red Hat OpenShift on IBM Cloud auf andere IBM Cloud-Ressourcen durch Verwendung von CBR.
Überprüfen Sie die Einschränkungen, bevor Sie Netzzonen erstellen.
Netzzonen über die Anwendungsprogrammierschnittstelle erstellen
Sie können Netzzonen mithilfe der /v1/zones-API erstellen. Weitere Informationen finden Sie in den API-Dokumenten. Sie können den containers-kubernetes-Service
zu Ihren Netzzonen hinzufügen, damit Red Hat OpenShift on IBM Cloud auf Ressourcen und Services in Ihrem Konto zugreifen kann.
Sie können mehrere Adresstypen in die Nutzdaten Ihrer Netzzone einschließen. Weitere Informationen finden Sie in den Beispielnutzdaten in der API-Dokumentation.
Beispielnutzdaten für das Hinzufügen von Red Hat OpenShift on IBM Cloud zu einer Netzzone Das Attribut serviceRef für Red Hat OpenShift on IBM Cloud ist containers-kubernetes.
{
"name": "Example zone 1",
"description": "",
"addresses": [
{
"type": "serviceRef",
"ref": {
"service_name": "containers-kubernetes",
"account_id": "ACCOUNT-ID"
}
}
]
}
Beispielnutzdaten zum Hinzufügen mehrerer Services, IP-Adressen und VPCs zu einer Netzzone.
{
"name": "zone",
"description": "",
"addresses": [
{
"type": "ipAddress",
"value": "192.168.0.0"
},
{
"type": "vpc",
"value": "crn:v1:bluemix:public:is:us-east:a/CRN"
},
{
"type": "vpc",
"value": "crn:v1:bluemix:public:is:us-south:a/CRN"
},
{
"type": "serviceRef",
"ref": {
"service_name": "cloud-object-storage",
"account_id": "ACCOUNT-ID"
}
},
{
"type": "serviceRef",
"ref": {
"service_name": "codeengine",
"account_id": "ACCOUNT-ID"
}
},
{
"type": "serviceRef",
"ref": {
"service_name": "containers-kubernetes",
"account_id": "ACCOUNT-ID"
}
},
{
"type": "serviceRef",
"ref": {
"service_type": "platform_service",
"account_id": "ACCOUNT-ID"
}
},
{
"type": "serviceRef",
"ref": {
"service_name": "iam-groups",
"account_id": "ACCOUNT-ID"
}
}
],
"excluded": []
}
Netzzonen über die Befehlszeilenschnittstelle erstellen
-
Um Netzzonen über die Befehlszeilenschnittstelle zu erstellen, installieren Sie das CBR-CLI-Plug-in.
-
Mit dem Befehl
cbr-zone-createkönnen Sie Netzzonen Ressourcen hinzufügen. Weitere Informationen finden Sie in der CLI-Referenz für CBR. Beachten Sie, dass dieservice_namefür Red Hat OpenShift on IBM Cloudcontainers-kubernetesist.Führen Sie den
ibmcloud cbr service-ref-targets-Befehl aus, um eine Liste der verfügbaren Serviceverweise zu suchen.Beispielbefehl zum Hinzufügen des
containers-kubernetes-Service zu einer Netzzone.ibmcloud cbr zone-create --name example-zone-1 --description "Example zone 1" --service-ref service_name=containers-kubernetesIm folgenden Beispiel wird eine Netzzone erstellt, um den Zugriff auf eine einzelne öffentliche IP-Adresse zuzulassen. Sie können dieses Beispiel auch zusammen mit der einen IP-Beispielregel verwenden. Weitere Informationen zu diesem Szenario finden Sie unter Kontextbasierte Einschränkungen einrichten.
ibmcloud cbr zone-create --addresses 129.41.86.7 --description "Allow only client IP" --name allow-client-ip
Netzzonen über die Konsole erstellen
- Bestimmen Sie die Ressourcen, die Sie Ihrer Zulassungsliste hinzufügen möchten.
- Führen Sie die Schritte zum Erstellen kontextbasierter Einschränkungen in der Konsole aus. Fügen Sie den Kubernetes-Service zu Ihren Netzzonen hinzu und ermöglichen Sie Red Hat OpenShift on IBM Cloud den Zugriff auf Services und Ressourcen in Ihrem Konto.
Regeln erstellen
Definieren Sie Regeln zum Schutz des Zugriffs auf Ressourcen in Ihrem Konto. Die Kontexte, die Sie in Ihren Regeln definieren, bestimmen, wie die Ressourcen in Ihren Netzzonen (Zulassungslisten) mit den in der Regel definierten Ressourcen interagieren können.
Prüfen Sie die Einschränkungen, bevor Sie Regeln erstellen.
Regeln mithilfe der API erstellen
Sehen Sie sich die folgenden Beispielanforderungen zum Erstellen von Regeln an. Weitere Informationen zur v1/rules-API finden Sie in der API-Dokumentation.
Nachdem Sie eine Regel erstellt haben, kann es bis zu 10 Minuten dauern, bis Sie diese Regel aufgrund des IAM-TTL-Antwortcaching aktualisieren können.
Die folgenden Beispielnutzdaten erstellen eine Regel, die den CLUSTER-ID-Cluster schützt. Nur Ressourcen in der Zone NETWORK-ZONE-ID können auf den Cluster zugreifen. Da keine operations angegeben sind,
können Ressourcen in der NETWORK-ZONE-ID-Zone sowohl auf die cluster-als auch auf die management-APIs zugreifen.
{
"description": "Example rule 1",
"resources": [
{
"attributes": [
{
"name": "accountId",
"value": "ACCOUNT-ID"
},
{
"name": "serviceName",
"value": "containers-kubernetes"
},
{
"name": "serviceInstance",
"value": "CLUSTER-ID"
}
]
}
],
"contexts": [
{
"attributes": [
{
"name": "networkZoneId",
"value": "NETWORK-ZONE-ID"
},
{
"name": "endpointType",
"value": "private"
}
]
}
]
}
Die folgenden Beispielnutzdaten erstellen eine Regel, die den CLUSTER-ID-Cluster schützt. Nur die in der Zone NETWORK-ZONE-ID definierten Ressourcen können auf den Cluster zugreifen. Da der API-Typ cluster angegeben ist, können Ressourcen in der Zone NETWORK-ZONE-ID über die Cluster-APIs über das private Netz auf den Cluster zugreifen.
{
"description": "Example rule 2",
"resources": [
{
"attributes": [
{
"name": "accountId",
"value": "ACCOUNT-ID"
},
{
"name": "serviceName",
"value": "containers-kubernetes"
},
{
"name": "serviceInstance",
"value": "CLUSTER-ID"
}
]
}
],
"operations": {
"api_types": [
{
"api_type_id": "crn:v1:bluemix:public:containers-kubernetes::::api-type:cluster"
}
]
},
"contexts": [
{
"attributes": [
{
"name": "networkZoneId",
"value": "NETWORK-ZONE-ID"
},
{
"name": "endpointType",
"value": "private"
}
]
}
]
}
Regeln über die CLI erstellen
- Um Regeln über die Befehlszeilenschnittstelle zu erstellen, installieren Sie das CBR-CLI-Plug-in.
- Sie können den
ibmcloud cbr rule-create-Befehl verwenden, um CBR-Regeln zu erstellen. Weitere Informationen finden Sie in der CLI-Referenz für CBR. Beachten Sie, dass dieservice_namefür Red Hat OpenShift on IBM Cloudcontainers-kubernetesist. Führen Sie den Befehlibmcloud cbr service-ref-targetsaus, um eine Liste der Servicenamen zu suchen. Führen Sie den Befehlibmcloud cbr api-types --service-name SERVICEaus, um eine Liste der API-Typen für einen Service zu suchen.
Beispielbefehl zum Erstellen einer Regel, die den Schlüssel addresses und den API-Typ cluster sowie den Typ ipAddress verwendet.
ibmcloud cbr rule-create my-rule-1 --service-name containers-kubernetes --api-type crn:v1:bluemix:public:containers-kubernetes::::api-type:cluster --zone-id ZONE-ID
Der folgende Befehl erstellt eine Regel, die den CLUSTER-ID-Cluster schützt. Nur Ressourcen in der NETWORK-ZONE-ID-Netzzone können auf den Cluster zugreifen. Diese Regel enthält die API-Typen cluster und management.
ibmcloud cbr rule-create my-rule-2 --service-name containers-kubernetes --service-instance CLUSTER-ID --zone-id NETWORK-ZONE-ID
Der folgende Beispielbefehl erstellt eine Regel, die alle privaten Netzverbindungen zulässt, aber nur Ressourcen in der Netzzone allow-client-ip über das öffentliche Netz eine Verbindung zum Cluster herstellen kann. Weitere Informationen
zu diesem Szenario finden Sie unter Einrichten kontextbezogener Einschränkungen.
ibmcloud cbr rule-create --api-types crn:v1:bluemix:public:containers-kubernetes::::api-type:cluster --description "privateAccess=allowAll, publicAccess=oneIP" --service-name containers-kubernetes --service-instance CLUSTER-ID --context-attributes endpointType=private --context-attributes endpointType=public,networkZoneId=allow-client-ip
Erstellen von Regeln über die Konsole
- Prüfen Sie die verfügbaren Kontexte und bestimmen Sie die Regeln, die Sie erstellen wollen.
- Führen Sie die Schritte zum Erstellen kontextbasierter Einschränkungen in der Konsole aus.
Einschränkungen
- Nach der Erstellung, Durchsetzung oder Inaktivierung einer Regel kann es bis zu 10 Minuten dauern, bis die Änderung wirksam wird.
- Die folgenden Einschränkungen gelten für Red Hat OpenShift on IBM Cloud CBR-Regeln, die für alle API-Typen oder die
clusterAPI-Typen gelten:- Sie dürfen nicht auf Netzwerkzonen verweisen, die IPv6 Adressen enthalten. Die im Typ
clusterenthaltenen APIs unterstützen IPv6 nicht. - Sie dürfen nicht auf andere Dienste wie IBM Cloud Object Storage oder Key Protect in den angewandten Netzwerkzonen verweisen.
- Sie unterstützen nicht die
Report-onlyDurchsetzung für den API-Typ "Cluster". - Sie sind auf maximal 200 IPs/Subnets für private Regeln und 500 IPs/Subnets für öffentliche Regeln beschränkt.
- Sie dürfen nicht auf Netzwerkzonen verweisen, die IPv6 Adressen enthalten. Die im Typ
- Wenn Sie Red Hat OpenShift on IBM Cloud-Cluster in VPC mit einem öffentlichen Serviceendpunkt zu Ihrem Cluster hinzufügen, müssen Sie sicherstellen, dass Sie auch die öffentlichen Gateway-IP-Adressen Ihrer VPC-Teilnetze zu Ihren CBR-Regeln hinzufügen. Wenn Sie die öffentlichen Gateway-IPs nicht einschließen, funktionieren Ihre Red Hat OpenShift-Konsolenpods nicht ordnungsgemäß, da diese Pods auf den Oauth-Port des Cluster-Masters mit dem öffentlichen Netz zugreifen müssen.
- Einige Red Hat OpenShift on IBM Cloud-Cluster, die vor dem 8. Oktober 2022 erstellt wurden, können keine öffentlichen CBR-Regeln für den APIserver des Clusters durchsetzen. Führen Sie den Befehl
ibmcloud ks cluster get -c <CLUSTER-ID>aus, um zu überprüfen, ob Ihr Cluster diese CBR-Regeln des Typs "Public Cluster API" unterstützt. Wenn eine der Serviceendpunkt-URLs mithttps://cXXXbeginnt (XXX ist eine beliebige dreistellige Zahl), unterstützt der Cluster öffentliche CBR-Regeln. Wenn die Serviceendpunkt-URLs mithttps://cXbeginnen (wobei die Zahl nachceine einzelne Ziffer ist), kann der Cluster keine öffentlichen CBR-Regeln für den APIserver des Clusters durchsetzen. Um öffentliche CBR-Regeln verwenden zu können, müssen Sie einen neuen Cluster erstellen.