Zugriff steuern
Mit IBM Cloud® App ID können Sie definieren, welche Benutzer und Anwendungen auf bestimmte Features zugreifen oder bestimmte Aktionen in Ihren Apps ausführen können. Um den Zugriff zu steuern, können Sie Bereiche erstellen und diese in einer Rolle gruppieren. Anschließend können Sie die Rolle einem oder mehreren App-Benutzern und Anwendungen zuweisen.
Ein Bereich ist eine Laufzeitaktion in Ihrer Anwendung, die Sie bei App ID registrieren, um eine Zugriffsberechtigung zu erstellen. Eine Rolle ist eine Zusammenstellung von Bereichen, die jeweils unterschiedliche Berechtigungen für unterschiedliche Typen von App-Benutzern und Anwendungen zuweisen. Wenn Ihr Unternehmen z. B. Entwickler beschäftigt, können diese eine Rolle erstellen, die es ihnen ermöglicht, den Code zu lesen und zu schreiben. Wenn das Unternehmen Prüfer beschäftigt, könnten diese über eine Rolle mit der Berechtigung zum Anzeigen verfügen, wie dies in der folgenden Abbildung dargestellt ist.
- Registrieren Sie Laufzeitaktionen, die in Ihrer Anwendung vorkommen können bei App ID.
- Stellen Sie Bereiche in Gruppen zusammen, um Rollen zu bilden.
- Steuern Sie Zugriffsberechtigungen durch das Zuweisen von Rollen zu Benutzern oder Anwendungen.
- Konfigurieren Sie Ihre Anwendung, um die Bereiche zu überprüfen, die in Ihrem Benutzerzugriffstoken zur Laufzeit zurückgegeben werden (oder in Ihrem Anwendungstoken, wenn Clientberechtigungsnachweise fließen).
Weitere Informationen zu Anwendungen finden Sie unter Anwendungsidentität und Autorisierung.
Vorbereitende Schritte
- Sie müssen über eine Anwendung verfügen.
- Stellen Sie sicher, dass Sie wissen, wie sich die einzelnen Rollen und Geltungsbereiche auf Ihre Anwendung auswirken können. Bei der Erteilung von Zugriffsrechten möchten Sie sicher sein, dass Sie diese Berechtigung nur den Personen erteilen, die sie auch wirklich benötigen.
- Beachten Sie die geltenden Begrenzungen.
Erstellen von Bereichen in der Konsole
Ein Bereich ist eine Laufzeitaktion in Ihrer Anwendung, die von Benutzern ausgeführt werden kann, denen die erforderliche Berechtigung zur Ausführung erteilt wurde. Bereiche werden erstellt, wenn Sie Ihre Anwendung bei App ID registrieren. Wenn Ihre App bereits registriert ist, können Sie sie bearbeiten, um Bereiche einzuschließen.
Die Werte für Bereichsnamen müssen die folgenden Anforderungen erfüllen:
- Alphanumerisch
- Kleinschreibung
- Sie dürfen nicht mit
appidoderopenidbeginnen. - Sie dürfen keine Sonderzeichen mit Ausnahme von Punkten (
.) oder Unterstreichungszeichen (_) enthalten. - Sie müssen weniger als 50 Zeichen umfassen.
Zum Erstellen eines Bereichs können Sie die Anwendungsprogrammierschnittstelle (API) von App ID verwenden.
- Navigieren Sie im App ID-Dashboard zu Anwendungen.
- Klicken Sie auf Anwendung hinzufügen, um die Konfigurationsanzeige zu öffnen. Wenn Sie bereits über Berechtigungsnachweise verfügen, die Sie verwenden möchten, klicken Sie im Menü 'Aktionen' in der Zeile, die Sie aktualisieren möchten, auf Bearbeiten.
- Geben Sie den Namen Ihrer App an und wählen Sie den Typ Ihrer Anwendung aus.
- Geben Sie einen Wert für Ihren angepassten Bereich ein und klicken Sie dann auf das Pluszeichen (+). Ein Beispiel für einen Bereichswert ist
readoderwrite. - Wiederholen Sie den vorherigen Schritt, bis Sie alle Ihre Bereiche zur App hinzufügen.
- Klicken Sie auf Speichern.
Bereiche mit der Anwendungsprogrammierschnittstelle erstellen
Ein Bereich ist eine Laufzeitaktion in Ihrer Anwendung, die von Benutzern ausgeführt werden kann, denen die erforderliche Berechtigung zur Ausführung erteilt wurde. Bereiche werden erstellt, wenn Sie Ihre Anwendung bei App ID registrieren. Wenn Ihre App bereits registriert ist, können Sie sie bearbeiten, um Bereiche einzuschließen.
Die Werte für Bereichsnamen müssen die folgenden Anforderungen erfüllen:
- Alphanumerisch
- Kleinschreibung
- Sie dürfen nicht mit
appidoderopenidbeginnen. - Sie dürfen keine Sonderzeichen mit Ausnahme von Punkten (
.) oder Unterstreichungszeichen (_) enthalten. - Sie müssen weniger als 50 Zeichen umfassen.
Zum Erstellen eines Bereichs können Sie die Anwendungsprogrammierschnittstelle (API) von App ID verwenden.
-
Erstellen Sie Bereiche, indem Sie die folgende Anforderung an den Endpunkt
/scopesstellen.curl -X PUT "https://<region>.appid.cloud.ibm.com/management/v4/<tenantID>/applications/<clientID>/scopes" -H "accept: application/json" -H "Content-Type: application/json" -d "{\ "scopes":\ [\ <scopesObject>}" ]}"Variable Beschreibung regionDie Region, in der Ihre Instanz von App ID bereitgestellt wird. Weitere Informationen zu den verfügbaren Regionen. tenantIDDie eindeutige ID Ihrer App ID-Instanz. Sie können diesen Wert in den Berechtigungsnachweisen für Ihre App finden, da diese auf der Registerkarte Anwendungen im Service-Dashboard aufgelistet sind. clientIDDie eindeutige ID für Ihre Anwendung. Sie können diesen Wert in den Berechtigungsnachweisen für Ihre App finden, da diese unter Anwendungen im Service-Dashboard aufgelistet sind. scopesObjectEin JSON-Objekt aller Bereiche, die Sie für Ihre Anwendung erstellen wollen. {: caption="Erforderliche Variablen für den Aufruf des Endpunkts /scopes" caption-side="top"} -
Optional: Bestätigen Sie, dass die Bereiche erstellt wurden.
curl -X GET "https://<region>.appid.cloud.ibm.com/management/v4/<tenantID>/applications/<clientID>/scopes" -H "accept: application/json" -H "Content-Type: application/json"
Erstellen von Rollen in der Konsole
Eine Rolle ist eine Gruppe von Bereichen, die für denselben Benutzertyp gelten. Wenn Sie ein Verwaltungsrolle erstellen, ermöglicht der Bereichsabschnitt für diese Rolle möglicherweise die Ausführung von Lese-, Schreib- oder Erstellungsaktionen.
Wenn Sie jedoch eine weitere Rolle mit dem Namen viewererstellen, haben die Benutzer, denen diese Rolle zugeordnet ist, Lesezugriff. Zum Erstellen einer Rolle können Sie die Benutzerschnittstelle (UI) von App ID verwenden.
-
Wechseln Sie im App ID-Dashboard zu Profile und Rollen > Rollen.
-
Klicken Sie auf Rolle erstellen, um die Konfigurationsanzeige zu öffnen.
-
Geben Sie der Rolle einen Namen und fügen Sie eine Beschreibung hinzu.
-
Weisen Sie den Bereichen, die Sie im vorherigen Abschnitt erstellt haben, eine Rolle zu, wobei Sie das folgende Format verwenden. Klicken Sie auf +, um den Bereich hinzuzufügen.
<appName>/<scope>Wenn Sie nur über eine Anwendung verfügen, müssen Sie Ihren App-Namen nicht angeben. Sie können allein den Bereich hinzufügen.
-
Wiederholen Sie den vorherigen Schritt, um weitere Bereiche hinzuzufügen.
-
Klicken Sie auf Speichern.
Rollen mit der Anwendungsprogrammierschnittstelle erstellen
Eine Rolle ist eine Gruppe von Bereichen, die für denselben Benutzertyp gelten. Wenn Sie ein Verwaltungsrolle erstellen, ermöglicht der Bereichsabschnitt für diese Rolle möglicherweise die Ausführung von Lese-, Schreib- oder Erstellungsaktionen.
Wenn Sie jedoch eine weitere Rolle mit dem Namen viewererstellen, haben die Benutzer, denen diese Rolle zugeordnet ist, Lesezugriff. Zum Erstellen einer Rolle können Sie die Anwendungsprogrammierschnittstellen (APIs) von App ID
verwenden.
-
Stellen Sie eine Anforderung an den Endpunkt
/roles, um die Rolle zu erstellen.curl -X POST "https://<region>.appid.cloud.ibm.com/management/v4/<tenantID>/roles" -H "accept: application/json" -H "Content-Type: application/json" -d { \"name\": \"<roleName>\", \"description\": \"<roleDescription>\", \"access\": [ { \"application_id\": \"<applicationID>\", \"scopes\": [ \"<scopes>" ] } ]}"Variable Beschreibung regionDie Region, in der Ihre Instanz von App ID bereitgestellt wird. Weitere Informationen zu den verfügbaren Regionen. tenantIDDie eindeutige ID Ihrer App ID-Instanz. Sie können diesen Wert in den Berechtigungsnachweisen für Ihre App finden, da diese auf der Registerkarte Anwendungen im Service-Dashboard aufgelistet sind. clientIDDie eindeutige ID für Ihre Anwendung. Sie können diesen Wert in den Berechtigungsnachweisen für Ihre App finden, da diese auf der Registerkarte Anwendungen aufgelistet sind. roleNameDer Name, den Sie Ihrer Rolle zuweisen möchten. roleDescriptionEin kurzer Ausdruck, der die Aufgaben dieser Rolle beschreibt. applicationIDDie eindeutige ID für Ihre Anwendung. Sie können diesen Wert in den Berechtigungsnachweisen für Ihre App finden, da diese auf der Registerkarte Anwendungen aufgelistet sind. scopesEin JSON-Objekt aller Bereiche, die auf eine Rolle angewendet werden sollen. {: caption="Erforderliche Variablen für den Aufruf des Endpunkts /scopes" caption-side="top"} -
Optional: Bestätigen Sie, dass die Rollen erstellt wurden.
curl -X GET "https://<region>.appid.cloud.ibm.com/management/v4/<tenantID>/roles -H "accept: application/json"Die Antwort sieht ähnlich wie im folgenden Beispiel aus:
{ "roles": [ { "id": "12345678-1234-1234-1234-123456789012", "name": "admin", "description": "Can perform administrative tasks.", "access": [ { "application_id": "de33d272-f8a7-4406-8fe8-ab28fd457be5", "scopes": [ "create", "update", "write", "read" ] } ] } { "id": "123454231-1234-1234-3334-12345687012", "name": "developer", "description": "Can perform administrative tasks.", "access": [ { "application_id": "de33d272-f8a7-4406-8fe8-ab28fd457be5", "scopes": [ "write", "read" ] } ] } ] }
Zuweisung von Rollen an Benutzer in der Konsole
Nachdem Sie Rollen erstellt haben, können Sie diese dem Profil Ihres Benutzers zuweisen. Sie können auch Rollen zuweisen, wenn Sie einen künftigen Benutzer erstellen.
- Wechseln Sie in Ihrem App ID-Dashboard zu Profile und Rollen > Benutzerprofile.
- Klicken Sie im Menü 'Aktionen' in der Zeile desjenigen Benutzers, dem Sie eine Rolle zuweisen möchten, auf Rolle zuweisen.
- Wählen Sie die Rolle oder Rollen aus, die Sie aus der Liste der verfügbaren Rollen hinzufügen möchten.
- Optional: Wenn die gewünschte Rolle nicht angezeigt wird, klicken Sie auf Rolle erstellen und geben Sie die Informationen zum Hinzufügen einer weiteren Option ein.
- Klicken Sie auf Speichern.
Benutzern mit der Anwendungsprogrammierschnittstelle Rollen zuweisen
Nachdem Sie Rollen erstellt haben, können Sie diese dem Profil Ihres Benutzers zuweisen. Sie können auch Rollen zuweisen, wenn Sie einen künftigen Benutzer erstellen.
-
Rufen Sie Ihre Benutzer-ID ab, indem Sie Ihre App ID-Benutzer mit einer Abfrage suchen, mit der sich diese identifizieren lassen; z. B. mit einer E-Mail-Adresse.
curl -X GET "https://<region>.appid.cloud.ibm.com/management/v4/<tenantID>/Users?query=<identifyingSearchQuery>" \ -H "accept: application/json" \ -H "authorization: Bearer <token>"Beispiel:
curl -X GET https://us-south.appid.cloud.ibm.com/management/v4/e19a2778-3262-4986-8875-8khjafsdkhjsdafkjh/cloud_directory/Users?query=example@domain.com -H "accept: application/json" -H "authorization: Bearer eyJraWQiOiIyMDE3MTEyOSIsImFsZ...." -
Optional: Rufen Sie die Rollen-ID und den Rollennamen ab. Wenn Sie die Rollen-ID oder den Rollennamen bereits kennen, fahren Sie mit den nächsten Schritt fort.
curl -X GET "https://<region>.appid.cloud.ibm.com/management/v4/<tenantID>/roles" \ -H "accept: application/json" \ -H "authorization: Bearer <token>" -
Stellen Sie eine Anforderung an den Endpunkt
/roles, der ein JSON-Objekt der Rollen erstellt, die Sie zuordnen möchten.curl -X PUT "https://<region>.appid.cloud.ibm.com/management/v4/<tenantID>/users/<userID>/roles" -H "accept: application/json" -H "Content-Type: application/json" -d "{ \"roles\": { \"ids\": [ \"<roleIDs>\" ] }}" -H "authorization: Bearer <token>"
Stellen Sie erneut eine PUT-Anforderung, um eine Rolle von einem Benutzer zu entfernen, aber entfernen Sie die Rollen-ID.
Benutzerrollen zu Token hinzufügen
Standardmäßig werden Rollen nicht in einem Benutzertoken zurückgegeben. Sie sollten Ihre Laufzeitentscheidungen auf der Basis von Geltungsbereichen konfigurieren. Wenn Sie jedoch Rollen verwenden möchten, können Sie sie Ihren Token zuordnen. Verwenden Sie dazu die Zuordnung angepasster Anforderungen.
Stellen Sie bei der Authentifizierung sicher, dass Sie die Angaben username : client ID und password : secret für die Anwendung und den Benutzer verwenden, für die bzw. den Sie Kontrollmechanismen konfiguriert haben.
Einer Anwendung Rollen zuweisen
Nachdem Sie Rollen erstellt haben, können Sie diese mithilfe der Anwendungsprogrammierschnittstellen (APIs) von App ID Ihren Anwendungen zuweisen.
Anwendungsrollen sind nur innerhalb des Flusses von Clientberechtigungsnachweisen gültig.
-
Rufen Sie Ihre Anwendungsclient-ID ab, indem Sie die Liste von Anwendungen abfragen. Sie können diesen Wert auch über die Registerkarte Anwendungen der App ID-Benutzerschnittstelle abrufen.
curl -X GET "https://<region>.appid.cloud.ibm.com/management/v4/<tenantID>/applications" \ -H "accept: application/json" \ -H "authorization: Bearer <token>"Beispiel:
curl -X GET https://us-south.appid.cloud.ibm.com/management/v4/e19a2778-3262-4986-8875-8khjafsdkhjsdafkjh/applications -H "accept: application/json" -H "authorization: Bearer eyJraWQiOiIyMDE3MTEyOSIsImFsZ...." -
Rufen Sie die Rollen-ID ab.
curl -X GET "https://<region>.appid.cloud.ibm.com/management/v4/<tenantID>/roles" \ -H "accept: application/json" \ -H "authorization: Bearer <token>" -
Stellen Sie eine Anforderung an den Endpunkt
/roles, der ein JSON-Objekt der Rollen erstellt, die Sie zuordnen möchten. Diese Anforderung ersetzt aktuelle Rollen durch die angegebenen Rollen-IDs. Achten Sie darauf, die richtigen Rollen zuzuweisen.curl -X PUT "https://<region>.appid.cloud.ibm.com/management/v4/<tenantID>/applications/<clientID>/roles" -H "accept: application/json" -H "Content-Type: application/json" -d "{ \"roles\": { \"ids\": [ \"<roleIDs>\" ] }}" -H "authorization: Bearer <token>"
Stellen Sie erneut eine PUT-Anforderung, um eine Rolle von einem Benutzer zu entfernen, aber entfernen Sie die Rollen-ID.
Zugriff zur Laufzeit steuern
Wenn ein Benutzer oder eine Anwendung versucht, auf eine Ihrer geschützten Ressourcen zuzugreifen, werden Token erstellt und von App ID zurückgegeben. Alle Bereiche, die einem Benutzer oder einer Anwendung zugewiesen sind, werden im Zugriffstoken zurückgegeben. Sie können das Zugriffstoken verwenden, um Entscheidungen bei Laufzeit zu treffen. Abhängig von der Strategie, die Sie verwenden, um Ihre Anwendungen zu schützen, kann sich die Art und Weise unterscheiden, auf die Sie Bereiche überprüfen.
Verwendung der Web-App-Strategie
Sie können die Web-App-Strategie verwenden, um zu überprüfen, ob eine Anforderung Bereiche enthält, indem Sie die Methode hasScope anwenden. Wenn sich ein Benutzer
mit einer zugewiesenen Rolle anmeldet, erhält er Zugriff durch ein App ID-Token, das alle Bereiche enthält, die in der Rolle definiert sind.Wenn Sie zum Beispiel mit dem Node.js-SDK arbeiten, sieht Ihr Code-Snippet dem folgenden ähnlich:
app.get("/protected", passport.authenticate(WebAppStrategy.STRATEGY_NAME), function(req, res){
if(WebAppStrategy.hasScope(req, "read write")){
res.json(req.user);
}
else {
res.send("insufficient scopes");
}
});
Verwendung der API-Strategie
Sie können die Bereiche definieren, die erforderlich sind, um auf einen bestimmten Endpunkt zuzugreifen, indem Sie eine Bereichsvariable zu Ihrem API-Strategie-Code hinzufügen. Wenn Sie zum Beispiel über eine Anwendung verfügen, die in Node.js geschrieben wurde, und wenn Sie mit dem Node.js SDK arbeiten, sieht Ihr Code-Snippet dem folgenden möglicherweise ähnlich.
app.get("/api/protected",
passport.authenticate(APIStrategy.STRATEGY_NAME, {
audience: "myApp",
scope: "read write update"
}),
function(req, res) {
res.send("Hello from protected resource");
}
);
| Variable | Beschreibung |
|---|---|
scope |
Die erforderlichen Bereiche, getrennt durch ein Leerzeichen. |
audience |
Die Anwendungsclient-ID. |
Zugriff entfernen
Sie können einen beliebigen Bereich oder eine Rolle löschen, wenn sie nicht mehr benötigt werden.
Löschen von Bereichen in der Konsole
Wenn Sie einen Bereich nicht mehr benötigen, können Sie ihn mithilfe der Benutzerschnittstelle (UI) von App ID löschen.
Wenn Sie einen Bereich löschen, wird er aus allen Rollen entfernt, denen er zugeordnet ist.
Sie können das Service-Dashboard von App ID verwenden, um Bereiche zu löschen.
- Navigieren Sie im App ID-Dashboard zu Anwendungen.
- Klicken Sie im Menü 'Aktionen' in der Zeile derjenigen Anwendung, deren Bereiche Sie bearbeiten möchten, auf Bearbeiten.
- Klicken Sie in dem Feld für denjenigen Bereich, den Sie entfernen möchten, auf X.
- Klicken Sie auf Speichern.
Bereiche mit der Anwendungsprogrammierschnittstelle löschen
Wenn Sie einen Bereich nicht mehr benötigen, können Sie ihn mithilfe der Anwendungsprogrammierschnittstelle (API von App ID löschen. Sie löschen einen Bereich, indem Sie ihn aus Ihrem JSON-Objekt entfernen und eine neue PUT-Anforderung an
den Endpunkt /scopes stellen.
Wenn Sie einen Bereich löschen, wird er aus allen Rollen entfernt, denen er zugeordnet ist.
-
Ändern oder löschen Sie einen Bereich mithilfe der folgenden Anforderung an den Endpunkt
/scopes. Stellen Sie sicher, dass das JSON-Objekt Ihrer Bereiche nur die Bereiche enthält, die Sie zulassen möchten.curl -X PUT "https://<region>.appid.cloud.ibm.com/management/v4/<tenantID>/applications/<clientID>/scopes" -H "accept: application/json" -H "Content-Type: application/json" -d "{\ "scopes":\ [\ <scopesObject>" ]}"
Löschen von Rollen in der Konsole
Wenn Sie eine bestimmte Rolle nicht länger benötigen, können Sie sie über die Benutzerschnittstelle von App ID löschen.
Durch das Löschen einer Rolle wird der Zugriff für alle Benutzer und Anwendungen entfernt, die diese Rolle derzeit verwenden.
- Wechseln Sie im Service-Dashboard zu Profile und Rollen > Rollen.
- Wählen Sie in der Zeile für diejenige Rolle, die Sie löschen möchten, im Aktionsmenü die Option Löschen aus.
- Bestätigen Sie, dass Sie verstanden haben, dass das Löschen der Rolle sich auf alle Benutzer und Anwendungen auswirkt, die momentan diese Rolle verwenden.
- Klicken Sie auf Löschen.
Rollen mit der Anwendungsprogrammierschnittstelle löschen
Wenn Sie eine bestimmte Rolle nicht mehr benötigen, können Sie sie mithilfe der App ID-APIs löschen.
Durch das Löschen einer Rolle wird der Zugriff für alle Benutzer und Anwendungen entfernt, die diese Rolle derzeit verwenden.
-
Rufen Sie die Rollen-ID oder den Rollennamen ab. Wenn Sie die Rollen-ID oder den Rollennamen bereits kennen, fahren Sie mit den nächsten Schritt fort.
curl -X GET "https://<region>.appid.cloud.ibm.com/management/v4/<tenantID>/roles" -H "accept: application/json" -
Stellen Sie eine Anforderung an den Endpunkt
/roles, der ein JSON-Objekt der Rollen erstellt, die Sie zuordnen möchten.curl -X DELETE "https://<region>.appid.cloud.ibm.com/management/v4/<tenantID>/roles/<roleID>" -H "accept: application/json"