Lavorare con le policy IAM - AWS SDK for JavaScript

Abbiamo annunciato l'imminente uscita end-of-support per la AWS SDK for JavaScript v2. Ti consigliamo di migrare alla AWS SDK for JavaScript v3. Per date, dettagli aggiuntivi e informazioni su come effettuare la migrazione, consulta l'annuncio collegato.

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Lavorare con le policy IAM

JavaScript code example that applies to Node.js execution

Questo esempio di codice di Node.js illustra:

  • Come creare ed eliminare le policy IAM.

  • Come collegare e scollegare le politiche IAM dai ruoli.

Lo scenario

Concedi le autorizzazioni a un utente creando una policy che è un documento che elenca le operazioni che un utente può eseguire e le risorse che tali operazioni possono influenzare. Qualsiasi operazione o risorsa che non è esplicitamente consentita viene negata come impostazione predefinita. Le policy possono essere create e collegate a utenti, gruppi di utenti, ruoli assunti da utenti e risorse.

In questo esempio, una serie di moduli Node.js vengono utilizzati per gestire le policy in IAM. I moduli Node.js utilizzano l'SDK per JavaScript creare ed eliminare le politiche, nonché per allegare e scollegare le politiche relative ai ruoli utilizzando questi metodi della AWS.IAM classe client:

Per ulteriori informazioni sugli utenti IAM, consulta Overview of Access Management: Permissions and Policies nella IAM User Guide.

Attività prerequisite

Per configurare ed eseguire questo esempio, è necessario completare queste attività:

Creazione di una policy IAM

Crea un modulo Node.js con il nome del file iam_createpolicy.js. Assicurati di configurare il kit SDK come mostrato in precedenza. Per accedere a IAM, crea un oggetto AWS.IAM di servizio. Crea due oggetti JSON, uno contenente il documento della policy che desideri creare e l'altro contenente i parametri necessari per creare la policy, che comprende il JSON della policy e il nome che desideri dare alla policy. Assicurati di eseguire la funzione stringify sull'oggetto JSON della policy nei parametri. Chiama il metodo createPolicy dell'oggetto di servizio AWS.IAM.

// Load the AWS SDK for Node.js var AWS = require("aws-sdk"); // Set the region AWS.config.update({ region: "REGION" }); // Create the IAM service object var iam = new AWS.IAM({ apiVersion: "2010-05-08" }); var myManagedPolicy = { Version: "2012-10-17", Statement: [ { Effect: "Allow", Action: "logs:CreateLogGroup", Resource: "RESOURCE_ARN", }, { Effect: "Allow", Action: [ "dynamodb:DeleteItem", "dynamodb:GetItem", "dynamodb:PutItem", "dynamodb:Scan", "dynamodb:UpdateItem", ], Resource: "RESOURCE_ARN", }, ], }; var params = { PolicyDocument: JSON.stringify(myManagedPolicy), PolicyName: "myDynamoDBPolicy", }; iam.createPolicy(params, function (err, data) { if (err) { console.log("Error", err); } else { console.log("Success", data); } });

Digita la seguente riga di comando per eseguire l'esempio.

node iam_createpolicy.js

Questo codice di esempio può essere trovato qui GitHub.

Ottenere una politica IAM

Crea un modulo Node.js con il nome del file iam_getpolicy.js. Assicurati di configurare il kit SDK come mostrato in precedenza. Per accedere a IAM, crea un oggetto AWS.IAM di servizio. Crea un oggetto JSON che contenga i parametri necessari per recuperare una policy, che è l'ARN della policy che desideri recuperare. Chiama il metodo getPolicy dell'oggetto di servizio AWS.IAM. Scrivi la descrizione della policy nella console.

// Load the AWS SDK for Node.js var AWS = require("aws-sdk"); // Set the region AWS.config.update({ region: "REGION" }); // Create the IAM service object var iam = new AWS.IAM({ apiVersion: "2010-05-08" }); var params = { PolicyArn: "arn:aws:iam::aws:policy/AWSLambdaExecute", }; iam.getPolicy(params, function (err, data) { if (err) { console.log("Error", err); } else { console.log("Success", data.Policy.Description); } });

Digita la seguente riga di comando per eseguire l'esempio.

node iam_getpolicy.js

Questo codice di esempio può essere trovato qui GitHub.

Collegamento di una policy di ruolo gestita

Crea un modulo Node.js con il nome del file iam_attachrolepolicy.js. Assicurati di configurare il kit SDK come mostrato in precedenza. Per accedere a IAM, crea un oggetto AWS.IAM di servizio. Crea un oggetto JSON contenente i parametri necessari per ottenere un elenco di policy IAM gestite allegate a un ruolo, che consiste nel nome del ruolo. Fornisci il nome del ruolo come parametro della riga di comando. Chiama il metodo listAttachedRolePolicies dell'oggetto di servizio AWS.IAM, che restituisce una serie di policy gestite alla funzione di callback.

Controlla i membri della serie per vedere se la policy da collegare al ruolo è già collegata. Se la policy non è collegata, chiama il metodo attachRolePolicy per collegarla.

// Load the AWS SDK for Node.js var AWS = require("aws-sdk"); // Set the region AWS.config.update({ region: "REGION" }); // Create the IAM service object var iam = new AWS.IAM({ apiVersion: "2010-05-08" }); var paramsRoleList = { RoleName: process.argv[2], }; iam.listAttachedRolePolicies(paramsRoleList, function (err, data) { if (err) { console.log("Error", err); } else { var 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(); } }); var params = { PolicyArn: "arn:aws:iam::aws:policy/AmazonDynamoDBFullAccess", RoleName: process.argv[2], }; iam.attachRolePolicy(params, function (err, data) { if (err) { console.log("Unable to attach policy to role", err); } else { console.log("Role attached successfully"); } }); } });

Digita la seguente riga di comando per eseguire l'esempio.

node iam_attachrolepolicy.js IAM_ROLE_NAME

Scollegamento di una policy di ruolo gestita

Crea un modulo Node.js con il nome del file iam_detachrolepolicy.js. Assicurati di configurare il kit SDK come mostrato in precedenza. Per accedere a IAM, crea un oggetto AWS.IAM di servizio. Crea un oggetto JSON contenente i parametri necessari per ottenere un elenco di policy IAM gestite allegate a un ruolo, che consiste nel nome del ruolo. Fornisci il nome del ruolo come parametro della riga di comando. Chiama il metodo listAttachedRolePolicies dell'oggetto di servizio AWS.IAM, che restituisce una serie di policy gestite nella funzione di callback.

Controlla i membri della serie per vedere se la policy da scollegare dal ruolo è collegata. Se la policy è collegata, chiama il metodo detachRolePolicy per scollegarla.

// Load the AWS SDK for Node.js var AWS = require("aws-sdk"); // Set the region AWS.config.update({ region: "REGION" }); // Create the IAM service object var iam = new AWS.IAM({ apiVersion: "2010-05-08" }); var paramsRoleList = { RoleName: process.argv[2], }; iam.listAttachedRolePolicies(paramsRoleList, function (err, data) { if (err) { console.log("Error", err); } else { var myRolePolicies = data.AttachedPolicies; myRolePolicies.forEach(function (val, index, array) { if (myRolePolicies[index].PolicyName === "AmazonDynamoDBFullAccess") { var params = { PolicyArn: "arn:aws:iam::aws:policy/AmazonDynamoDBFullAccess", RoleName: process.argv[2], }; iam.detachRolePolicy(params, function (err, data) { if (err) { console.log("Unable to detach policy from role", err); } else { console.log("Policy detached from role successfully"); process.exit(); } }); } }); } });

Digita la seguente riga di comando per eseguire l'esempio.

node iam_detachrolepolicy.js IAM_ROLE_NAME