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 IBM Cloud Kubernetes Service 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 IBM Cloud Kubernetes Service 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 IBM Cloud Kubernetes Service. 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 IBM Cloud Kubernetes Service 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 IBM Cloud Kubernetes Service 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 IBM Cloud Kubernetes Service APIs für bestimmte Cluster. Sie können zum Beispiel die API schützen, um einen Cluster zu erstellen.
Anwendungen, die auf IBM Cloud Kubernetes Service Clustern laufen, z.B. Webserver, die von einem Kubernetes LoadBalancer angeboten 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 IBM Cloud Kubernetes Service-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 IBM Cloud Kubernetes Service-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 IBM Cloud Kubernetes Service 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 IBM Cloud Kubernetes Servicezu 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
kubectl-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 für den Typ der Management-API gelten, steuern den Zugriff auf die IBM Cloud Kubernetes Service-APIs, die alle
ibmcloud ks-Befehlsaufrufe wieibmcloud ks clusters,ibmcloud ks 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 IBM Cloud Kubernetes Service 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 IBM Cloud Kubernetes Service 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 IBM Cloud Kubernetes Service eine IAM-Zugriffsrichtlinie für die Zugriffsrolle des Leserservice für IBM Cloud Container Registryerstellt.
- IAM-Zugriffsgruppenservice
- Zulassen, dass IBM Cloud Kubernetes Service Zugriffsgruppen sucht, wenn IAM-Zugriffsrichtlinien mit RBAC im Cluster synchronisiert werden.
- Benutzermanagement
- Zulassen, dass IBM Cloud Kubernetes Service auf Benutzerinformationen zugreift, wenn IAM-Zugriffsrichtlinien mit RBAC im Cluster synchronisiert werden
- Schlüsselschutz:
- Zulassen, dass IBM Cloud Kubernetes Service die Verschlüsselung im Cluster aktiviert
- Block Storage for VPC (Server Protect)
- Erlauben Sie IBM Cloud Kubernetes Service den Zugriff auf und die Verschlüsselung von Block Storage for VPC Volumes.
- VPC
- Erlauben Sie IBM Cloud Kubernetes Service 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 IBM Cloud Kubernetes Service 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 IBM Cloud Kubernetes Service 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 zum Hinzufügen von IBM Cloud Kubernetes Service zu einer Netzzone. Das Attribut serviceRef für IBM Cloud Kubernetes Service 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 IBM Cloud Kubernetes Servicecontainers-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 Service Kubernetes zu Ihren Netzzonen hinzu, damit IBM Cloud Kubernetes Service auf Services und Ressourcen in Ihrem Konto zugreifen kann.
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 IBM Cloud Kubernetes Servicecontainers-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 IBM Cloud Kubernetes Service 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
- Einige IBM Cloud Kubernetes Service-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.