EC2インスタンスプロファイルによってAssumeRoleされた認証情報の有効期限は短くできるのでしょうか
2021/08/20
「EC2インスタンスプロファイルによってAssumeRoleされた認証情報の有効期限を短くする」方法がわからなかったので、CLIで無理やり実験してみました。
目次
結論
EC2インスタンスプロファイルに頼るのではなく、sts:AssumeRoleをCLIやSDKで実行して有効期限を指定してあげたほうがいいですね。
IAMロール
S3:ListAllMyBucketsのみ許可したIAMロールを作ってEC2インスタンスに設定しました。
あとセッションマネージャー使いたいのでAWS管理ポリシーのAmazonSSMManagedInstanceCoreはアタッチしてます。
|
1 2 3 4 5 6 7 8 9 10 11 |
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:ListAllMyBuckets", "Resource": "*" } ] } |
EC2メタデータから取得
|
1 2 |
$ curl http://169.254.169.254/latest/meta-data/iam/security-credentials/S3LSforEC2 |
EC2インスタンスにセッションマネージャーで接続して、メタデータから認証情報を取得しました。
|
1 2 3 4 |
export AWS_ACCESS_KEY_ID= export AWS_SECRET_ACCESS_KEY= export AWS_SESSION_TOKEN= |
取得した認証情報をローカルのmacOSのターミナルで環境変数に設定しました。
|
1 2 3 4 5 6 7 |
$ aws sts get-caller-identity { "UserId": "AROARFDUEEVTDCNWI5K3W:i-092e5563d3b1e27a9", "Account": "123456789012", "Arn": "arn:aws:sts::123456789012:assumed-role/S3LSforEC2/i-092e5563d3b1e27a9" } |
sts get-caller-identityコマンドで確認してみるとIAMロールにたいしてEC2インスタンスプロファイルが取得したセッションの認証になっていることがわかりました。
|
1 2 |
$ aws s3 ls |
s3 lsコマンドで該当のバケット一覧を確認しました。
EC2からIAMロールをデタッチしてみる
CloudShellから以下 CLIでAssociationIdを確認しました。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
$ aws ec2 describe-iam-instance-profile-associations { "IamInstanceProfileAssociations": [ { "AssociationId": "iip-assoc-0daa74c36a84893ac", "InstanceId": "i-092e5563d3b1e27a9", "IamInstanceProfile": { "Arn": "arn:aws:iam::123456789012:instance-profile/S3LSforEC2", "Id": "AIPARFDUEEVTKCUPD6M4M" }, "State": "associated" } ] } |
そのままCloudShellからIAMロールのEC2との関連付けをデタッチしてみました。
|
1 2 3 |
$ aws ec2 disassociate-iam-instance-profile \ --association-id iip-assoc-0daa74c36a84893ac |
EC2との関連付けをデタッチしたあとに認証はまだ有効なのか?
有効です。
そのまま10分ぐらい経過しても aws s3 lsでバケット一覧は取得できました。
関連付けがなくなるだけで認証情報が無効化されたわけではないのですね。
セッション無効化しないといけないのか?
マネジメントコンソールの[アクティブなセッション無効化]を実行すると以下のインラインポリシーがアタッチされます。
[policy creation time]には無効化を実行した時間が入ります。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "*" ], "Resource": [ "*" ], "Condition": { "DateLessThan": { "aws:TokenIssueTime": "[policy creation time]" } } } ] } |
無効化してからmacOSのターミナルで試してみます。
|
1 2 3 |
$ aws s3 ls An error occurred (AccessDenied) when calling the ListBuckets operation: Access Denied |
aws:TokenIssueTimeが指定時間よりも過去になる条件が追加されたので拒否されました。
そりゃそうですね。
まとめ
- 無効化するためには、条件つきのインラインポリシーを追加する。
- “aws:TokenIssueTime”がインラインポリシーよりも後の認証情報を作成するために、IAMプロファイルインスタンスをdisassociateして、associateする。
って、こんなことするのであれば、sts:AssumeRoleで有効期限を指定するのが普通のやりかたですね。
EC2インスタンスプロファイルのローテーション期間を指定できるのなら嬉しいですが。
最後までお読みいただきましてありがとうございました!
「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル 改訂第2版」という本を書きました。
「AWS認定資格試験テキスト AWS認定クラウドプラクティショナー 改訂第3版」という本を書きました。
「ポケットスタディ AWS認定 デベロッパーアソシエイト [DVA-C02対応] 」という本を書きました。
「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。
「AWSではじめるLinux入門ガイド」という本を書きました。
開発ベンダー5年、ユーザ企業システム部門通算9年、ITインストラクター5年目でプロトタイプビルダーもやりだしたSoftware Engineerです。
質問はコメントかSNSなどからお気軽にどうぞ。
出来る限りなるべく答えます。
このブログの内容/発言の一切は個人の見解であり、所属する組織とは関係ありません。
このブログは経験したことなどの共有を目的としており、手順や結果などを保証するものではありません。
ご参考にされる際は、読者様自身のご判断にてご対応をお願いいたします。
また、勉強会やイベントのレポートは自分が気になったことをメモしたり、聞いて思ったことを書いていますので、登壇者の意見や発表内容ではありません。
ad
ad
関連記事
-
-
AWS Organizationsでタグポリシーを設定しようとしました
Organizationsで[タグポリシーを有効にする]ボタンを押下しました。 …
-
-
Amazon SageMaker Canvas Immersion Dayワークショップのエンドツーエンド機械学習の記録
Amazon SageMaker Canvas Immersion Dayという …
-
-
「Fin-JAWS 第14回 Fin人類育成計画」で話させていただきました!
「Fin-JAWS 第14回 Fin人類育成計画」で話させていただきました。 久 …
-
-
S3イベントのAWS Lambdaのテスト設定
S3イベントのLambda関数でよく使うのはこんなテスト設定です。 なので覚書で …
-
-
Amazon Linux 2023、T4Gインスタンス、PHP8にWordPressを移行しました
ブログをAmazon Linux 2からAmazon Linux 2023に移行 …
-
-
AWSアカウント内のすべてのS3バケットを削除するLambda(Python)
やりたいこと 特定アカウント内のS3バケットを全部削除したいです。 バケット内の …
-
-
EKS「現在の IAM プリンシパルは、このクラスター上の Kubernetes オブジェクトにアクセスできません」
マネジメントコンソールでクラスターのオブジェクトを見ようと、リソースの名前空間や …
-
-
ヤマムギ vol.8 (AWS)EC2でLinuxサーバー構築ハンズオン 手順
ヤマムギとは from Mitsuhiro Yamashita 「AWSではじめ …
-
-
AWSのAmazon LinuxにGitマスターサーバをインストールしてRedmineリポジトリブラウザで見る
Amazon LinuxにGitをインストールする Gitをインストールして自動 …
-
-
VPC新コンソールの日本語UIでルートテーブル編集時のエラー(2021/6/10)が発生したのでフィードバックを送った
VPCの新コンソールがリリースされていたので使って作業してましたところ、こんなエ …
