IBM Cloud Docs
Serviceberechtigungsnachweise

Serviceberechtigungsnachweise

Ein Service Credential liefert die notwendigen Informationen, um eine Anwendung mit Object Storage zu verbinden, verpackt in einem JSON-Dokument.

Serviceberechtigungsnachweise sind stets an eine Service-ID geknüpft und neue Service-IDs können zusammen mit einem neuen Serviceberechtigungsnachweis erstellt werden.

Zum Anzeigen eines Berechtigungsnachweises muss Ihnen die Plattformrolle "Administrator" oder eine angepasste Rolle mit der Aktion resource-controller.credential.retrieve_all zugewiesen sein. Weitere Informationen zu dieser Aktualisierung finden Sie in der Dokumentation.

Führen Sie die folgenden Schritte aus, um einen Serviceberechtigungsnachweis zu erstellen:

  1. Melden Sie sich an der IBM Cloud-Konsole an und navigieren Sie zu Ihrer Instanz von Object Storage.
  2. Klicken Sie im seitlichen Navigationsbereich auf Serviceberechtigungsnachweise.
  3. Klicken Sie auf Neuer Berechtigungsnachweis und geben Sie die erforderlichen Informationen an. Wenn Sie HMAC-Berechtigungsnachweise generieren möchten, wechseln Sie von Include HMAC Credential zu On. Überprüfen Sie, ob die Option auf On umgeschaltet wurde, bevor Sie fortfahren.
  4. Klicken Sie auf Hinzufügen, um einen Serviceberechtigungsnachweis zu generieren.

Beim Erstellen eines Serviceberechtigungsnachweises kann für die Rolle der Wert None angegeben werden. Dadurch wird die Erstellung unbeabsichtigter oder unnötiger IAM-Zugriffsrichtlinien verhindert. Alle Zugriffsrichtlinien für die zugeordnete Service-ID müssen über die IAM-Konsole oder APIs verwaltet werden.

Der Berechtigungsnachweis enthält die folgenden Werte:

Werte des Nachweises
Feldname Wert
apikey Neuer API-Schlüssel, der für die Service-ID erstellt wurde.
cos_hmac_keys Paar aus Zugriffsschlüssel/geheimem Schlüssel, das mit S3-kompatiblen Tools und Bibliotheken verwendet werden kann.
endpoints Link zur JSON-Darstellung verfügbarer Endpunkte.
iam_apikey_description Beschreibung des API-Schlüssels. Diese Wert wird ursprünglich generiert, kann aber bearbeitet werden.
iam_apikey_name Name des API-Schlüssels. Dieser Wert wird ursprünglich generiert, kann aber bearbeitet werden.
iam_role_crn Eindeutige Kennung für die zugewiesene Rolle.
iam_serviceid_crn Eindeutige Kennung für die Service-ID.
resource_instance_id Eindeutige Kennung für die Instanz von Object Storage, auf die mit dem Berechtigungsnachweis zugegriffen wird. Diese wird auch als Serviceberechtigungsnachweis bezeichnet.

Nachfolgend sehen Sie ein Beispiel eines Serviceberechtigungsnachweises:

{
  "apikey": "0viPHOY7LbLNa9eLftrtHPpTjoGv6hbLD1QalRXikliJ",
  "cos_hmac_keys": {
      "access_key_id": "347aa3a4b34344f8bc7c7cccdf856e4c",
      "secret_access_key": "gvurfb82712ad14W7a7915h763a6i87155d30a1234364f61"
  },
  "endpoints": "https://control.cloud-object-storage.test.cloud.ibm.com/v2/endpoints",
  "iam_apikey_description": "Auto generated apikey during resource-key operation for Instance - crn:v1:bluemix:public:cloud-object-storage:global:a/3ag0e9402tyfd5d29761c3e97696b71n:d6f74k03-6k4f-4a82-b165-697354o63903::",
  "iam_apikey_name": "auto-generated-apikey-f9274b63-ef0b-4b4e-a00b-b3bf9023f9dd",
  "iam_role_crn": "crn:v1:bluemix:public:iam::::serviceRole:Manager",
  "iam_serviceid_crn": "crn:v1:bluemix:public:iam-identity::a/3ag0e9402tyfd5d29761c3e97696b71n::serviceid:ServiceId-540a4a41-7322-4fdd-a9e7-e0cb7ab760f9",
  "resource_instance_id": "crn:v1:bluemix:public:cloud-object-storage:global:a/3ag0e9402tyfd5d29761c3e97696b71n:d6f74k03-6k4f-4a82-b165-697354o63903::"
}

Sie können auch die IBM Cloud-CLI verwenden, um einen neuen Serviceberechtigungsnachweis zu erstellen (dies ist eine Untergruppe eines so genannten Serviceschlüssels). In diesem Beispiel wird der Berechtigungsnachweis extrahiert und in eine Datei geschrieben, in der die IBM COS-SDKs automatisch den API-Schlüssel und die Serviceinstanz-ID als Quelle angeben können. Erstellen Sie zunächst den Serviceschlüssel config-example, der in diesem Beispiel einer COS-Instanz mit dem Namen cos-dev-enablement zugeordnet ist:

ic resource service-key-create config-example --instance-name cos-dev-enablement

Extrahieren Sie anschließend den Berechtigungsnachweis und erstellen Sie die Datei cos_credential :

ic resource service-key config-example --output JSON | jq '.[].credentials' > ~/.bluemix/cos_credentials

endpoints-Objekte verstehen

Die endpoints URL (https://control.cloud-object-storage.cloud.ibm.com/v2/endpoints), die als Teil des Dienstnachweises bereitgestellt wird, enthält eine Liste aller möglichen Endpunkte, die bei der Verbindung mit einem Client verwendet werden können:

{
   "identity-endpoints":{
      "iam-token":"iam.cloud.ibm.com",
      "iam-policy":"iampap.cloud.ibm.com"
   },
   "service-endpoints":{
      "cross-region":{
         "us":{
            "public":{
               "us-geo":"s3.us.cloud-object-storage.appdomain.cloud",
               "Dallas":"s3.dal.us.cloud-object-storage.appdomain.cloud",
               "Washington":"s3.wdc.us.cloud-object-storage.appdomain.cloud",
               "San Jose":"s3.sjc.us.cloud-object-storage.appdomain.cloud"
            },
            "private":{
               "us-geo":"s3.private.us.cloud-object-storage.appdomain.cloud",
               "Dallas":"s3.private.dal.us.cloud-object-storage.appdomain.cloud",
               "Washington":"s3.private.wdc.us.cloud-object-storage.appdomain.cloud",
               "San Jose":"s3.private.sjc.us.cloud-object-storage.appdomain.cloud"
            },
            "direct":{
               "us-geo":"s3.direct.us.cloud-object-storage.appdomain.cloud",
               "Dallas":"s3.direct.dal.us.cloud-object-storage.appdomain.cloud",
               "Washington":"s3.direct.wdc.us.cloud-object-storage.appdomain.cloud",
               "San Jose":"s3.direct.sjc.us.cloud-object-storage.appdomain.cloud"
            }
         },
         "eu":{
            "public":{
               "eu-geo":"s3.eu.cloud-object-storage.appdomain.cloud",
               "Amsterdam":"s3.ams.eu.cloud-object-storage.appdomain.cloud",
               "Frankfurt":"s3.fra.eu.cloud-object-storage.appdomain.cloud",
               "Milan":"s3.mil.eu.cloud-object-storage.appdomain.cloud"
            },
            "private":{
               "eu-geo":"s3.private.eu.cloud-object-storage.appdomain.cloud",
               "Amsterdam":"s3.private.ams.eu.cloud-object-storage.appdomain.cloud",
               "Frankfurt":"s3.private.fra.eu.cloud-object-storage.appdomain.cloud",
               "Milan":"s3.private.mil.eu.cloud-object-storage.appdomain.cloud"
            },
            "direct":{
               "eu-geo":"s3.direct.eu.cloud-object-storage.appdomain.cloud",
               "Amsterdam":"s3.direct.ams.eu.cloud-object-storage.appdomain.cloud",
               "Frankfurt":"s3.direct.fra.eu.cloud-object-storage.appdomain.cloud",
               "Milan":"s3.direct.mil.eu.cloud-object-storage.appdomain.cloud"
            }
         },
         "ap":{
            "public":{
               "ap-geo":"s3.ap.cloud-object-storage.appdomain.cloud",
               "Tokyo":"s3.tok.ap.cloud-object-storage.appdomain.cloud",
               "Seoul":"s3.seo.ap.cloud-object-storage.appdomain.cloud",
               "Hong Kong":"s3.hkg.ap.cloud-object-storage.appdomain.cloud",
               "Sydney":"s3.syd.ap.cloud-object-storage.appdomain.cloud",
               "Osaka":"s3.osa.ap.cloud-object-storage.appdomain.cloud"
            },
            "private":{
               "ap-geo":"s3.private.ap.cloud-object-storage.appdomain.cloud",
               "Tokyo":"s3.private.tok.ap.cloud-object-storage.appdomain.cloud",
               "Seoul":"s3.private.seo.ap.cloud-object-storage.appdomain.cloud",
               "Hong Kong":"s3.private.hkg.ap.cloud-object-storage.appdomain.cloud",
               "Sydney":"s3.private.syd.ap.cloud-object-storage.appdomain.cloud",
               "Osaka":"s3.private.osa.ap.cloud-object-storage.appdomain.cloud"
            },
            "direct":{
               "ap-geo":"s3.direct.ap.cloud-object-storage.appdomain.cloud",
               "Tokyo":"s3.direct.tok.ap.cloud-object-storage.appdomain.cloud",
               "Seoul":"s3.direct.seo.ap.cloud-object-storage.appdomain.cloud",
               "Hong Kong":"s3.direct.hkg.ap.cloud-object-storage.appdomain.cloud",
               "Sydney":"s3.direct.syd.ap.cloud-object-storage.appdomain.cloud",
               "Osaka":"s3.direct.osa.ap.cloud-object-storage.appdomain.cloud"
            }
         }
      },
      "regional":{
         "us-south":{
            "public":{
               "us-south":"s3.us-south.cloud-object-storage.appdomain.cloud"
            },
            "private":{
               "us-south":"s3.private.us-south.cloud-object-storage.appdomain.cloud"
            },
            "direct":{
               "us-south":"s3.direct.us-south.cloud-object-storage.appdomain.cloud"
            }
         },
         "us-east":{
            "public":{
               "us-east":"s3.us-east.cloud-object-storage.appdomain.cloud"
            },
            "private":{
               "us-east":"s3.private.us-east.cloud-object-storage.appdomain.cloud"
            },
            "direct":{
               "us-east":"s3.direct.us-east.cloud-object-storage.appdomain.cloud"
            }
         },
         "eu-gb":{
            "public":{
               "eu-gb":"s3.eu-gb.cloud-object-storage.appdomain.cloud"
            },
            "private":{
               "eu-gb":"s3.private.eu-gb.cloud-object-storage.appdomain.cloud"
            },
            "direct":{
               "eu-gb":"s3.direct.eu-gb.cloud-object-storage.appdomain.cloud"
            }
         },
         "eu-de":{
            "public":{
               "eu-de":"s3.eu-de.cloud-object-storage.appdomain.cloud"
            },
            "private":{
               "eu-de":"s3.private.eu-de.cloud-object-storage.appdomain.cloud"
            },
            "direct":{
               "eu-de":"s3.direct.eu-de.cloud-object-storage.appdomain.cloud"
            }
         },
         "jp-tok":{
            "public":{
               "jp-tok":"s3.jp-tok.cloud-object-storage.appdomain.cloud"
            },
            "private":{
               "jp-tok":"s3.private.jp-tok.cloud-object-storage.appdomain.cloud"
            },
            "direct":{
               "jp-tok":"s3.direct.jp-tok.cloud-object-storage.appdomain.cloud"
            }
         },
         "jp-osa":{
            "public":{
               "jp-osa":"s3.jp-osa.cloud-object-storage.appdomain.cloud"
            },
            "private":{
               "jp-osa":"s3.private.jp-osa.cloud-object-storage.appdomain.cloud"
            },
            "direct":{
               "jp-osa":"s3.direct.jp-osa.cloud-object-storage.appdomain.cloud"
            }
         },
         "au-syd":{
            "public":{
               "au-syd":"s3.au-syd.cloud-object-storage.appdomain.cloud"
            },
            "private":{
               "au-syd":"s3.private.au-syd.cloud-object-storage.appdomain.cloud"
            },
            "direct":{
               "au-syd":"s3.direct.au-syd.cloud-object-storage.appdomain.cloud"
            }
         },
         "ca-tor":{
            "public":{
               "ca-tor":"s3.ca-tor.cloud-object-storage.appdomain.cloud"
            },
            "private":{
               "ca-tor":"s3.private.ca-tor.cloud-object-storage.appdomain.cloud"
            },
            "direct":{
               "ca-tor":"s3.direct.ca-tor.cloud-object-storage.appdomain.cloud"
            }
         },
         "br-sao":{
            "public":{
               "br-sao":"s3.br-sao.cloud-object-storage.appdomain.cloud"
            },
            "private":{
               "br-sao":"s3.private.br-sao.cloud-object-storage.appdomain.cloud"
            },
            "direct":{
               "br-sao":"s3.direct.br-sao.cloud-object-storage.appdomain.cloud"
            }
         }
      },
      "single-site":{
         "ams03":{
            "public":{
               "ams03":"s3.ams03.cloud-object-storage.appdomain.cloud"
            },
            "private":{
               "ams03":"s3.private.ams03.cloud-object-storage.appdomain.cloud"
            },
            "direct":{
               "ams03":"s3.direct.ams03.cloud-object-storage.appdomain.cloud"
            }
         },
         "che01":{
            "public":{
               "che01":"s3.che01.cloud-object-storage.appdomain.cloud"
            },
            "private":{
               "che01":"s3.private.che01.cloud-object-storage.appdomain.cloud"
            },
            "direct":{
               "che01":"s3.direct.che01.cloud-object-storage.appdomain.cloud"
            }
         },
         "mon01":{
            "public":{
               "mon01":"s3.mon01.cloud-object-storage.appdomain.cloud"
            },
            "private":{
               "mon01":"s3.private.mon01.cloud-object-storage.appdomain.cloud"
            },
            "direct":{
               "mon01":"s3.direct.mon01.cloud-object-storage.appdomain.cloud"
            }
         },
         "mex01":{
            "public":{
               "mex01":"s3.mex01.cloud-object-storage.appdomain.cloud"
            },
            "private":{
               "mex01":"s3.private.mex01.cloud-object-storage.appdomain.cloud"
            },
            "direct":{
               "mex01":"s3.direct.mex01.cloud-object-storage.appdomain.cloud"
            }
         },
         "sjc04":{
            "public":{
               "sjc04":"s3.sjc04.cloud-object-storage.appdomain.cloud"
            },
            "private":{
               "sjc04":"s3.private.sjc04.cloud-object-storage.appdomain.cloud"
            },
            "direct":{
               "sjc04":"s3.direct.sjc04.cloud-object-storage.appdomain.cloud"
            }
         },
         "mil01":{
            "public":{
               "mil01":"s3.mil01.cloud-object-storage.appdomain.cloud"
            },
            "private":{
               "mil01":"s3.private.mil01.cloud-object-storage.appdomain.cloud"
            },
            "direct":{
               "mil01":"s3.direct.mil01.cloud-object-storage.appdomain.cloud"
            }
         },
         "par01":{
            "public":{
               "par01":"s3.par01.cloud-object-storage.appdomain.cloud"
            },
            "private":{
               "par01":"s3.private.par01.cloud-object-storage.appdomain.cloud"
            },
            "direct":{
               "par01":"s3.direct.par01.cloud-object-storage.appdomain.cloud"
            }
         },
         "sng01":{
            "public":{
               "sng01":"s3.sng01.cloud-object-storage.appdomain.cloud"
            },
            "private":{
               "sng01":"s3.private.sng01.cloud-object-storage.appdomain.cloud"
            },
            "direct":{
               "sng01":"s3.direct.sng01.cloud-object-storage.appdomain.cloud"
            }
         }
      }
   },
   "resource-configuration-endpoints":{
      "global":{
         "public":"config.cloud-object-storage.cloud.ibm.com/v1",
         "private":"config.private.cloud-object-storage.cloud.ibm.com/v1",
         "direct":"config.direct.cloud-object-storage.cloud.ibm.com/v1"
      }
   }
}

Wenn Sie einen Client mit einer Bibliothek erstellen, die einen Wert für einen 'auth'-Endpunkt erfordert, müssen Sie /oidc/token an das Ende der oben angegebenen iam-token-URL anfügen.

Berechtigungsnachweise für den Zugriff auf einzelne Buckets verwenden

Wenn ein Serviceberechtigungsnachweis erstellt wird, so wird der zugrunde liegenden Service-ID eine Rolle für die gesamte Instanz von Object Storage erteilt. Wenn eigentlich beabsichtigt ist, dass mit dem Berechtigungsnachweis Zugriff auf eine Teilmenge von Buckets erteilt wird und nicht auf die gesamte Instanz, so ist es erforderlich, diese Richtlinie zu bearbeiten. Weitere Informationen enthält die Seite Bucketberechtigungen.

Verwendung von Dienstanmeldeinformationen für den Zugriff auf einzelne Objekte/Ordner

Wenn ein Serviceberechtigungsnachweis erstellt wird, so wird der zugrunde liegenden Service-ID eine Rolle für die gesamte Instanz von Object Storage erteilt. Wenn der Berechtigungsnachweis dazu verwendet werden soll, den Zugriff auf eine Teilmenge von Buckets und nicht auf die gesamte Instanz zu gewähren, muss diese Richtlinie bearbeitet werden. Weitere Informationen finden Sie auf der Seite Assigning access to objects within a bucket using IAM access conditions.

Verwendung eines API-Schlüssels für den Zugriff auf mehrere Instanzen

Wenn derselbe API-Schlüssel für mehr als eine Object Storage verwendet werden soll, können Sie die Zugriffsrichtlinie der Service-ID ändern, um den Zugriff zu gewähren. Jeder API-Schlüssel, der einer Service-ID zugeordnet wurde, übernimmt die Richtlinie, die der Service-ID zugewiesen wurde.

Verwenden Sie die aus einer bestehenden Instanz generierte Service-ID

Wenn Sie eine Dienstberechtigung für eine bestimmte Instanz erstellen, hat diese Berechtigung einen API-Schlüsselwert. Um denselben API-Schlüssel mit einer anderen Object Storage zu verwenden, ändern Sie die Zugriffsrichtlinie für die mit diesem API-Schlüssel verknüpfte Service-ID, um ihr Zugriff auf die zusätzliche Instanz zu gewähren.

Erzeugen Sie direkt eine Service-ID

Wenn Sie die Sichtbarkeit des API-Schlüssels nach seiner Erstellung einschränken möchten, folgen Sie den Schritten unter Erstellen eines API-Schlüssels für eine Service-ID. Wie in diesem Thema erwähnt, müssen Sie den Schlüssel bei der Erstellung kopieren oder herunterladen. Konfigurieren Sie dann die Zugriffsrichtlinien für die Service-ID, um Zugriff auf eine oder mehrere Object Storage zu erhalten.

API-Schlüssel versus HMAC

Im Allgemeinen stellen IAM-API-Schlüssel die bevorzugte Methode der Authentifizierung für IBM Cloud® Object Storage dar. HMAC wird in erster Linie aus Gründen der Kompatibilität mit einer früheren Version für Anwendungen unterstützt, die von IaaS Object Storage und älteren Anwendungen von S3 migriert wurden. IAM wird bei der Entwicklung von Anwendungen mit den COS-SDKs auch nativ unterstützt. Zur Vereinfachung des Vorgangs werden der Ablauf und die Aktualisierung von Token automatisch verarbeitet.

Weitere Informationen zu IAM finden Sie in Einführung in IAM.

Weitere Informationen zu HMAC finden Sie in HMAC-Berechtigungsnachweise verwenden.