AWSコマンドラインツールの認証情報をテストする方法


149

awsユーティリティに渡すことができるコマンド/サブコマンドはありますか。1)~/.aws/credentialsファイル内の資格情報が有効であることを確認し、2)資格情報がどのユーザーに属するかを示すことができますか?ユーザーがIAMまたは特定のサービスへのアクセス許可を持っていることを想定していない一般的なものを探しています。

この使用例は、資格情報が適切であることを確認するためのデプロイ時の健全性チェックです。理想的には、無効な資格情報がある場合に戻り値をチェックしてデプロイを中止する方法がいくつかあります。


3
これはserverfault.comでよりよく尋ねられると私は提案するかもしれませんか?Stack Overflowは、プログラミングに関する質問専用です。
Tripp Kinetics

4
@TrippKineticsええ、私はどこに尋ねるべきかについてフェンスの中にいました。私の考えでは、問題の本質は、サーバー自体を管理するのではなく、プログラムでAPIにクエリを実行することでした。
smitelli 2015

回答:


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形式は資格情報のタイプによって異なりますが、多くの場合(人間の)ユーザーの名前が含まれます。

これは、標準のAWS CLIエラーコードを使用して、成功した場合は0、資格情報がない場合は255を返します。


5
これは素晴らしい答えですが、MFAを使用している場合は注意してください。より複雑です。MFAでは、作業資格情報(i)をMFAトークンと組み合わせて使用​​して、異なる一時作業資格情報(ii)を取得する必要があります。このソリューションでは、資格情報(i)または(ii)でも同じ結果が得られます。
Mark Chackerian 2017

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、およびユーザーIDを出力します。
Ville

54

ストレートな方法があります- aws iam get-userあなたが誰であるか(現在のIAMユーザー)についての詳細を伝える-ユーザーにiam特権がある場合

操作を実行するために必要なconfig / credがあるかどうかを示す--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 2015

7
ユーザーが自分で「ユーザーを取得」する権限がない可能性があります。:-/
Jason

はい、私はこのような状況にあります。AWSコンソールでは、ユーザーARNの横にN / Aと表示され、ホバーオーバーに「ユーザーarn:aws:iam:...:user / steveはリソースでiam:GetUserを実行する権限がありません:ユーザーsteve」
スティーブベネット
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.