Erstellen S2S, um IBM Cloud Logs Zugriff auf IBM Cloud Event Notifications zu gewähren
Verwenden Sie IBM Cloud® Identity and Access Management (IAM), um eine Berechtigung zu erstellen, die IBM Cloud Logs Zugriff auf den Dienst IBM Cloud Event Notifications gewährt.
Vorbereitende Schritte
-
Lesen Sie die Informationen unter Berechtigungen zum Erteilen von Zugriff zwischen Services verwalten.
-
Sie müssen Zugriff auf IAM haben, um die Berechtigungen zwischen den Diensten in dem IBM Cloud Konto zu verwalten, in dem die IBM Cloud Event Notifications Instanz bereitgestellt wird. Weitere Informationen finden Sie unter Berechtigungen zum Verwalten von Berechtigungen.
-
Die Autorisierung, die Sie für den Dienst IBM Cloud Logs definieren, erfordert, dass Sie die Rolle
Administratorfür die Instanz IBM Cloud Event Notifications haben.
Servicezugriffsrollen
Sie können eine der folgenden Rollen auswählen, die die Quelle für die Interaktion mit dem Ziel verwenden kann. Sie können nur die Zugriffsebene erteilen, über die Sie als Benutzer des ausgewählten Ziels verfügen.
Event Source Manager: Sie müssen die RolleEvent Source Managererteilen, um die Quellenintegration mit dem Service IBM Cloud Event Notifications zu handhaben.Reader: Sie müssen der RolleReaderdie Berechtigung erteilen, schreibgeschützte Aktionen in einem Service auszuführen, z. B. das Anzeigen servicespezifischer Ressourcen.Viewer: Sie müssen die RolleViewergewähren, um die IBM Cloud Event Notifications Dienstinstanzen aufzulisten.
Weitere Informationen finden Sie unter Erstellen einer S2S-Berechtigung für die Arbeit mit dem IBM Cloud Event Notifications-Dienst.
Erstellen einer Autorisierung über die Konsole
Sie müssen die Dienst-zu-Dienst-Autorisierung in dem IBM Cloud-Konto erstellen, in dem die IBM Cloud Event Notifications-Instanz bereitgestellt wird.
Wenn Sie die Berechtigung konfigurieren, müssen Sie in dem Konto, in dem die Instanz IBM Cloud Event Notifications verfügbar ist, über den Zugriff und die Berechtigungen zum Erstellen von Berechtigungen verfügen. Für das Konto, in dem die Instanz IBM Cloud Logs verfügbar ist, benötigen Sie nur die Kontonummer, um die kontenübergreifende Service-to-Service-Autorisierung zu konfigurieren.
Führen Sie die folgenden Schritte aus:
-
Klicken Sie in der IBM Cloud-Konsole auf Verwalten > Zugriff (IAM) und wählen Sie Autorisierungen aus.
-
Klicken Sie auf Erstellen.
-
Wählen Sie ein Quellenkonto aus.
Wenn die Instanz IBM Cloud Event Notifications und die Instanz IBM Cloud Logs demselben Konto angehören, wählen Sie Dieses Konto.
Wenn die Instanz IBM Cloud Event Notifications und die Instanz IBM Cloud Logs auf unterschiedlichen Konten liegen, wählen Sie Anderes Konto. Geben Sie dann die Konto-ID ein, unter der die Instanz IBM Cloud Logs verfügbar ist.
-
Wählen Sie
Cloud Logsals Quellenservice aus. Legen Sie anschließend den Geltungsbereich des Zugriffs fest.Wählen Sie Alle Ressourcen aus, um Zugriff für alle Instanzen im Account zu erteilen.
Wählen Sie Quellenserviceinstanz aus, um Zugriff auf eine IBM Cloud Logs-Instanz zu erteilen.
-
Wählen Sie Ereignisbenachrichtigung als Zielservice aus. Legen Sie anschließend den Geltungsbereich des Zugriffs fest.
Wählen Sie Alle Ressourcen aus, um Zugriff auf alle IBM Cloud Event Notifications-Instanzen und -Ressourcen im Konto zu erteilen.
Um Zugriff auf eine bestimmte Instanz zu erteilen, wählen Sie eine einzelne Instanz aus, indem Sie Ressourcen auf der Basis ausgewählter Attribute > Serviceinstanz konfigurieren.
-
Wählen Sie im Abschnitt Service Access die Rolle aus, die dem Quelldienst, der auf den Zieldienst zugreift, Zugriff geben soll.
Wählen Sie Reader, um schreibgeschützte Aktionen innerhalb eines Dienstes durchzuführen, wie z. B. die Anzeige dienstspezifischer Ressourcen.
Wählen Sie Viewer, um die IBM Cloud Event Notifications Service-Instanzen aufzulisten.
Wählen Sie Ereignisquellenmanager aus, um die Quellenintegration mit dem Ereignisbenachrichtigungsservice zu verarbeiten.
-
Klicken Sie auf Autorisieren.
Autorisierung über die Befehlszeilenschnittstelle (CLI) erstellen
Führen Sie den folgenden Befehl aus, um eine Berechtigung für den Service IBM Cloud Logs zu erstellen.
ibmcloud iam authorization-policy-create logs event-notifications "Reader" [--source-service-instance-name SOURCE_SERVICE_INSTANCE_NAME | --source-service-instance-id SOURCE_SERVICE_INSTANCE_ID] [--target-service-instance-name TARGET_SERVICE_INSTANCE_NAME | --target-service-instance-id TARGET_SERVICE_INSTANCE_ID]
Weitere Informationen zu allen Parametern, die für diesen Befehl verfügbar sind, finden Sie unter ibmcloud iam authorization-policy-create.
Autorisierung mit Terraform erstellen
Bevor Sie eine Berechtigung mit Terraform erstellen können, stellen Sie sicher, dass Sie Folgendes ausgeführt haben:
- Installieren Sie die Terraform-CLI und konfigurieren Sie das Provider-Plug-in IBM Cloud für Terraform. Weitere Informationen finden Sie im Lernprogramm zur Einführung in Terraform auf IBM Cloud. 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 definieren Sie Ressourcen mit HashiCorp Configuration Language. Weitere Informationen finden Sie in der Terraform-Dokumentation.
Verwenden Sie die folgenden Schritte, um eine Autorisierung mit Terraform zu erstellen:
-
Erstellen Sie eine Berechtigungsrichtlinie zwischen Services, indem Sie das Ressourcenargument
ibm_iam_authorization_policyin Ihrer Dateimain.tfverwenden.Im folgenden Beispiel wird eine Berechtigung zwischen zwei Services erstellt:
resource "ibm_iam_authorization_policy" "policy" { source_service_name = "logs" target_service_name = "event-notifications" roles = ["Reader"] description = "Authorization Policy" transaction_id = "terraformAuthorizationPolicy" }Im folgenden Beispiel wird eine Berechtigung zwischen zwei bestimmten Serviceinstanzen erstellt:
resource "ibm_iam_authorization_policy" "policy" { source_service_name = "logs" source_resource_instance_id = ibm_resource_instance.instance1.guid source_service_account = target_service_name = "event-notifications" target_resource_instance_id = ibm_resource_instance.instance2.guid roles = ["Reader"] }Die Ressource
ibm_iam_authorization_policyerfordert den Quellenservice, den Zielservice und die Rolle. Dem Quellenservice wird Zugriff auf den Zielservice erteilt und die Rolle ist die Berechtigungsstufe, die der Zugriff zulässt. Optional können Sie eine Beschreibung für die Berechtigung und eine Transaktions-ID hinzufügen.-
Sie können eine
target_resource_instance_idzur Verfügung stellen, um eine IBM Cloud Event Notifications Zielinstanz zu erfassen. -
Weitere Beispiele finden Sie in der Terraform-Dokumentation für Berechtigungsressourcen.
-
-
Nachdem Sie Ihre Konfigurationsdatei erstellt haben, initialisieren Sie die Terraform-CLI. Weitere Informationen finden Sie unter Arbeitsverzeichnisse initialisieren.
terraform init -
Stellen Sie die Ressourcen aus der Datei
main.tfbereit. Weitere Informationen finden Sie unter Infrastruktur mit Terraform bereitstellen.-
Führen Sie
terraform planaus, um einen Terraform-Ausführungsplan für die Vorschau der vorgeschlagenen Aktionen zu generieren.terraform plan -
Führen Sie
terraform applyaus, um die Ressourcen zu erstellen, die im Plan definiert sind.terraform apply
-
Autorisierung mithilfe der API erstellen
Verwenden Sie die IAM-Richtlinienmanagement-API, um einen Quellenservice für den Zugriff auf einen Zielservice zu berechtigen. Siehe das folgende API-Beispiel für die Erstellung einer
Richtlinienmethode mit der für ein event-notifications-Ziel angegebenen type=authorization.
Die unterstützten Attribute zum Erstellen einer Berechtigungsrichtlinie hängen davon ab, was der einzelne Service unterstützt. Weitere Informationen zu den unterstützten Attributen für die einzelnen Services finden Sie in der Dokumentation zu den verwendeten Services.
curl --request POST \
--url https://iam.cloud.ibm.com/v1/policies \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"type": "authorization",
"subjects": [
{
"attributes": [
{
"name": "accountId",
"value": "<account-id>"
},
{
"name": "serviceName",
"value": "logs"
}
]
}
],
"roles": [
{
"role_id": "crn:v1:bluemix:public:event-notifications::::serviceRole:Reader"
}
],
"resources": [
{
"attributes": [
{
"name": "serviceName",
"value": "event-notifications"
}
]
}
]
}'