最近お仕事でGoを書く機会がちょこちょこありまして、なかなか楽しいです。Webアプリではなく小物ツールをつくっております。プライベートでは、Vue3とFlutterを引き続きやっとります。こちらも楽しい。コミュニティのメンターさんたちには頭がさがります。感謝感謝です。
職場では、クラウドネイティブ部とスマホアプリ部という部活のようなもんに入ってます。クラウドネイティブではGCPをやりたかったのですが、まずはAWSをやってくれ、といわれ、AWSのお勉強を今年の4月からゆるーくはじめました。
先月くらいまで社内ブログに勉強内容を書いていたのですが、だいぶかき散らかしたので、今回は久々にマイブログでアウトプットですです。
今年の9月から、JAWS-UG CLI専門支部の勉強会に入り浸っておるのですが、ここの勉強会はハンズオン資料ががっつりしていて、トークの中で繰り広げられる小ネタはとても勉強になります。
今回は JAWS-UG CLI専門支部 で、基礎中の基礎・ 重要中の超重要 、IAMについて学んだことを箇条書きで書いていきます。
事前にこれを読んでいたのですが、良い感じで復習になりました。
AWSアカウント
- メールアドレスに紐付いたrootアカウント
- なんでもできる全能の神様
- 初期設定が完了したら封印すべし
IAM - Identity and Access Management
- AWSのアクセス管理システム
- 権限を分離・制約をつけるために利用する
- AWSアカウント(root)の下にグループやユーザー、ロールなどをつくって使います
- ポリシーバージョン 2012年10月
- AWS APIを制御できる(300近くのサービスがある)
AWSのAPI
- AWSの全サービスはAPIでも提供されている → というか、AWS API の操作はマネージドコンソールで隠蔽化されている。みんなが使いやすいように!
- AWSを理解するには、AWS API を理解しよう
AWSを利用する人
APIを使ってAWSリソースを呼び出す・操作するパターンは3つ
- 利用者(IAMユーザーを使う)
- 外部リソース(IAMユーザーを使う)
- AWSリソース
図解:
IAM戦略
防御
- IAMユーザーの数だけリスクがある
- なるべくIAMユーザーを発行しない
- いかにクレデンシャルをぬかれないようにするか
権限
- オペミスを減らす(権限は強すぎす広すぎず)
- クレデンシャルがぬかれても被害を小さくする(権限をおさえる)
防御戦略
- IAMユーザーは外部リソースの利用にはMFAでの保護がマスト
- 極力IAMロールをつかう
- EC2で作業する場合、EC2の中でクレデンシャルでIAMの権限をを使うのではなく、ひとり1台ロールをつけたEC2をたちあげて利用するのが望ましい(クレデンシャルが不要になる)→ IAMユーザーの権限は利用しない
EC2やCloud9 → IAMロール → IAMポリシー → AWSリソース
Cloud9を利用する
Cloud9から起動するEC2にロールを付与してつかうと良い。Cloud9のTemporaryCredentialsが有効だとIAMロールをまわりが制限される
- EC2で作業する場合、EC2の中でクレデンシャルでIAMの権限をを使うのではなく、ひとり1台ロールをつけたEC2をたちあげて利用するのが望ましい(クレデンシャルが不要になる)→ IAMユーザーの権限は利用しない
- ユーザーは分割して使用する(権限を分散)
- CloudTrailをつかうとどのクレデンシャルが盗まれたか追跡することができる
最小権限の原則
- ポリシーは使い捨て(ライフサイクルマネジメント)
- 用途にあわせ作成・破棄する。バージョン更新はしない
- リソースやグループのライフサイクルにあわせて作成・破棄する(たとえば、バケットを作成するときにポリシーも作成し、バケットを廃棄するときにポリシーも破棄するする)
- 使う側からだけでなく、使われる側からもポリシーを考える
- IAMポリシーはひとつの対象に10ポリシーアタッチできるので、小さなポリシーを組み合わせて適用すると良い
クレデンシャルの保護
- MFAで保護する
- ふたつ作れる
- 定期的に更新する
最小権限はは5W1Hで考える
以下を明確にする
- Who 誰に
- Where どのリソース
- Why なぜ(意図)→ * を使わない
- What 何をさせたい(アクション)→ * を使わない
- When 時間帯でポリシーのアタッチ・デタッチを検討
リソースドリブンで作成する
- マネージドポリシーはなるべく使わない
- リソース作成と同時に、ReadOnlyとReadWriteポリシーを作成する
ハンズオンメモ
ハンズオンに参加したときのメモ。
- ユーザープロファイル → パスワードを登録?(コンソールにログインするために必要なパスワード)
- APIアクセスキー → IAMアクセスキー(1ユーザー2つまで作成できる)
- 設定値の確認 → 手順書全体の確認値
- 処理の実行の中でのShell変数は、その後のコマンドに必要なShell変数を確認している
- ${home}/.aws/credentials にクレデンシャルが登録される
- ${home}/.aws/config 設定情報