AWS re:Post을(를) 사용하면 다음에 동의하게 됩니다. AWS re:Post 이용 약관

AWS CLI를 사용하여 IAM 역할을 맡으려면 어떻게 해야 합니까?

6분 분량
0

AWS Command Line Interface(AWS CLI)를 사용하여 AWS Identity and Access Management(IAM) 역할을 맡으려고 합니다.

해결 방법

**참고:**AWS CLI 명령을 실행할 때 오류가 발생하면, AWS CLI 오류 문제 해결을 참조하세요. 또한 최신 AWS CLI 버전을 사용하고 있는지 확인하십시오.

AWS CLI를 사용하여 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스에 대한 읽기 전용 액세스 권한이 있는 IAM 역할을 맡으려면 다음 작업을 완료하십시오.

중요: 암호와 같은 자격 증명은 다음 단계에서 명령을 실행할 때 일반 텍스트로 표시됩니다. IAM 역할을 맡은 후에는 암호를 변경하는 것이 가장 좋습니다.

역할 수임 권한이 있는 IAM 사용자 생성

  1. 다음 명령을 사용하여 AWS CLI에서 IAM 사용자를 생성합니다.
    참고: Bob을 IAM 사용자 이름으로 바꿉니다.
  2. 사용자 Bob에게 권한을 부여하는 IAM 정책을 생성합니다. 이렇게 하려면 원하는 텍스트 편집기를 사용하여 IAM 정책을 정의하는 JSON 파일을 생성합니다. 다음 JSON 예제인 example-policy.json을 템플릿으로 사용할 수 있습니다.
    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "ec2:Describe*",
            "iam:ListRoles",
            "sts:AssumeRole"
          ],
          "Resource": "*"
        }
      ]
    }

IAM 정책 생성에 대한 자세한 내용은 IAM 정책 생성, IAM 자격 증명 기반 정책 예시, 및 IAM JSON 정책 참조를 참조하십시오.

IAM 정책 생성

IAM 정책을 생성하려면 다음 단계를 완료하십시오.

  1. 다음 aws iam create-policy 명령을 실행합니다.
    aws iam create-policy --policy-name example-policy --policy-document file://example-policy.json
    aws iam create-policy 명령은 다음과 같이 IAM 정책의 ARN(Amazon 리소스 이름)을 비롯한 여러 정보를 출력합니다.
    arn:aws:iam::123456789012:policy/example-policy
    참고: 123456789012을 사용자의 계정 ID로 바꿉니다.
  2. 출력의 IAM 정책 ARN을 기록하고 attach-user-policy 명령을 사용하여 정책을 Bob에 연결합니다. 그런 다음 다음과 같이 list-attached-user-policies 명령을 사용하여 첨부 파일이 제자리에 있는지 확인합니다.
    aws iam attach-user-policy --user-name Bob --policy-arn "arn:aws:iam::123456789012:policy/example-policy"
    aws iam list-attached-user-policies --user-name Bob

IAM 역할의 신뢰 관계를 정의하는 JSON 파일 생성

텍스트 편집기를 사용하여 신뢰 관계를 정의하는 JSON 파일을 생성합니다. 다음 신뢰 정책을 예로 사용할 수 있습니다.

{
  "Version": "2012-10-17",
  "Statement": {
    "Effect": "Allow",
    "Principal": {
      "AWS": "123456789012"
    },
    "Action": "sts:AssumeRole"
  }
}

이 신뢰 정책은 계정 123456789012의 사용자 및 역할이 권한 정책에서 sts:AssumeRole 작업을 허용하는 경우 이 역할을 수임할 수 있도록 합니다. 특정 IAM 사용자만 IAM 역할을 맡을 수 있도록 신뢰 관계를 제한할 수도 있습니다. 이 작업을 수행하려면 arn:aws:iam::123456789012:user/example-username과 유사한 위탁자를 지정하십시오. 자세한 내용은 AWS JSON 정책 요소: 보안 주체를 참조하세요.

IAM 역할 생성 및 정책 연결

Amazon Relational Database Service(Amazon RDS) 인스턴스에 대한 읽기 전용 액세스 권한을 지닌 Bob이 맡을 수 있는 IAM 역할을 생성합니다. IAM 사용자가 IAM 역할을 맡을 수 있도록 하려면 IAM 사용자가 해당 역할을 맡도록 허용하는 위탁자를 지정해야 합니다. 예를 들어 arn:aws:iam::123456789012:root와 유사한 위탁자가 계정 123456789012의 모든 IAM ID로 하여금 해당 역할을 맡도록 허용할 수 있습니다. 자세한 내용은 IAM 사용자에게 권한을 위임할 수 있는 역할 생성을 참조하십시오.

  1. Amazon RDS DB 인스턴스에 대한 읽기 전용 액세스 권한이 있는 IAM 역할을 생성합니다. 보안 요구 사항에 따라 IAM 정책을 IAM 역할에 연결합니다.

    aws iam create-role 명령은 IAM 역할을 생성하고 이미 생성한 JSON 파일에 정의된 신뢰 관계를 정의합니다. aws iam attach-role-policy 명령은 AWS 관리형 정책 AmazonRDSReadOnlyAccess를 해당 역할에 연결합니다. 보안 요구 사항에 따라 다양한 정책(관리형 정책 및 사용자 지정 정책)을 연결할 수 있습니다. aws iam list-attached-role-policies 명령은 IAM 역할 example-role에 연결된 IAM 정책을 보여 줍니다. 예를 들어 다음 명령을 실행합니다:

    aws iam create-role --role-name example-role --assume-role-policy-document file://example-role-trust-policy.json
    aws iam attach-role-policy --role-name example-role --policy-arn "arn:aws:iam::aws:policy/AmazonRDSReadOnlyAccess"
    aws iam list-attached-role-policies --role-name example-role

    참고: Bob이 EC2 인스턴스에 대한 읽기 전용 액세스 권한을 가지고 example-role을 맡을 수 있는지 확인하십시오.

  2. 다음 명령을 사용하여 Bob의 액세스 키를 생성합니다.

    aws iam create-access-key --user-name Bob

    중요: 이 AWS CLI 명령은 액세스 키 ID와 비밀 액세스 키를 출력합니다. 이 키들을 반드시 기록해 두십시오.

액세스 키 구성

액세스 키를 구성하려면 기본 프로필 또는 특정 프로필을 사용하십시오. 기본 프로필을 구성하려면 aws configure를 실행합니다. 특정 프로필을 새로 생성하려면 aws configure --profile example_-_profile-name을 실행합니다. 이 예에서 기본 프로필은 다음과 같이 구성됩니다.

aws configure
AWS Access Key ID [None]: ExampleAccessKeyID1
AWS Secret Access Key [None]: ExampleSecretKey1
Default region name [None]: eu-west-1
Default output format [None]: json

참고: 기본 리전 이름에, AWS 리전을 지정하세요.

AWS CLI 명령이 간접적으로 호출되었는지 확인한 다음 IAM 사용자 액세스 확인

다음 단계를 완료합니다.

  1. aws sts get-caller-identity 명령을 다음과 같이 실행합니다.

    aws sts get-caller-identity

    **aws sts get-caller-identity ** 명령의 출력에는 ARN이 포함됩니다. AWS CLI 명령이 Bob으로 간접 호출되는지 확인하려면 출력에 arn:aws:iam::123456789012:user/Bob과 유사한 내용이 포함되어 있는지 확인하십시오.

  2. 다음 명령을 실행하여 IAM 사용자에게 EC2 인스턴스에 대한 읽기 전용 액세스 권한이 있고 Amazon RDS DB 인스턴스에 대한 액세스 권한이 없음을 확인합니다.

    aws ec2 describe-instances --query "Reservations[*].Instances[*].[VpcId, InstanceId, ImageId, InstanceType]"
    aws rds describe-db-instances --query "DBInstances[*].[DBInstanceIdentifier, DBName, DBInstanceStatus, AvailabilityZone, DBInstanceClass]"

    aws ec2 describe-instances 명령을 실행하면 eu-west-1 리전에 있는 모든 EC2 인스턴스가 표시됩니다. Bob은 Amazon RDS에 대한 액세스 권한이 없으므로 aws rds describe-db-instances 명령이 액세스 거부 오류 메시지를 생성합니다.

IAM 역할 수임

다음 중 하나를 수행하십시오.

~/.aws/config 파일에 프로필을 생성하여 AIM 역할을 사용합니다. 자세한 내용은 ](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-role.html)AWS CLI에서 IAM 역할 사용[을 참조하십시오.

-또는-

IAM 역할을 맡으려면 다음 명령을 실행합니다.

  1. 다음 명령을 사용하여 역할의 ARN을 가져옵니다.

    aws iam list-roles --query "Roles[?RoleName == 'example-role'].[RoleName, Arn]"
  2. 이 명령은 IAM 역할을 나열하지만 역할 이름을 기준으로 출력을 필터링합니다. IAM 역할을 맡으려면 다음 명령을 실행합니다.

    aws sts assume-role --role-arn "arn:aws:iam::123456789012:role/example-role" --role-session-name AWSCLI-Session

이러한 명령은 여러 정보를 출력합니다. 자격 증명 블록 안에는 AccessKeyId, SecretAccessKeySessionToken이 필요합니다. 이 예시에서는 환경 변수 RoleAccessKeyID, RoleSecretKeyRoleSessionToken을 사용합니다. 만료 필드의 타임스탬프는 UTC 시간대를 기준으로 한다는 점에 유의하세요. 타임스탬프는 IAM 역할의 임시 보안 인증 정보가 만료되는 시기를 나타냅니다. 임시 보안 인증 정보가 만료된 경우 sts:AssumeRole API 직접 호출을 다시 호출해야 합니다.

참고: DurationSeconds 파라미터를 사용하여 IAM 역할의 임시 자격 증명에 대한 최대 세션 기간 만료 시간을 늘릴 수 있습니다.

환경 변수를 생성하여 IAM 역할을 수임하고 액세스 확인

  1. IAM 역할을 맡을 환경 변수 세 개를 생성합니다. 이러한 환경 변수에는 다음과 같은 출력이 포함됩니다.

    export AWS_ACCESS_KEY_ID=RoleAccessKeyID
    export AWS_SECRET_ACCESS_KEY=RoleSecretKey
    export AWS_SESSION_TOKEN=RoleSessionToken

    참고: Windows 시스템의 경우 이 명령에서 exportset으로 바꾸십시오.

  2. 다음 명령을 실행하여 해당 IAM 역할을 맡았는지 확인합니다.

    aws sts get-caller-identity

    example-role을 맡는 경우 이 AWS CLI 명령은 arn:aws:iam::123456789012:user/Bob 대신 arn:aws:sts::123456789012:assumed-role/example-role/AWSCLI-Session으로 ARN을 출력합니다.

  3. 다음 명령을 실행하여 Amazon RDS DB 인스턴스에 대한 읽기 전용 액세스와 EC2 인스턴스에 대한 액세스 권한이 없는 IAM 역할을 생성했는지 확인합니다.

    aws ec2 describe-instances --query "Reservations[*].Instances[*].[VpcId, InstanceId, ImageId, InstanceType]"
    aws rds describe-db-instances --query "DBInstances[*].[DBInstanceIdentifier, DBName, DBInstanceStatus, AvailabilityZone, DBInstanceClass]"

    aws ec2 describe-instances 명령은 액세스 거부 오류 메시지를 생성합니다. aws rds describe-db-instances 명령은 Amazon RDS DB 인스턴스를 반환합니다. 이렇게 하면 IAM 역할에 할당된 권한이 제대로 작동하는지 확인할 수 있습니다.

  4. IAM 사용자로 돌아가려면 다음과 같이 환경 변수를 제거합니다.

    unset AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY AWS_SESSION_TOKEN
    aws sts get-caller-identity

    unset 명령은 환경 변수를 제거하며 aws sts get-caller-identity 명령은 사용자가 IAM 사용자 Bob으로 돌아왔는지 확인합니다.

    참고: Windows 시스템의 경우 환경 변수를 빈 문자열로 설정하여 다음과 같이 내용을 지웁니다.

    SET AWS_ACCESS_KEY_ID=
    SET AWS_SECRET_ACCESS_KEY=
    SET AWS_SESSION_TOKEN=

관련 정보

역할 용어 및 개념

역할 생성

AWS 서비스에 대한 권한을 위임하는 역할 생성

댓글 없음