Amazon EC2 인스턴스에 역할 자격 증명이 아니라 IAM 사용자 자격 증명이 사용되는 이유는 무엇입니까?

2분 분량
0

Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스에 AWS Identity and Access Management(IAM) 역할을 연결했습니다. 하지만 Amazon EC2 인스턴스가 IAM 역할 대신 IAM 사용자를 사용해 API를 호출합니다.

간략한 설명

AWS 명령줄 인터페이스(AWS CLI)는 일련의 자격 증명 공급자를 사용하여 AWS 자격 증명을 순서대로 찾습니다. 사용되는 자격 증명은 자격 증명 공급자의 순서 및 우선순위에 좌우됩니다. 자세한 내용은 구성 설정 및 우선순위를 참조하세요.

해결 방법

지침을 따라 IAM 사용자 ID 및 IAM 사용자 자격 증명이 저장된 위치를 찾습니다. 그런 다음 AWS CLI를 사용하여 IAM 자격 증명을 관리하고 우선순위가 높은 설정을 폐기합니다.

참고: AWS CLI 명령을 실행할 때 오류가 발생하는 경우 최신 버전의 AWS CLI를 사용하고 있는지 확인하세요.

IAM 사용자 ID를 찾아 IAM 사용자 자격 증명 위치 가져오기

1.    다음과 같은 get-caller-identity 명령을 실행하여 API 호출을 하는 데 쓰이는 IAM 자격 증명이 무엇인지 확인합니다.

aws sts get-caller-identity

그러면 다음과 유사한 출력이 나타납니다.

{

    "Account": "123456789012", 

    "UserId": "AIDACKCEVSQ6C2EXAMPLE", 

    "Arn": "arn:aws:iam::123456789012:user/ExampleIAMuser"

}

이 예제 출력에서는 ExampleIAMuser의 IAM 자격 증명이 사용되었습니다.

2.    --debug 옵션을 사용하여 사용자 자격 증명의 위치를 확인합니다. 대략 다음과 비슷하게 나타납니다.

aws s3 ls --debug
2020-03-28 02:04:29,478 - MainThread - botocore.credentials - INFO - Found credentials in shared credentials file: ~/.aws/credentials

이 예제 출력에서는 IAM 사용자 자격 증명은 .aws/credentials 파일에 저장되었습니다. 이러한 자격 증명은 역할 자격 증명보다 우선순위가 높기 때문에 API 호출에 IAM 사용자 자격 증명이 사용됩니다.

AWS CLI를 사용하여 IAM 자격 증명을 관리하고 우선순위가 높은 설정을 폐기합니다.

다음과 같은 모범 사례를 사용합니다.

  • AWS CLI에서는--profile 옵션을 사용하지 마세요.
  • 모든 환경 변수를 설정 해제하거나 제거합니다.
  • configure 명령의 경우 .aws/credentials 폴더에 있는 자격 증명 파일을 삭제합니다. 그런 다음 .aws 폴더를 삭제하여 인스턴스 프로파일 기본 자격 증명을 설정합니다.
  • .aws/config 파일에 설정된 프로필의 경우 해당 프로필을 삭제합니다. 그런 다음 .aws 폴더를 삭제합니다.

IAM 자격 증명보다 우선하는 구성 설정 우선순위를 제거한 뒤에 get-caller-identity 명령을 실행하여 다음과 유사한 IAM 역할 자격 증명을 확인합니다.

aws sts get-caller-identity

{
    "UserId": "AROACKCEVSQ6C2EXAMPLE:i-01773d4a8ed647342",
    "Account": "123456789012",
    "Arn": "arn:aws:sts::123456789012:assumed-role/ExampleInstanceRole/i-01773d4a8ed647342"
}

이 예제 출력에서는 IAM 역할 ExampleInstanceRole의 IAM 자격 증명을 사용하였습니다.


AWS 공식
AWS 공식업데이트됨 2년 전