AWS Command Line Tools의 자격 증명을 테스트하는 방법


149

aws유틸리티에 전달할 수있는 명령 / 하위 명령이 있습니까? 1) ~/.aws/credentials파일 의 자격 증명 이 유효한지 확인하고, 2) 자격 증명이 속하는 사용자를 나타냅니다. 사용자에게 IAM 또는 특정 서비스에 대한 권한이 있다고 가정하지 않는 일반적인 것을 찾고 있습니다.

유스 케이스는 신임 정보가 올바른지 확인하기위한 배치 시간 상태 점검입니다. 유효하지 않은 신임 정보가있는 경우 리턴 값을 확인하고 배치를 중단하는 방법이 이상적입니다.


3
serverfault.com 에서 더 나은 요청을 제안 할 수 있습니까? 스택 오버플로는 특히 프로그래밍 질문에 사용됩니다.
Tripp Kinetics

4
@TrippKinetics 그래, 어디서 물어 볼까 울타리에 있었어. 내 생각에 문제의 핵심은 서버 자체를 관리하는 것이 아니라 프로그래밍 방식으로 API를 쿼리하는 것입니다.
smitelli

답변:


219

GetCallerIdentity를 사용하십시오 .
aws sts get-caller-identity

다른 API / CLI 호출과 달리 IAM 권한에 관계없이 항상 작동합니다.

다음 형식으로 출력됩니다.

{
    "Account": "123456789012", 
    "UserId": "AR#####:#####", 
    "Arn": "arn:aws:sts::123456789012:assumed-role/role-name/role-session-name"
}

정확한 ARN 형식 은 자격 증명 유형에 따라 다르지만 종종 (인간) 사용자 이름이 포함됩니다.

성공시 0을 제공하고 자격 증명이 없으면 255를 제공 하는 표준 AWS CLI 오류 코드 를 사용합니다 .


5
이것은 훌륭한 답변이지만 MFA를 사용하는 경우 좀 더 복잡합니다. MFA를 사용하면 작업 자격 증명 (i)을 MFA 토큰과 결합하여 다른 작업 임시 자격 증명 (ii)을 사용해야하며이 솔루션을 사용하면 자격 증명 (i) 또는 (ii)에 대해 동일한 결과를 얻을 수 있습니다.
마크 카커 키안

3
@MarkChackerian 항상 그런 것은 아닙니다. Trek10의 정책을 사용하여 MFA를 시행하는 사용자를 만들었습니다 . MFA 세션이 활성화되지 않은 토큰으로 내가 실행하면, aws iam get-user --profile test-mfa내가 얻을 : An error occurred (AccessDenied) when calling the GetUser operation. 그러나 aws sts get-caller-identity --profile test-mfa(MFA 세션 토큰이 활성화되지 않은 것과 유사하게) test-mfa의 계정, ARN 및 UserId를 출력합니다.
Ville

54

aws iam get-user사용자에게 iam권한 이 있는 경우 사용자가 누구인지 (현재 IAM 사용자)에 대한 세부 정보를 알려주 는 직접적인 방법이 있습니다 .

작업을 수행하는 데 필요한 구성 / 크레드가 있는지 여부를 알려주 는 --dry-run플래그 를 지원하는 몇 가지 CLI 호출이 aws ec2 run-instances있습니다.

또한이 --auth-dry-run명령을 실제로 실행하지 않고, 명령에 필요한 권한이 있는지 여부하는 확인합니다. 필요한 권한이 있으면 명령이 DryRunOperation을 반환합니다. 그렇지 않으면 UnauthorizedOperation을 반환합니다. [ AWS 설명서에서-공통 옵션 ]

누가 어떤 키가 할당되었는지 확인하기 위해 관리 콘솔에서 IAM 액세스 키를 나열 할 수 있습니다.

어떤 사용자 / 역할이 어떤 권한을 가지고 있는지 이해하는 가장 좋은 방법은 IAM Policy Simulator를 사용하는 것입니다 .


16
아이러니하게도, 테스트를 실행 한 사용자에게는 AccessDenied오류가 발생했습니다. 여기에는 전체 arn:aws:iam::123...890:user/somebody문자열이 오류 출력의 일부로 포함되었습니다 .
smitelli

7
완전히 가능한 사용자는 자신을 '사용자에게 가져 오기'권한이 없습니다. :-/
Jason

예, 이런 상황이 있습니다. User ARN 옆에있는 AWS 콘솔에서 해당 사항 없음을 표시하고 가리키면 "User arn : aws : iam : ... : user / steve는 자원 : user steve에서 iam : GetUser를 수행 할 권한이 없습니다"
Steve Bennett
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.