私はIAMがわかっていない。
I am not friendly with IAM.
ということで実験しよう。
くろかわさんのIAM講座でなんとなくイメージはできてるぞよ。
1. IAMユーザの巻
- 1.1 ユーザAを作成し、S3のAll権限付与
- 1.2 ユーザBを作成し、S3の読み込み権限付与
- 1.3 ユーザAでログインしてS3バケット作成&アップロード
- 1.4 ユーザBでログインしてS3バケット作成できないこと&アップロードできないことを確認
1.1 ユーザAを作成し、S3のAll権限付与
まずはとりあえず ユーザAを作成してみよう。
tech-testA で作成。
次、付与する権限はAmazonS3FullAccessでGOGO
確認画面
できあがり
1.2 ユーザBを作成し、S3の読み込み権限付与
作り方はAと同じなので、記載は省略。
でけた結果。 AmazonS3ReadOnlyAccessのポリシーをアタッチ。
1.3 ユーザAでログインしてS3バケット作成&アップロード
ではーー、ユーザAでログインしてみるっす。AはS3のフルアクセス。
再試行しますか?とでて、S3の権限しか与えてないからだね。それにしても、なんかメッセージ荒いなw
1-4. ユーザBでログインしてS3バケット作成できないこと&アップロードできないことを確認
ユーザB(S3のreadonly権限のみ付与)でログインして、S3バケット作成じゃ。
作成ボタンを押すと、、Access Denied !で失敗! いい感じ!
先ほどユーザAで作ったS3バケットとアップロードしたファイルにアクセスはできる
アップロードボタンを押すと、、、、
ド派手にエラー!いい感じ!
2. IAMグループの巻
2-1.グループ1を作成し、S3のAll権限を付与
2-2.グループ2を作成し、S3の読み込み権限を付与
2-3.ユーザC,ユーザDを作成し、グループ1に配属
2-4.ユーザE,ユーザFを作成し、グループ2に配属
2-5. ユーザC,ユーザDがS3に書き込めることを確認
2-6. ユーザE、ユーザFがS3に書き込めないことを確認する。
2-1. グループ1を作成し、S3のAll権限を付与
ユーザグループのメニューを開いて、グループ1をつくる。
「個のユーザグループ」? どういう訳や。
2-2.グループ2を作成し、S3の読み込み権限を付与
2-3.ユーザC,ユーザDを作成し、グループ1に配属させる
ここで、アクセス許可の設定でさっき作った、グループ1に追加!
2-4.ユーザE,ユーザFを作成し、グループ2に配属
2-5. ユーザC,ユーザDがS3に書き込めることを確認
次はユーザDでS3バケット作成
2-6. ユーザE、ユーザFがS3に書き込めないことを確認する。
ではーユーザE,ユーザFやってみます。
E作成失敗。OKOK
ということで、IAMグループの検証終了。
3. EC2にロールをアタッチ
- 3-1 S3Full権限のロールを作成
- 3-2. EC2Aを作成し、3-1.で作成したロールをアタッチ
- 3-3. EC2AからS3バケットに書き込みできることを確認
3-1 S3Full権限のロールを作成
3-2. EC2Aを作成し、3-1.で作成したロールをアタッチ
EC2作成。インスタンスの詳細設定画面でIAMロールを3-1で作ったS3Full権限のロールをアタッチ。
3-3. EC2AからS3バケットに書き込みできることを確認
terminalこれでいけるのか? いってみよー
いけた。すげーaws。
とりあえず aws s3 ls
おおーーみれてる!!
適当なファイルを作成して、tech-test-a-bucketにアップロードしみてる。
おおおお!!!
S3のバケットポリシー (リソースベースポリシーの一種。たぶん)の巻
- 1.1 ユーザAで作成したバケットに、ユーザC(S3のFull権限を持っている)の全ての操作をDenyするバケットポリシーを作成
- 1.2 ユーザCで1.1で作成したバケットにアクセスする。
1.1 ユーザAで新規バケットを作成し、ユーザC(S3のFull権限を持っている)の全ての操作をDenyするバケットポリシーを作成
ユーザAでログインして、test-tech-a-backetを確認。
ここに、バケットポリシーを適用する(ポリシージェネレータで作った結果をはってます)
test-tech-a-backetに対し、tech-testCの全てのs3操作権限を剥奪する。
- 1.2 ユーザCで1.1で作成したバケットにアクセスする。
さらにバケットにはいってみると、無事、エラーでおこられてます。。
ということで、ざっと簡単なIAMの実験記録でした。
楽しくなってきたAWS!
この記事はAWS初学者を導く体系的な動画学習サービス
「AWS CloudTech」の課題カリキュラムで作成しました。
https://aws-cloud-tech.com