こんにちは。ガジュマル育ててる人です。
今回から全二回でAWS Security Token Service (AWS STS)を使用し、一時的な認証をもつユーザーを発行してそのユーザーによってS3の操作をしてみようと思います!
実際はアプリなどに組み合わせて、一時的な認証を与えたユーザーからS3バケットへオブジェクトをアップロードや削除するといった使い方があるようですね。
認証は一時的なものなので、万が一、ユーザー情報が漏れたとしても一定期間以降使用不可になるものです。
今回は前編ということで、AWSのコンソールからSTSでユーザーを発行する下準備までやっていきます。
目次
①AWSコンソールでSTSの発行を許可する
AWSの公式ドキュメントに従ってAWSコンソールよりリージョンごとにSTSステータスがアクティブになっているか確認する。アクティブになっていない場合は、アクティブしておく。
今回は東京リージョンで実施するためすでにアクティブ済み。
②操作するS3バケットの作成
操作するS3バケットを作成します。今回は[s3-fs-example-bucket]という名前のS3バケットを作成しました。
あとはデフォルト設定で作成してしまいます。
③IAMよりSTSを発行するユーザーを発行する。
STSを呼び出すためのIAMユーザーを発行する。
今回はユーザー名[sts-s3-upload-user]にて作成
このユーザーには⑤にて再度設定を行うが、ここでは作成のみを行う
④S3を操作するためのIAMロールを準備する。
実際にSTSにて発行されるユーザーに付与したいIAMロールを準備していきます。
今回は、対象のS3バケットの中身の確認とアップロードする権限を付与していきます。
それではAWSコンソールからIAMのサービスからロールの画面に移動して
[ロールを作成]をクリック
AWSのサービスを選択し、他の AWS のサービスのユースケースに[S3]を入力
ポリシーを作成をクリック
JSONで下記を入力
※[バケット名]はそれぞれのS3バケット名を入力してください
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:ListBucket"
],
"Resource": "arn:aws:s3:::[バケット名]/*"
}
]
}
ポリシーの名前を設定し、[ポリシーを作成]をクリック
IAMロールの画面にてポリシーのリロードを行い、先ほど作成したロールを選択し、次へをクリック
そのまま、作成したいロール名を入力して作成する。
今回は[sts-s3-example-role]として作成した。
作成したIAMロールを選択し、信頼ポリシーを編集をクリック
下記を入力してポリシーを更新をクリック
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::[AWSアカウントID]:user/[③で作成したIAMユーザー名]"
},
"Action": "sts:AssumeRole"
}
]
}
⑤IAMユーザーに追加設定をする
ここまでくれば、もうひと踏ん張りです。頑張りましょう。
③で作成したユーザーにインラインポリシーを追加します。
下記をJSON形式で入力
今回だと④で作成したIAMロール名はsts-s3-example-roleが入ります。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "sts:AssumeRole",
"Resource": "arn:aws:iam::[AWSアカウントID]:role/[④で作成したIAMロール名]" }
]
}
最後にインラインポリシー名を入力して、ポリシーを作成
次回予告
少し、ややこしい手順になりましたが、今回のもので準備編は終わりです。
次回は準備したユーザーやSTSアカウントを利用して実際にS3を操作するところをお見せします!
もし、個人的に書きたくなったら解説回も作ろうと思います
それではまたお会いしましょう!