S3の特定のバケットおよびキーのファイルの更新のみ可能なIAMユーザー(コンソールアクセスのみ)を作成してみた
こんにちは、CX事業本部の若槻です。
今回は、S3の特定のバケットおよびキー(プレフィックスおよびファイル名)のファイルの更新のみ可能なIAMユーザー(コンソールアクセスのみ)を作成してみました。
概要
本記事では次の手順を紹介します。
- 管理者による操作
- IAMユーザーの作成
- ユーザーによる操作
- AWSコンソールからサインインしてS3にアクセスし、特定のバケット、プレフィックス(フォルダ)にある特定のファイルの更新を行う
管理者による操作
IAMユーザーの作成
my-bucket
というS3バケット内のfolder1
というフォルダ配下のdata.csv
という名前のファイルの更新のみ可能なIAMユーザーを作成します。
まず、IAMユーザーにアタッチするポリシーをを定義したファイルを作成します。
% touch policy.json
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowStatement1", "Action": [ "s3:ListAllMyBuckets", "s3:GetBucketLocation" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::*" ] }, { "Sid": "AllowStatement2", "Action": [ "s3:ListBucket" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::my-bucket" ], "Condition": { "StringEquals": { "s3:prefix": [ "", "folder1" ] } } }, { "Sid": "AllowStatement3", "Action": [ "s3:ListBucket" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::my-bucket" ], "Condition": { "StringLike": { "s3:prefix": [ "folder1/*" ] } } }, { "Sid": "AllowStatement4", "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": [ "arn:aws:s3:::my-bucket/folder1/data.csv" ] } ] }
IAMユーザーを作成します。
% aws iam create-user --user-name folder1-data-user
IAMユーザーにインラインポリシーをアタッチします。
% aws iam put-user-policy --user-name folder1-data-user --policy-name folder1-data-policy --policy-document file://policy.json
IAMユーザーのログインプロファイルを作成します。
% aws iam create-login-profile --user-name folder1-data-user --password $password --password-reset-required
ユーザーへの情報通知
次の情報をユーザーへ通知します。
- コンソールのサインインURL:
https://<Account ID>.signin.aws.amazon.com/console
- ユーザー名:
folder1-data-user
- パスワード:
$password
ユーザーによる操作
IAMユーザーを使用してS3上のファイルを更新する
通知されたサインインURLhttps://<Account ID>.signin.aws.amazon.com/console
にアクセスします。
サインイン画面が開くので、通知されたユーザー名とパスワードを入力して[サインイン]をクリックします。
パスワード変更画面が開くので、古いパスワードと新しいパスワードを指定して[パスワード変更の確認]をクリックします。
サインインできました。[サービス]を開きます。
サービス一覧から[S3]を選択します。
バケット一覧が表示されるので、目的のバケットをクリックして開きます。
フォルダ一覧が表示されるので、目的のフォルダをクリックして開きます。
フォルダの内容が表示されます。[アップロード]をクリックします。
[ファイルを追加]をクリックします。
ローカルにある目的のファイルを開きます。
アップロード対象の一覧に開いたファイルが追加されます。[アップロード]をクリックします。
[アップロードに成功しました]と表示されたらアップロードは成功です。
同名のファイルが既にフォルダ内にアップロードされている場合でも、アップロードは可能です。
許可されていない操作を試してみる
未許可のバケットに対する操作
ポリシーで許可されていないバケットをバケット一覧でクリックして開きます。
バケットに対するすべての操作が実行不可となっています。
未許可のフォルダに対する操作
ポリシーで許可されているバケット内で、未許可のフォルダをクリックして開きます。
フォルダに対するすべての操作が実行不可となっています。
フォルダの作成
ポリシーで許可されているフォルダ内でのフォルダ作成は実行不可となっています。
ファイルのダウンロード
ポリシーで許可されているファイルのダウンロードを試してみます。
ダウンロードが拒否されました。
未許可のファイル名のファイルのアップロード
ポリシーで許可されているフォルダへ、未許可のファイル名のファイルをアップロードは拒否されました。
おわりに
S3の特定キー(プレフィックスおよびファイル名)のファイルの更新のみ可能なIAMユーザー(コンソールアクセスのみ)を作成してみました。
ワーカーユーザーに定期的なS3へのファイルアップロードをお願いしたい時などに便利ですね。
参考
以上