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

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 Rolle Event Source Manager erteilen, um die Quellenintegration mit dem Service IBM Cloud Event Notifications zu handhaben.
  • Reader: Sie müssen der Rolle Reader die Berechtigung erteilen, schreibgeschützte Aktionen in einem Service auszuführen, z. B. das Anzeigen servicespezifischer Ressourcen.
  • Viewer: Sie müssen die Rolle Viewer gewä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:

  1. Klicken Sie in der IBM Cloud-Konsole auf Verwalten > Zugriff (IAM) und wählen Sie Autorisierungen aus.

  2. Klicken Sie auf Erstellen.

  3. 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.

  4. Wählen Sie Cloud Logs als 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.

  5. 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.

  6. 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.

  7. 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:

  1. Erstellen Sie eine Berechtigungsrichtlinie zwischen Services, indem Sie das Ressourcenargument ibm_iam_authorization_policy in Ihrer Datei main.tf verwenden.

    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_policy erfordert 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.

  2. Nachdem Sie Ihre Konfigurationsdatei erstellt haben, initialisieren Sie die Terraform-CLI. Weitere Informationen finden Sie unter Arbeitsverzeichnisse initialisieren.

    terraform init
    
  3. Stellen Sie die Ressourcen aus der Datei main.tf bereit. Weitere Informationen finden Sie unter Infrastruktur mit Terraform bereitstellen.

    1. Führen Sie terraform plan aus, um einen Terraform-Ausführungsplan für die Vorschau der vorgeschlagenen Aktionen zu generieren.

      terraform plan
      
    2. Führen Sie terraform apply aus, 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"
                }
            ]
        }
    ]
}'