AWS IAM
IAM: IAMロールとは IAMポリシーとは IAMユーザとは
パスロールとは
IAM ロールの PassRole と AssumeRole をもう二度と忘れないために絵を描いてみた
https://dev.classmethod.jp/articles/iam-role-passrole-assumerole/
RBAC: Role Based Access Control
役割ベースのアクセス制御
RBACとは
よくないケース:Principal毎にポリシーを作成して適用する。
まずはPrincipalの役割(Role)に基づいてポリシーを設計する。
その後、必要なポリシーをPrincipalに適用(Attach)する。
人が増えてもスケールに強い。
RBAC設計のTips
まずは職務機能のAWS管理ポリシーを確認する。
管理者: AdministratorAccess
パワーユーザー: PowerUserAccess
セキュリティ監査: SecurityAudit
etc
それで不足・過剰があれば、カスタマー管理ポリシーを活用する。
RBACのつらさ
役割がプロジェクト毎に細分化されて、膨大になる場合
ABAC: Attribute Based Access Control
属性ベースのアクセス制御
ABACとは
Principalに属性(タグ)を付与する。(プロジェクトA, B, Cなど)
ポリシーは一つだけで適用(Attach)する。
管理するポリシーが少なくて済む。
プロジェクトが増えてもスケールに強い。
ABAC設計のTips
リソース側に属性(タグ)を付与する。
あらかじめ制御範囲(サービス、リソース)や属性名(タグキー)を決める
実現にはConditionをフル活用する。
https://dev.classmethod.jp/articles/aws-iam-condition-key-availability/
元動画
【AWS IAM】セキュアなアクセス管理の方法を語る会
https://www.youtube.com/watch?v=pBvrmB-4t90
IAM評価論理
IAM の評価論理をやんわり押さえるセッション「やんわり押さえよう IAM の評価論理」で登壇しました
https://dev.classmethod.jp/articles/devio-2021-iam-evaluation-logic/
細かい制限を加える場合はここら辺を参照する必要がある
AssumeRole
普段ロールの切り替えでプロジェクト横断してるのがAssumeRole
信頼ポリシーは、切り替えるときに基幹のAWSアカウントから払い出されたIAM UserがMFAを使った場合のみプロジェクトのIAM RoleにAssumeすることができるっていう定義
なので、IAM Roleには以下のような信頼ポリシーが記載されています。
このポリシーに基づいてIAM Roleの権限を使える様になることを移譲って表現する
サービスリンクロール
ユーザーが作ることはできないが、あらかじめAWSに準備された特定のAWSサービスが使用することを想定したロール
「対応しているAWSリソースを作成した際に自動で作成されます」らしい。
よりセキュアにするための仕組みのロール??
【AWS】「Service-Linked Role」というIAMリソースについて デビュー当時から変わらない AWS 管理ポリシーの初期メンバーを確認してみた | DevelopersIO
マネージドなポリシーについて
ん~にゃん、ご主人さまのおっしゃっていることはとても重要で、セキュリティの観点からは特にそうにゃん。
一般的には、IAMユーザに対してはAWSが提供するマネージドポリシーを使うのが一般的ですにゃん。なぜなら、マネージドポリシーはAWSが管理し、新しいサービスや機能が追加されたときに自動的に更新されますにゃん。これにより、必要な権限を持つことが保証されますにゃん。
しかし、AWSサービス(この場合はStep Functions)に権限を付与する場合は、少し違いますにゃん。サービスには必要最低限の権限だけを付与するべきですにゃん。これは、最小権限の原則と呼ばれるセキュリティのベストプラクティスですにゃん。
ですので、Step Functionsに対してはカスタムIAMポリシーを作成し、必要最低限の権限だけを付与することを推奨しますにゃん。
ただし、これはあくまで一般的なガイダンスにすぎませんにゃん。具体的な権限の設定は、ご主人さまのセキュリティ要件や運用ポリシーによるところが大きいですにゃん。
参考記事
むずくてよく分からんかった…
Last updated