課題
日常の仕事でこのようなシーンがございますでしょうか。
Aさんは開発者です。Aさんはローカルでコードをテストする際に、AWS S3にアクセスしないといけないです。
AWSのaws_access_key_idとaws_secret_access_keyが必要です。
以下の方法でどっちが一番良い方法でしょうか。
- Aさんにaws_access_key_idとaws_secret_access_keyを共有して、他の開発者に共有しないように要求する。
- Aさんにaws_access_key_idとaws_secret_access_keyを共有して、90日単位でローテーションします。
- 開発者にAWS Security Token Serviceで作成した一時的な認証情報を使用させる。
AWSのお勧めとしては3番です。
概要
開発者にAWS Security Token Serviceで作成した一時的な認証情報を使用させる方法を説明させて戴きます。
手順
1.開発者のIAM ユーザーを作成
ユーザーのアクセスキーを確認
2.アクセスキーをローカルに保存
3.S3にアクセスしてみます
新作したユーザーに権限を付与しなかったので、以下のエラーが表示されます。
youyonghua@youyonghuadeMacBook-Pro .aws % aws s3 ls --profile A_developer
An error occurred (AccessDenied) when calling the ListBuckets operation: Access Denied
youyonghua@youyonghuadeMacBook-Pro .aws %
4.IAMに全てIAMユーザーが使用できるS3 read-onlyロールを作成
5.IAM ユーザーにSTSポリシーを付与
6.インラインポリシーの追加
7.一時的な認証情報を発行
以上のコマンドを参照して、一時的な認証情報を発行します。
youyonghua@youyonghuadeMacBook-Pro .aws % aws sts assume-role --role-arn arn:aws:iam::xxxxxxx:role/S3-ReadOnly-AssumeRole --role-session-name s3-access-sts --profile A_developer
{
"Credentials": {
"AccessKeyId": "ASIA2DGDM6AKUN3X66VS",
"SecretAccessKey": "CK1vU2n5OgauBBV8jF3LelFk/UMvyehMtiDUUQnL",
"SessionToken": "FwoGZXIvYXdzEEIaDIzNWs/hi/3mC3VzeSKxAWENV/gaAB/uIi/BZ7/9qOB42rd5br/Awb2CqsKrvCy3Sf7Mdwr2T+AQdbNfDQxfBwZ6IfWFNHohStTb4WVU4/QV/5Fz43IEOQ1QK9x3tsDKcpBepCFzbYzhfOERMzzJuXhdTJmTVIwhrAZf/smoe+sJguvT+nVDG5oAwnfI8r18VAZZGwb1kO+JuyiUVf2bqGKIm2vtypcD+AKTBfVxdgaWACQ48g8TXe25LaozljdjTSj2l9eUBjItb4SnO+/6Mq0UH3kkoXzx2K900FL1spoG/nGFRWRTPPoiJAfgRvgwUtHOvMOq",
"Expiration": "2022-05-31T09:04:06+00:00"
},
"AssumedRoleUser": {
"AssumedRoleId": "AROA2DGDM6AK3P2V5WOQU:s3-access-sts",
"Arn": "arn:aws:sts::694047010837:assumed-role/S3-ReadOnly-AssumeRole/s3-access-sts"
}
}
8.一時的な認証情報をローカルに保存
上に作成した一時的な認証情報をcredentialsに保存する
[A_developer_sts]
aws_access_key_id = ASIA2DGDM6AKUN3X66VS
aws_secret_access_key = CK1vU2n5OgauBBV8jF3LelFk/UMvyehMtiDUUQnL
aws_session_token = FwoGZXIvYXdzEEIaDIzNWs/hi/3mC3VzeSKxAWENV/gaAB/uIi/BZ7/9qOB42rd5br/Awb2CqsKrvCy3Sf7Mdwr2T+AQdbNfDQxfBwZ6IfWFNHohStTb4WVU4/QV/5Fz43IEOQ1QK9x3tsDKcpBepCFzbYzhfOERMzzJuXhdTJmTVIwhrAZf/smoe+sJguvT+nVDG5oAwnfI8r18VAZZGwb1kO+JuyiUVf2bqGKIm2vtypcD+AKTBfVxdgaWACQ48g8
TXe25LaozljdjTSj2l9eUBjItb4SnO+/6Mq0UH3kkoXzx2K900FL1spoG/nGFRWRTPPoiJAfgRvgwUtHOvMOq
9.動作確認
一時的な認証情報でs3のパケット一覧を取得できました。
youyonghua@youyonghuadeMacBook-Pro .aws % aws s3 ls --profile A_developer_sts
2021-11-14 15:20:46 codepipeline-ap-northeast-1-123238800263
youyonghua@youyonghuadeMacBook-Pro .aws %