Arbeiten mit IAM-Richtlinien - AWS SDK for JavaScript

Helfen Sie uns, dasAWS SDK for JavaScriptVersion 3 (V3) -Dokumentation durch Feedback unter Verwendung derFeedbackLink oder erstellen Sie ein Problem oder ziehen Sie eine Anfrage anGitHubaus.

DieAWS SDK for JavaScriptReferenzhandbuch zur V3-API-Referenzbeschreibt ausführlich alle API-Operationen für dieAWS SDK for JavaScriptVersion 3 (V3).

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Arbeiten mit IAM-Richtlinien

JavaScript code example that applies to Node.js execution

Dieses Node.js-Codebeispiel zeigt:

  • So erstellen und löschen Sie IAM-Richtlinien.

  • So fügen Sie IAM-Richtlinien an und trennen Sie von -Rollen.

Das Szenario

Sie können einem Benutzer Berechtigungen erteilen, indem Sie eine Richtlinie erstellen, d. h., ein Dokument, in dem die Aktionen aufgeführt sind, die ein Benutzer ausführen kann, sowie die Ressourcen, auf die sich diese Aktionen auswirken können. Alle Aktionen oder Ressourcen, die nicht explizit erlaubt sind, werden standardmäßig verweigert. Richtlinien können erstellt und an Benutzer, Benutzergruppen, von Benutzern übernommene Rollen und Ressourcen angehängt werden.

In diesem Beispiel werden mehrere Module Node.js verwendet, um Richtlinien in IAM zu verwalten. Die Module Node.js verwenden das SDK für JavaScript zum Erstellen und Löschen von Richtlinien sowie zum Anfügen und Trennen von Rollenrichtlinien mit diesen Methoden desIAMClient-Klasse:

Weitere Informationen zu IAM-Benutzern finden Sie unter.Überblick über das Zugriffsmanagement: Berechtigungen und RichtlinienimIAM User Guideaus.

Erforderliche Aufgaben

Zum Einrichten und Ausführen dieses Beispiels müssen Sie zunächst diese Aufgaben abschließen:

  • Richten Sie die Projektumgebung ein, um diese Node TypeScript-Beispiele auszuführen, und installieren Sie die erforderlichenAWS SDK for JavaScriptund Drittanbieter-Module. Folgen Sie den Anweisungen fürGitHubaus.

  • Erstellen Sie eine freigegebene Konfigurationsdatei mit Ihren Anmeldeinformationen. Weitere Informationen zum Bereitstellen einer Datei mit gemeinsam genutzten Anmeldeinformationen finden Sie unter Laden der Anmeldeinformationen in Node.js aus der Datei mit gemeinsamen -Anmeld.

  • Erstellen Sie eine IAM-Rolle, der Sie Richtlinien anfügen können. Weitere Informationen zum Erstellen von -Rollen finden Sie unter.Erstellen von IAM-RollenimIAM User Guideaus.

Wichtig

Diese Beispiele zeigen, wie Client-Serviceobjekte importiert/exportiert und mit ECMASCRIPT6 (ES6) befehligt werden.

  • Dies erfordert Node.js Version 13.x oder höher. Informationen zum Herunterladen der neuesten Version von Node.js finden Sie unterNode.js.aus.

  • Wenn Sie lieber die CommonJS-Syntax verwenden möchten, finden Sie unter weitere InformationenJavaScript ES6/CommonJS-Syntaxaus.

Erstellen einer IAM-Richtlinie

Erstellen eineslibsVerzeichnis und Erstellen Sie ein Modul Node.js mit dem DateinameniamClient.jsaus. Kopieren Sie den folgenden Code und fügen Sie ihn ein, wodurch das IAM-Clientobjekt erstellt wird. ErsetzenREGIONMit IhrerAWSRegion :

import { IAMClient } from "@aws-sdk/client-iam"; // Set the AWS Region. const REGION = "REGION"; //e.g. "us-east-1" // Create an IAM service client object. const iamClient = new IAMClient({ region: REGION }); export { iamClient };

Diesen Beispielcode finden Sie unter.hier auf GitHubaus.

Erstellen Sie ein Node.js-Modul mit dem Dateinamen iam_createpolicy.js. Stellen Sie sicher, dass Sie das SDK, wie zuvor dargestellt, konfigurieren, konfigurieren, einschließlich dem Herunterladen der erforderlichen Clients und Pakete. Erstellen Sie zwei JSON-Objekte, eines mit dem Richtliniendokument, das Sie erstellen möchten, und das andere mit den erforderlichen Parametern, die zum Erstellen der Richtlinie erforderlich sind. Hierzu gehören die Richtlinien-JSON und der Name, den die Richtlinie geben sollen. Stellen Sie sicher, dass Sie das JSON-Objekt der Richtlinie in den Parametern in eine Zeichenfolge umwandeln. Rufen Sie dieCreatePolicyCommand-Methode desIAMClient-Serviceobjekt.

Anmerkung

ErsetzenRESOURCE_ARNmit dem Amazon-Ressourcennamen (ARN) der Ressource, für die Sie die Berechtigungen erteilen möchten, undDYNAMODB_POLICY_NAMEmit dem Namen des DynamoDB-Richtliniennamens.

// Import required AWS SDK clients and commands for Node.js import { iamClient } from "./libs/iamClient.js"; import { CreatePolicyCommand } from "@aws-sdk/client-iam"; // Set the parameters const myManagedPolicy = { Version: "2012-10-17", Statement: [ { Effect: "Allow", Action: "logs:CreateLogGroup", Resource: "RESOURCE_ARN", // RESOURCE_ARN }, { Effect: "Allow", Action: [ "dynamodb:DeleteItem", "dynamodb:GetItem", "dynamodb:PutItem", "dynamodb:Scan", "dynamodb:UpdateItem", ], Resource: "DYNAMODB_POLICY_NAME", // DYNAMODB_POLICY_NAME; e.g., "myDynamoDBName" }, ], }; export const params = { PolicyDocument: JSON.stringify(myManagedPolicy), PolicyName: "IAM_POLICY_NAME", }; export const run = async () => { try { const data = await iamClient.send(new CreatePolicyCommand(params)); console.log("Success", data); return data; } catch (err) { console.log("Error", err); } }; run();

Geben Sie an der Eingabeaufforderung Folgendes ein.

node iam_createpolicy.js

Diesen Beispielcode finden Sie unter.hier auf GitHubaus.

Abrufen einer IAM-Richtlinie

Erstellen eineslibsVerzeichnis und Erstellen Sie ein Modul Node.js mit dem DateinameniamClient.jsaus. Kopieren Sie den folgenden Code und fügen Sie ihn ein, wodurch das IAM-Clientobjekt erstellt wird. ErsetzenREGIONMit IhrerAWSRegion :

import { IAMClient } from "@aws-sdk/client-iam"; // Set the AWS Region. const REGION = "REGION"; //e.g. "us-east-1" // Create an IAM service client object. const iamClient = new IAMClient({ region: REGION }); export { iamClient };

Diesen Beispielcode finden Sie unter.hier auf GitHubaus.

Erstellen Sie ein Node.js-Modul mit dem Dateinamen iam_getpolicy.js. Stellen Sie sicher, dass Sie das SDK, wie zuvor dargestellt, konfigurieren, konfigurieren, einschließlich dem Herunterladen der erforderlichen Clients und Pakete. Erstellen Sie ein JSON-Objekt mit den erforderlichen Parametern, um eine Richtlinie abzurufen. Dies ist der ARN der Richtlinie, die abgerufen werden sollen. Rufen Sie dieGetPolicyCommand-Methode desIAMClient-Serviceobjekt. Schreiben Sie die Richtlinienbeschreibung an die Konsole.

// Import required AWS SDK clients and commands for Node.js import { iamClient } from "./libs/iamClient.js"; import { GetPolicyCommand } from "@aws-sdk/client-iam"; // Set the parameters export const params = { PolicyArn: "arn:aws:iam::aws:policy/AWSLambdaExecute", }; export const run = async () => { try { const data = await iamClient.send(new GetPolicyCommand(params)); console.log("Success", data); return data; } catch (err) { console.log("Error", err); } }; run();

Geben Sie an der Eingabeaufforderung Folgendes ein.

node iam_getpolicy.js

Diesen Beispielcode finden Sie unter.hier auf GitHubaus.

Anhängen einer Richtlinie für verwaltete Rollen

Erstellen eineslibsVerzeichnis und Erstellen Sie ein Modul Node.js mit dem DateinameniamClient.jsaus. Kopieren Sie den folgenden Code und fügen Sie ihn ein, wodurch das IAM-Clientobjekt erstellt wird. ErsetzenREGIONMit IhrerAWSRegion :

import { IAMClient } from "@aws-sdk/client-iam"; // Set the AWS Region. const REGION = "REGION"; //e.g. "us-east-1" // Create an IAM service client object. const iamClient = new IAMClient({ region: REGION }); export { iamClient };

Diesen Beispielcode finden Sie unter.hier auf GitHubaus.

Erstellen Sie ein Node.js-Modul mit dem Dateinamen iam_attachrolepolicy.js. Stellen Sie sicher, dass Sie das SDK, wie zuvor dargestellt, konfigurieren, konfigurieren, einschließlich dem Herunterladen der erforderlichen Clients und Pakete. Erstellen Sie ein JSON-Objekt mit den erforderlichen Parametern, um eine Liste der verwalteten IAM-Richtlinien aufzurufen, die einer Rolle zugeordnet sind. Dieses Objekt besteht aus dem Namen der Rolle. Geben Sie den Rollennamen als Befehlszeilen-Parameter ein. Rufen Sie dieListAttachedRolePoliciesCommand-Methode desIAM-Client-Serviceobjekt, das ein Array von verwalteten Richtlinien an die Callback-Funktion zurückgibt.

Überprüfen Sie die Array-Mitglieder, um festzustellen, ob die Richtlinie, die an die Rolle angefügt werden soll, bereits zugeordnet ist. Wenn die Richtlinie nicht verknüpft ist, rufen Sie die AttachRolePolicyCommand-Methode auf, um die Richtlinie anzufügen.

Anmerkung

ErsetzenROLLENNAMEmit dem Namen der anzuhängenden Rolle.

// Import required AWS SDK clients and commands for Node.js import { iamClient } from "./libs/iamClient.js"; import { ListAttachedRolePoliciesCommand, AttachRolePolicyCommand, } from "@aws-sdk/client-iam"; // Set the parameters const ROLENAME = "ROLE_NAME"; const paramsRoleList = { RoleName: ROLENAME }; //ROLE_NAME export const params = { PolicyArn: "arn:aws:iam::aws:policy/AmazonDynamoDBFullAccess", RoleName: ROLENAME, }; export const run = async () => { try { const data = await iamClient.send( new ListAttachedRolePoliciesCommand(paramsRoleList) ); return data; const myRolePolicies = data.AttachedPolicies; myRolePolicies.forEach(function (val, index, array) { if (myRolePolicies[index].PolicyName === "AmazonDynamoDBFullAccess") { console.log( "AmazonDynamoDBFullAccess is already attached to this role." ); process.exit(); } }); try { const data = await iamClient.send(new AttachRolePolicyCommand(params)); console.log("Role attached successfully"); return data; } catch (err) { console.log("Error", err); } } catch (err) { console.log("Error", err); } }; run();

Geben Sie an der Eingabeaufforderung Folgendes ein.

node iam_attachrolepolicy.js

Diesen Beispielcode finden Sie unter.hier auf GitHubaus.

Trennen einer verwalteten -Rollenrichtlinie

Erstellen eineslibsVerzeichnis und Erstellen Sie ein Modul Node.js mit dem DateinameniamClient.jsaus. Kopieren Sie den folgenden Code und fügen Sie ihn ein, wodurch das IAM-Clientobjekt erstellt wird. ErsetzenREGIONMit IhrerAWSRegion :

import { IAMClient } from "@aws-sdk/client-iam"; // Set the AWS Region. const REGION = "REGION"; //e.g. "us-east-1" // Create an IAM service client object. const iamClient = new IAMClient({ region: REGION }); export { iamClient };

Diesen Beispielcode finden Sie unter.hier auf GitHubaus.

Erstellen Sie ein Node.js-Modul mit dem Dateinamen iam_detachrolepolicy.js. Stellen Sie sicher, dass Sie das SDK, wie zuvor dargestellt, konfigurieren, konfigurieren, einschließlich dem Herunterladen der erforderlichen Clients und Pakete. Erstellen Sie ein JSON-Objekt mit den erforderlichen Parametern, um eine Liste der verwalteten IAM-Richtlinien aufzurufen, die einer Rolle zugeordnet sind. Dieses Objekt besteht aus dem Namen der Rolle. Geben Sie den Rollennamen als Befehlszeilen-Parameter ein. Rufen Sie dieListAttachedRolePoliciesCommand-Methode desIAM-Client-Serviceobjekt, das ein Array von verwalteten Richtlinien in der Callback-Funktion zurückgibt.

Überprüfen Sie die Array-Mitglieder, um festzustellen, ob die Richtlinie, die von der Rolle entfernt werden soll, angefügt ist. Wenn die Richtlinie angefügt ist, rufen Sie die DetachRolePolicyCommand-Methode auf, um die Richtlinie zu trennen.

Anmerkung

ErsetzenROLLENNAMEmit dem Namen der abzutrennen.

// Import required AWS SDK clients and commands for Node.js import { iamClient } from "./libs/iamClient.js"; import { ListAttachedRolePoliciesCommand, DetachRolePolicyCommand, } from "@aws-sdk/client-iam"; // Set the parameters export const params = { RoleName: "ROLE_NAME" }; //ROLE_NAME export const run = async () => { try { const data = await iamClient.send( new ListAttachedRolePoliciesCommand(params) ); return data; const myRolePolicies = data.AttachedPolicies; myRolePolicies.forEach(function (val, index, array) { if (myRolePolicies[index].PolicyName === "AmazonDynamoDBFullAccess") { const params = { PolicyArn: "arn:aws:iam::aws:policy/AmazonDynamoDBFullAccess", paramsRoleList, }; try { const results = iamClient.send( new DetachRolePolicyCommand(paramsRoleList) ); console.log("Policy detached from role successfully"); process.exit(); } catch (err) { console.log("Unable to detach policy from role", err); } } else { } }); } catch (err) { console.log("User " + "USER_NAME" + " does not exist."); } }; run();

Geben Sie an der Eingabeaufforderung Folgendes ein.

node iam_detachrolepolicy.js

Diesen Beispielcode finden Sie unter.hier auf GitHubaus.