[レポート] 最小特権の原則:AWS IAMポリシーとAccessAnalyzer #SEC324 #reinvent

2021.12.02

re:Invent 2021 で行われた「A least privilege journey: AWS IAM policies and Access Analyzer」セッションのレポートです

セッションはオンデマンドで公開されていますので、レポートを見て興味が出た場合はぜひご確認ください。

セッション概要

セッション名:A least privilege journey: AWS IAM policies and Access Analyzer

Are you looking for tips and tools for applying least privilege permissions for your users and workloads? Love demonstrations and useful examples? In this session, explore advanced skills to use on your journey to apply least privilege permissions in AWS Identity and Access Management (IAM) by granting the right access to the right identities under the right conditions. For each stage of the permissions lifecycle, learn how to look at IAM policy specifics and use IAM Access Analyzer to set, verify, and refine fine-grained permissions. Get a review of the foundations of permissions in AWS and dive into conditions, tags, and cross-account access.

スピーカー:Brigid Johnson

レポート

  • スピーカーは IAM Access Analyzer の GM
  • AWS で IAM の最小権限を設定するためのサービスやデモ、Tipsを紹介する


アジェンダ


AWS Identity overview

  • 誰がどのリソースにアクセスできるかを管理する
  • AWS の権限管理のために何を知っておく必要があるか


Permissions in AWS - The tools and how they work

  • アクセスコントロールには 2 つの要素がある
    • 誰がどのリソースにどのような条件でアクセスできるかポリシーを決定する(あなたの仕事)
    • サービス、ツールを使って実現する
  • 目標は最小特権の原則(PoLP)に従うこと
  • 開発者が新しいサービスを利用したいことへの素早い権限変更の対応と本番環境で常に危険なアクションを防ぐことへの対応のバランスを取る必要がある
  • IAM Policy Language の解説
  • IAM principal policies (ユーザ、グループ、ロール) と Resources policies (IAM ロールや S3 バケットポリシー等の各サービスのポリシー) がある

  • アクセス制限方法の紹介
    • SCP
    • パーミッションバウンダリー
    • VPC エンドポイント
    • ブロックパブリックアクセス
  • AWS がどうやってポリシーを評価するか
    • 全てのアクセスは始めは DENY から始まり、評価される

  • ユーザに代わって AWS サービスに実行させる場合に、AWS サービスへ権限を付与する方法の種類
    • SLR の権限はあらかじめ定義されており、変更できない
      • SLR を利用するサービスを利用する場合は、SLR を作成する際に必要なアクセス権をすべての人に許可しておくのがよい
    • Service Role は Permission をカスタマイズできる
      • おすすめはトラストポリシーでサービスを指定し、さらにそれを分割して利用すること
      • アクセスの監視が難しくなるので、あまり多くのサービスを一緒にトラストにしないほうがよい
    • Request Permissions は AWS サービスが Requester が生成した一時的なクレデンシャルを利用する


Permissions lifecycle to get to the right permissions

  • Set → Verify → Refine のサイクルを回す


Setting Permissions

  • AWS マネージドルールは始めに使うのに適している
    • その後、権限を絞っていく
  • IAM Access Analyzer のポリシー生成を利用することで最小権限をより簡単に実現できる
  • 【IAM Access Analyzer のポリシー生成のデモ】
  • Conditions の記載の Deep Dive
    • multiple conditions の判定条件(AND なのか OR なのか)

  • multi-value 時の動作
    • ForAllValue では、ポリシーの条件に対して、設定値がサブセット(部分集合)であるかを判定
    • 値なしはサブセットとなる
    • ForAnyValue では、ポリシーの条件のいずれかが含まれているかどうかを判定

  • 他にも Conditions について
    • Conditions の注目すべき条件キーの紹介
    • "Effect" : "DENY" 指定時の Conditions の使い方の紹介


Verifying permissions

  • クロスアカウントアクセスの Deep Dive
    • パブリック公開とクロスアカウントアクセスの制限方法

  • IAM Access Analyzer でクロスアカウントアクセスの許可を検出できる
  • 【IAM Access Analyzer の Findings をレビューするデモ】
  • PassRole Permission を制限する方法の紹介


Refining Permissions

  • 使用されていない権限を識別して対処する必要がある
  • 【Access Adviser を用いて未使用権限を削除し、ポリシーをアップデートするデモ】


Permissions Challenges

  • これまでの知識を問う問題出題

まとめ

IAM で最小特権の原則(PoLP)を実現するための情報がてんこ盛りのセッションでした。所々で紹介される Pro tips が役立つものが多く、IAM を設計する際の参考となります。

デモやレポートに記載できていない Pro tips もありますので、セッションを見ていただくことで、IAM への理解が深まると思います。