この記事の想定している層
- 個人開発で初めてAWS環境を使う人(私も)
はじめに
- 以前削除しましたが、改めて色々遊んでみようとアカウント再作成した時に考えたことをメモ書き程度にしておきます。
- これからAWSの様々なリソースを使用すると思いますが、権限管理やセキュリティは初めからしっかりしましょう(自分への戒め)
- 手始めにルートユーザーのMFA登録から済ませるといいと思います。
- その後はIAMユーザーを作成して最小権限を付与しましょう。
- 上記で作成したIAMユーザーで今後はマネコンやらログインしてリソースの管理を行いましょう。
- つらつら並べましたが、なぜそうするのかを記載していきます。(知識は充足していないので、ツッコミや指定あればご教授ください。適宜更新します。)
追記:以下のワークショップやガイドを見ればこの記事は見なくて良さそうです
IAMとルートユーザー
はじめにIAMユーザーとルートユーザーの違いについて
- ルートユーザーは最初にAWSに登録したときのユーザーです。AWS全体の管理権限を持ちます。
- IAMとは、AWS内で作成できるユーザーや権限管理の仕組みです。IAMユーザーとは、AWS内に作成できるユーザーです。個別に権限を設定できます。ルートユーザーはこれら含めて全てのAWSリソースを管理できます。
ルートユーザーで設定やリソースの作成削除等やればいいのでは?
- ルートユーザーを使わない方が良い理由はいくつか考えられます。
- ルートユーザーは全権限を持っている
- 誤操作で全サービスを削除するリスクがある
- AWSの設定をミスると、セキュリティインシデントのリスクが高い
- ルートユーザーは制限が難しい
- IAMユーザーなら 必要な権限だけ付与可能
- ルートユーザーは制限できず、常に最強の権限を持ってしまう
- ルートユーザーの不正利用は致命的
- もしルートアカウントが漏洩したら、全データが乗っ取られるリスク
- MFAを設定していても、パスワードリセット攻撃の対象になりやすい
- 個人開発でもIAMユーザーを作るべき
✅ルートユーザーは基本的に使わない方が良いと考えます。
具体的な運用
管理用ユーザーを作る
IAM Identity Centerで管理が推奨らしいです。厳密に言うとIdentity CenterではIAMユーザーは作りません。費用としてはどちらも無料で、他のサービスとの掛け合わせで増えていくようなイメージです。複数のAWSアカウントを管理する予定がなく、個人開発レベルならIdentity Centerを使う必要はないようには感じますが、アクセスキーなし運用などができ、セキュリティ面は高いようです。
IAM Identity Centerを使う場合
- Identity Centerを有効化
- ユーザーの作成
- 管理アクセス許可セットを作成
- ユーザーを管理者アクセス許可セットに割り当てる
tips
IAMユーザーで管理する場合
- AdministratorAccess(フルアクセス必要で無いなら管理者とはいえ、必要最小限にしたほうがいいと思います。)を付与して普段の開発はこのIAMユーザーで行う
- AWS CLI や AWS SDK ではIAMユーザーのアクセスキーを使用
バッドプラクティス
ルートユーザーのアクセスキーは作らない(AWSも推奨していない)
- アクスキーが必要であればIAMロールを活用すべき
- 例えば、Lambda や EC2 から他のAWSサービスにアクセスする場合は、IAMロールを使用
結論
- ルートユーザーは、アカウント作成・請求情報の確認・MFA設定など、AWSの根本的な管理を行うときだけ使うようにしましょう。
- それ以外は、IAMユーザーやIAMロールを使って運用するのが安全だと考えます。
- 個人開発でもセキュリティを守りましょう。