💨

AWS IAM基礎知識

2023/02/04に公開約3,200字

概要

私は都内でエンジニアとして働いている者です。。
TypeScriptを使用してフロント、バックエンド、インフラを開発しています。
職場ではAWSを使用しているのですが、私自身AWSの知識が乏しく仕事に影響があるので、学習した内容をメモがわりとしてこちらに記載しようと思います。

学習したサービス

・IAM

IAMとは?

■IAMの概要
AWSサービスを、安全に操作・実施するための認証・認可の仕組みのこと

■具体的に可能なことは?

  1. AWSアカウント内のユーザー作成
  2. AWSリソースへのアクセス権限を管理
  3. リソース間のアクセス権限を管理
  4. 一時的なアクセスを許可

■主要な用語

  • IAMポリシー
    • ユーザーなどへのアクセス権限を付与するための設定ドキュメント(JSON形式)
{
    "Version": "記述言語のバージョンを記載、基本は「2012-10-17」", 
    "id":"ポリシーの識別子(なくてもいい)"
    "Statement": [
        {
            "Sid": "Statement内の識別子",
            "Effect": "アクセスの許可・拒否の設定",
            "Principal":"適用するアカウント・ユーザ・ロールを指定"
            "Action": "AWSサービスへのアクセス詳細設定 ",
            "Resource": "アクションの設定対象となるリソース",
            "Condition": "ポリシー適用対象を絞るための追加条件(特定のタグやIDに限定など)"
        }
    ]
}
  • IAMユーザー
    • AWS上の利用者は、IAMユーザーという権限を付与されたエンティティとして設定される
  • IAMユーザーグループ
    • IAMユーザーをグループとしてまとめて権限を付与する仕組み
  • IAMロール
    • AWSリソースが別リソースに対するアクセス権限を付与する仕組み(例 :EC2 → S3)
    • 別のAWSアカウントのIAMユーザーにアクセス権限を委譲する際にも利用される

IAMユーザーについて

■ルートユーザー(正確にはIAMではない)
AWSアカウント作成時に作られるIDアカウント

■ルートユーザーのみしかできない作業

  • ルートユーザーの情報変更
  • IAMユーザーの課金情報へのアクセスに関する許可・拒否
  • 他のAWSアカウントへのRoute53のドメイン登録の移行
  • AWSサービス(サポート)のキャンセル
  • AWSアカウントの停止
  • コンソリデイテッドビリングの設定(一括請求のこと)
  • 脆弱性診断フォームの提出
  • 逆引きDNS申請

■管理者権限(IAMユーザー)
管理者権限の許可が付与されたIAMユーザー
IAMの操作権限まで付与されるが、ルートアカウントでしかできない権限は付与されない

■パワーユーザー
IAM以外の全てのAWSサービスにフルアクセス権限を有するIAMユーザー
IAMの操作権限はなし

IAMで使われる用語

  • IAMリソース

    • IAMで保存・管理されるユーザー、グループ、ロール、ポリシー、およびIDプロバイダー
  • IAMアイデンティティ

    • ユーザー、グループ、ロール
    • AWSで認証されてグループ化に使用されるIAMリソースオブジェクトのこと
  • IAMエンティティ

    • ユーザーおよびロール
    • AWSに認証されるIAMリソースオブジェクト
  • プリンシバル

    • ルートユーザー、IAMユーザー、IAMロールを使用する人またはアプリのこと
    • フェデレーティッドユーザーと引き受けたロールも含まれる

メモ

複数のポリシーを付与した場合、両方の許可範囲が権限となる

IAMポリシーについて

■IAM種類
IAMポリシーには種類が存在する

  • AWS管理ポリシー
    • AWSが作成および管理しているIAM管理ポリシー
  • カスタマー管理ポリシー
    • AWSアカウントで作成・管理する管理ポリシー  
      使いまわすことが可能(使用したいポリシーがない場合に自分で作成するポリシー)
  • インラインポリシー
    • 1つのプリンシバルエンティティに埋め込まれた固有ポリシー
      使いまわしができない、誤った相手にポリシーを割り当てないようにしている。

■ポリシー
ポリシーにも種類が存在する

  • ユーザーベースのポリシー
    • IAMエンティティにアタッチされているポリシー
      管理、インラインポリシーが該当
  • リソースベースのポリシー
    • AWSリソースにアタッチされるポリシー

■ポリシーの種類

  • 許可ポリシー
    • アクセス許可・拒否を設定するIAMポリシー
  • 信頼ポリシー
    • 外部のアカウント、リソースを信頼し、アクセスを許すポリシー
      監査人などに一時的な権限を委譲する際にも利用される(IAMロールを付与する)

■IAMのアクティビティ監視
さまざまなサービスや機能を利用して、IAMの利用記録を管理する

  • IAMアクセサスアナライザー
    • 外部エンティティなど、組織とアカウントのリソースを識別してセキュリティ上のリスクであるリソースとでーたの不適切なアクセスがないか特定する。
  • IAMアクセスアドバイザー
    • IAMアイエンティティに許可されているサービスとアクセス日時を表示
  • Credential Report
    • 特定のIAMアイエンティティのIAM認証情報のレポートファイル
  • AWS Config
    • IAMユーザー、グループ、ロール、ポリシーの変更履歴を記録する。
  • AWS CloudTrail
    • 特定のIAMアイデンティティのアクティブやAPIコールをログに記録しモニタリングするサービス

IAM権限のベストプラクティス

  1. 通常はルートアカウントを使用しない
  2. 個々のIAMユーザーを作成して、IAMユーザーで管理を行う
  3. IAMユーザーへのアクセス許可を割り当てにIAMグループを利用する
  4. IAMユーザーやIAMグループには最小限の権限のみ設定する
  5. 新しくポリシーを作成するのではなく、AWS管理ポリシーを使用する
  6. インラインポリシーではなく、カスタマー管理ポリシーを使用する
  7. ユーザーのために強度の高いパスワードポリシーを設定する
  8. MFAを有効化する
  9. AmazonEC2インスタンスで実行するアプリケーションにはIAMロールを使用する
  10. 第三者に一時的に認証を付与する場合、IAMロールを使用してアクセス許可を移譲する
  11. アクセスキーを共有しない
  12. 認証情報を定期的にローテーションする
  13. 不要な認証情報を削除する
  14. AWSアカウントのアクティビティを監視する

IAM設計

  1. AWSを利用するユーザーの役割・アクセス権限を自社の組織構造と合わせて設計を行う。
  2. 少数利用の場合、IAMユーザー、中規模の場合IAMグループを利用する。
  3. 今後人数が増えたり、変わったりするのであればIAMグループを使用する。
  4. AWS利用者の特定→同じ役割や利用範囲を1つのグループとしてまとめる
  5. 利用者の役割と利用範囲を整理→グループ名の名称と最小限利用範囲を確定する。

Discussion

ログインするとコメントできます