Kataloge mit kontextbasierten Einschränkungen schützen
Kontextbasierte Einschränkungen ermöglichen es Kontoinhabern und Administratoren, Zugriffsbeschränkungen für IBM Cloud®-Ressourcen basierend auf dem Kontext von Zugriffsanfragen zu definieren und durchzusetzen. Der Zugriff auf Kataloge (Katalogverwaltungsservice) kann mit kontextbasierten Einschränkungen und IAM-Richtlinien (Identity and Access Management) gesteuert werden.
Diese Einschränkungen funktionieren mit herkömmlichen IAM-Richtlinien, die auf Identität basieren, und bieten eine weitere Schutzebene. 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?
Alle generierten IBM Cloud Activity Tracker-oder Prüfprotokollereignisse stammen aus dem kontextbasierten Einschränkungsservice, nicht aus der Katalogverwaltung. Weitere Informationen finden Sie unter Kontextbasierte Einschränkungen für Monitoring.
Vorbereitende Schritte
Überprüfen Sie die folgenden Zugangsvoraussetzungen:
- Ein Benutzer muss über die Administratorrolle für den Katalogverwaltungsservice verfügen, um Regeln erstellen, aktualisieren oder löschen zu können.
- Ein Benutzer muss außerdem über die Rolle 'Editor' oder 'Administrator' für den kontextbasierten Einschränkungsservice verfügen, um Netzzonen erstellen, aktualisieren oder löschen zu können.
- Ein Benutzer mit der Rolle des Anzeigeberechtigten für den kontextbasierten Einschränkungsservice kann einer Regel nur Netzzonen hinzufügen.
Informationen zum Schutz Ihrer Kataloge mit kontextbasierten Einschränkungen finden Sie im Lernprogramm Kontextbasierte Einschränkungen zum Schutz Ihrer Ressourcen nutzen.
Integration von Katalogen mit kontextbasierten Einschränkungen
Bestimmte APIs schützen
Sie können kontextbasierte Einschränkungen erstellen, um die folgenden APIs für den Katalogverwaltungsservice zu schützen.
- Service-APIs
- Ziel-Service-APIs zum Schutz von Aktionen wie die gemeinsame Nutzung privater Kataloge und die Verwaltung von Katalogeinstellungen.
- Plattform-APIs
- Zielplattform-APIs zum Schutz von Erstellungs-, Aktualisierungs-und Löschaktionen für Ihre privaten Kataloge. Wenn eine kontextbasierte Einschränkung die APIs der Katalogverwaltungsplattform schützt, müssen Benutzer die Regel zum Anzeigen der von Ihnen angegebenen privaten Kataloge erfüllen.
Bestimmte Ressourcen schützen
Sie können bestimmte Ressourcen schützen, indem Sie Ihre Regel den verfügbaren Attributen für die Katalogverwaltung zuordnen.
- Katalog
- Grenzen Sie Ihre Regel ein, um einen bestimmten privaten Katalog zu schützen. Benutzer können den von Ihnen geschützten Katalog nur anzeigen, wenn sie Ihre Kontextregel erfüllen.
Einschränkungen
Kontextbasierte Einschränkungen schützen nur die Aktionen, die der Catalog Management-API zugeordnet sind. Weitere Informationen finden Sie in IAM-Rollen und -Aktionen. Aktionen, die den folgenden Plattform-APIs zugeordnet sind, sind nicht durch kontextbasierte Einschränkungen geschützt. Referenzieren Sie die API-Dokumente für die spezifischen Aktions-IDs.
Netzzonen erstellen
Eine Netzzone stellt eine Zulassungsliste der IP-Adressen dar, von denen eine Zugriffsanforderung erstellt wird. Sie definiert eine Gruppe mit einer oder mehreren Netzadressen, die durch die folgenden Attribute angegeben werden:
- IP-Adressen, bei denen es sich um einzelne Adressen, Bereiche oder Teilnetze handeln kann.
- VPCs
- Servicereferenzen, die den Zugriff von anderen IBM Cloud-Services aus ermöglichen.
Stellen Sie sicher, dass Sie Katalogverwaltung zu Netzzonen für Regeln hinzufügen, die auf andere IBM Cloud-Ressourcen abzielen. Andernfalls schlagen einige Operationen in Ihrem Workflow möglicherweise fehl.
Servicereferenzen
Fügen Sie den Katalogverwaltungsservice (globalcatalog-collection
) Ihren Netzzonen für Regeln hinzu, die für die folgenden Services erstellt wurden. Auf diese Weise können die beiden Services weiterhin kommunizieren.
- Secrets Manager
- Wenn Sie über eine Regel verfügen, die Secrets Manager schützt, und Sie ein Onboarding für ein Produkt mit Secrets Manager durchführen, fügen Sie Ihre IP-Adresse und den Katalogverwaltungsservice einer Netzzone als Servicereferenz hinzu.
- Schematics
- Wenn Sie ein Zielkonto verwenden, um ein Produkt zu validieren, und eine Regel vorhanden ist, die Schematics im Zielkonto schützt, fügen Sie den Katalogverwaltungsservice einer Netzzone als Servicereferenz hinzu.
Wenn Sie eine Regel haben, die auf den Katalogverwaltungsservice abzielt, fügen Sie den Service Schematics als Servicereferenz in der Netzzone hinzu.
- IAM-Identität
- Wenn Sie eine Regel für den Schutz des gesamten IAM-Identitätsservice oder für den Bereich des vertrauenswürdigen Profils, das Sie für die Validierung verwenden haben, fügen Sie den Katalogverwaltungsservice einer Netzzone als Servicereferenz hinzu, damit der Validierungsablauf weiterhin funktioniert.
Stellen Sie sicher, dass Sie diese Netzzone zu Ihrer kontextbasierten Einschränkungsregel hinzufügen. Auf diese Weise können die beiden Services weiterhin kommunizieren.
Beispiel für die Verwendung der Konsole
Durch die Erstellung von Netzwerkzonen erstellen Sie eine Liste der zulässigen Standorte, von denen eine Zugriffsanfrage ausgeht. Fügen Sie den Katalogverwaltungsservice dieser Zulassungsliste als Servicereferenz hinzu. Nachdem Sie eine Netzzone erstellt haben, können Sie sie zu einer Regel hinzufügen.
Führen Sie die folgenden Schritte aus, um eine Netzwerkzone zu erstellen:
-
Klicken Sie in der IBM Cloud-Konsole auf Verwalten > Kontextbasierte Einschränkungen und wählen Sie Netzzonen aus.
-
Klicken Sie auf Erstellen.
Statt eine Zone durch Eingaben in der Benutzerschnittstellen zu erstellen, können Sie das JSON-Codeformular verwenden, um direkt JSON-Code zum Erstellen einer Zone einzugeben. Klicken Sie hierzu auf Als JSON-Code eingeben.
-
Geben Sie einen eindeutigen Namen und eine Beschreibung ein. Beispiel: "Katalogzone" und "Interaktion von Katalogen mit anderen Services zulassen"
-
Referenzieren Sie einen Service. Wählen Sie den Servicetyp "IAM-Services" und anschließend den Katalogverwaltungsservice aus. Klicken Sie auf Hinzufügen, um die IP-Adressen des Service Ihrer Netzzone zuzuordnen.
-
Klicken Sie auf Weiter, um Ihre Netzzone zu überprüfen.
-
Klicken Sie auf Erstellen.
Beispiel unter Verwendung der CLI
Durch die Erstellung von Netzwerkzonen erstellen Sie eine Liste der zulässigen Standorte, von denen eine Zugriffsanfrage ausgeht. Fügen Sie den Katalogverwaltungsservice dieser Zulassungsliste als Servicereferenz hinzu. Nachdem Sie eine Netzzone erstellt haben, können Sie sie zu einer Regel hinzufügen.
-
Installieren Sie das CLI-Plug-in für kontextbasierte Einschränkungen, indem Sie den folgenden Befehl ausführen:
ibmcloud plugin install cbr
-
Verwenden Sie zum Erstellen einer Netzzone den Befehl cbr zone-create.
Im folgenden Beispiel wird eine Netzzone mit einer Servicereferenz erstellt. Weitere Informationen finden Sie unter Servicereferenzen.
ibmcloud cbr zone-create --name CatalogZone --description "Allow catalogs to interact with other services" --service-ref service_name=globalcatalog-collection
Zum Suchen einer Liste der verfügbaren Servicereferenzen führen Sie den Befehl ibmcloud cbr service-ref-targets aus.
Beispiel für die Verwendung der API
Durch die Erstellung von Netzwerkzonen erstellen Sie eine Liste der zulässigen Standorte, von denen eine Zugriffsanfrage ausgeht. Fügen Sie den Katalogverwaltungsservice dieser Zulassungsliste als Servicereferenz hinzu. Nachdem Sie eine Netzzone erstellt haben, können Sie sie zu einer Regel hinzufügen.
Um eine Netzzone zu erstellen, die den Katalogverwaltungsservice enthält, rufen Sie die API für kontextbasierte Einschränkungen wie im folgenden Beispiel gezeigt auf:
{
"name": "Catalog zone",
"description": "Allow catalogs to interact with other services",
"addresses": [
{
"type": "serviceRef",
"ref": {
"service_name": "globalcatalog-collection"
}
}
]
}
AddressIPAddress ipAddressModel = new AddressIPAddress.Builder()
ServiceRefValue serviceRefValueModel = new ServiceRefValue.Builder()
.accountId(accountID)
.serviceName("globalcatalog-collection")
.build();
AddressServiceRef serviceRefAddressModel = new AddressServiceRef.Builder()
.type("serviceRef")
.ref(serviceRefValueModel)
.build();
CreateZoneOptions createZoneOptions = new CreateZoneOptions.Builder()
.name("Catalog zone")
.accountId(accountID)
.description("Allow catalogs to interact with other services")
.addresses(java.util.Arrays.asList(ipAddressModel, ipRangeAddressModel, subnetAddressModel, vpcAddressModel, serviceRefAddressModel))
.excluded(java.util.Arrays.asList(excludedIPAddressModel))
.build();
Response<Zone> response = contextBasedRestrictionsService.createZone(createZoneOptions).execute();
Zone zone = response.getResult();
System.out.println(zone);
// Request models needed by this operation.
// AddressServiceRef
const serviceRefAddressModel = {
type: 'serviceRef',
ref: {
account_id: accountId,
service_name: 'globalcatalog-collection',
},
};
const params = {
name: 'Catalog zone',
accountId,
addresses: [ipAddressModel, ipRangeAddressModel, subnetAddressModel, vpcAddressModel, serviceRefAddressModel],
excluded: [excludedIPAddressModel],
description: 'Allow catalogs to interact with other services',
};
try {
const res = await contextBasedRestrictionsService.createZone(params);
zoneId = res.result.id;
zoneRev = res.headers.etag;
console.log(JSON.stringify(res.result, null, 2));
} catch (err) {
console.warn(err);
}
service_ref_address_model = {
'type': 'serviceRef',
'ref': {
'account_id': account_id,
'service_name': 'globalcatalog-collection',
}
}
zone = context_based_restrictions_service.create_zone(
name='catalog zone',
account_id=account_id,
addresses=[service_ref_address_model],
description='allow catalogs to interact with other services',
).get_result()
print(json.dumps(zone, indent=2))
serviceRefAddressModel := &contextbasedrestrictionsv1.AddressServiceRef{
Type: core.StringPtr("serviceRef"),
Ref: &contextbasedrestrictionsv1.ServiceRefValue{
AccountID: core.StringPtr(accountID),
ServiceName: core.StringPtr("globalcatalog-collection"),
},
createZoneOptions := contextBasedRestrictionsService.NewCreateZoneOptions()
createZoneOptions.SetName("catalog zone")
createZoneOptions.SetAccountID(accountID)
createZoneOptions.SetDescription("allow catalogs to interact with other services")
createZoneOptions.SetAddresses([]contextbasedrestrictionsv1.AddressIntf{serviceRefAddressModel})
zone, response, err := contextBasedRestrictionsService.CreateZone(createZoneOptions)
if err != nil {
panic(err)
}
b, _ := json.MarshalIndent(zone, "", " ")
fmt.Println(string(b))
Um eine Liste der verfügbaren Dienstreferenzen zu finden, rufen Sie die Methode ListAvailableServicerefTargets auf.
Netzzonen mit Terraform erstellen
Durch die Erstellung von Netzwerkzonen erstellen Sie eine Liste der zulässigen Standorte, von denen eine Zugriffsanfrage ausgeht. Fügen Sie den Katalogverwaltungsservice dieser Zulassungsliste als Servicereferenz hinzu. Nachdem Sie eine Netzzone erstellt haben, können Sie sie zu einer Regel hinzufügen.
Verwenden Sie zum Erstellen einer Netzzone die Terraform-Ressource cbr_zone.
-
Um die Terraform-CLI zu installieren und das IBM Cloud Provider-Plug-in für Terraform zu konfigurieren, führen Sie das Lernprogramm für Erste Schritte mit auf IBM Cloud®aus. Das Plug-in abstrahiert die IBM Cloud APIs, die zur Erfüllung dieses Tasks verwendet werden.
-
Erstellen Sie eine Terraform-Konfigurationsdatei mit dem Namen
main.tf
. In dieser Datei fügen Sie die Konfiguration hinzu, um eine Netzwerkzone mithilfe der HashiCorp-Konfigurationssprache zu erstellen. Weitere Informationen finden Sie in der Terraform-Dokumentation.Im folgenden Beispiel wird eine Netzzone erstellt, die eine einzelne IP-Adresse zulässt und eine einzelne IP-Adresse explizit ausschließt.
resource "ibm_cbr_zone" "cbr_zone" { account_id = "12ab34cd56ef78ab90cd12ef34ab56cd" addresses { type = "serviceRef" value = "globalcatalog-collection" } description = "allow catalogs to interact with other services" name = "catalog zone" }