곧 AWS SDK for JavaScript(v2)에 대한 지원이 종료될 예정임을 알려드립니다
IAM 정책으로 작업
이 Node.js 코드 예제는 다음을 보여 줍니다.
IAM 정책을 생성하고 삭제하는 방법
IAM 정책을 역할에 연결하고 분리하는 방법
시나리오
정책을 생성하여 사용자에게 권한을 부여합니다. 정책은 사용자가 수행할 수 있는 작업과 해당 작업이 영향을 미칠 수 있는 리소스 목록을 표시하는 문서입니다. 명시적으로 허용되지 않은 작업 또는 리소스는 기본적으로 모두 거부됩니다. 정책을 생성하여 사용자, 사용자 그룹, 사용자가 맡는 역할, 리소스에 연결할 수 있습니다.
이 예제에서는 일련의 Node.js 모듈을 사용하여 IAM에서 정책을 관리합니다. Node.js 모듈은 SDK for JavaScript로 AWS.IAM
클라이언트 클래스의 다음 메서드를 사용하여 정책을 생성하고 삭제하며 역할 정책을 연결하고 분리합니다.
IAM 사용자에 대한 자세한 내용은 IAM 사용 설명서에서 액세스 관리 개요: 권한 및 정책을 참조하세요.
사전 필수 작업
이 예제를 설정하고 실행하려면 먼저 이러한 작업들을 완료해야 합니다.
Node.js를 설치합니다. Node.js 설치에 대한 자세한 내용은 Node.js 웹 사이트
를 참조하세요. 사용자 자격 증명을 사용하여 공유 구성 파일을 생성합니다. 공유 자격 증명 파일 제공에 대한 자세한 내용은 공유 인증 자격 증명 파일에서 Node.js에 인증 자격 증명 로드 섹션을 참조하세요.
정책을 연결할 수 있는 IAM 역할을 생성합니다. IAM 역할 생성에 대한 자세한 내용은 IAM 사용 설명서의 IAM 역할 생성을 참조하세요.
IAM 정책 생성
파일 이름이 iam_createpolicy.js
인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다. IAM에 액세스하려면 AWS.IAM
서비스 객체를 생성합니다. 두 개의 JSON 객체를 생성합니다. 하나는 생성하려는 정책 문서를 포함하고 다른 하나는 정책 JSON과 정책에 지정할 이름을 포함하여 정책을 생성하는 데 필요한 파라미터를 포함합니다. 파라미터에서 정책 JSON 객체를 문자열로 만들어야 합니다. AWS.IAM
서비스 객체의 createPolicy
메서드를 호출합니다.
// 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); } });
예제를 실행하려면 명령줄에서 다음을 입력합니다.
node iam_createpolicy.js
이 샘플 코드는 GitHub
IAM 정책 가져오기
파일 이름이 iam_getpolicy.js
인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다. IAM에 액세스하려면 AWS.IAM
서비스 객체를 생성합니다. 정책을 검색하는 데 필요한 파라미터를 포함하는 JSON 객체를 생성합니다. 이 객체에는 가져오려는 정책의 ARN이 포함됩니다. AWS.IAM
서비스 객체의 getPolicy
메서드를 호출합니다. 정책 설명을 콘솔에 씁니다.
// 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); } });
예제를 실행하려면 명령줄에서 다음을 입력합니다.
node iam_getpolicy.js
이 샘플 코드는 GitHub
관리형 역할 정책 연결
파일 이름이 iam_attachrolepolicy.js
인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다. IAM에 액세스하려면 AWS.IAM
서비스 객체를 생성합니다. 역할에 연결된 관리형 IAM 정책의 목록을 가져오는 데 필요한 파라미터를 포함하는 JSON 객체를 생성합니다. 이 객체는 역할의 이름으로 구성됩니다. 역할 이름을 명령줄 파라미터로 제공합니다. AWS.IAM
서비스 객체의 listAttachedRolePolicies
메서드를 호출합니다. 그러면 관리형 정책 배열이 콜백 함수에 반환됩니다.
배열 구성원을 점검하여 역할에 연결하려는 정책이 이미 연결되어 있는지 확인합니다. 정책이 연결되어 있지 않은 경우 attachRolePolicy
메서드를 호출하여 정책을 연결합니다.
// 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"); } }); } });
예제를 실행하려면 명령줄에서 다음을 입력합니다.
node iam_attachrolepolicy.js
IAM_ROLE_NAME
관리형 역할 정책 분리
파일 이름이 iam_detachrolepolicy.js
인 Node.js 모듈을 생성합니다. 위와 같이 SDK를 구성해야 합니다. IAM에 액세스하려면 AWS.IAM
서비스 객체를 생성합니다. 역할에 연결된 관리형 IAM 정책의 목록을 가져오는 데 필요한 파라미터를 포함하는 JSON 객체를 생성합니다. 이 객체는 역할의 이름으로 구성됩니다. 역할 이름을 명령줄 파라미터로 제공합니다. AWS.IAM
서비스 객체의 listAttachedRolePolicies
메서드를 호출합니다. 그러면 관리형 정책 배열이 콜백 함수에서 반환됩니다.
배열 구성원을 점검하여 역할에서 분리하려는 정책이 연결되어 있는지 확인합니다. 정책이 연결되어 있는 경우 detachRolePolicy
메서드를 호출하여 정책을 분리합니다.
// 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(); } }); } }); } });
예제를 실행하려면 명령줄에서 다음을 입력합니다.
node iam_detachrolepolicy.js
IAM_ROLE_NAME