+ CheatSheet - AWS Security Specialty#

Abstraction#

分野

概要

IAM

AWS認証認可サービス、IDおよびアクセス管理の中心的な役割を果たす。

KMS

暗号化キーを管理するサービス。

S3

オンラインストレージサービス。

VPC

仮想的なプライベートネットワークを構築するサービス。

CloudWatch

AWSリソースとその上で実行するアプリをモニタリングするサービス。

1. IAM#

IAM は AWS リソースに対する認証認可の機能を司る。IAMを利用することで、AWSのユーザとグループを作成および管理し、アクセス権を使用して AWS リソースへのアクセスを許可及び拒否できる。

IAMの機能#

  • IAM ユーザ

    • IAM ユーザのアクセスキーについて

      • ID/Password

      • AccessKey/SecretAccessKey

        • AccessKey: AWS 外のリソースからコマンドインターフェース(CLI)やサードパーティ製のツールを通じて AWS を操作する際に利用する。

      • ※キーペアが設定されている IAM ユーザに対して、IP アドレス等の利用制限をする

      • ※流出の被害を最小化するために、最小権限のみ付与する

      • ※キーペアをハードコーディングしないで済む方式、IAM ロールや Cognito で代替する

      • ※キーペアを利用する場合は、プラグラムに埋め込むのではなく環境変数に設定する

      • ※AWS 提供の機密情報を誤って commit することを防ぐ git-secrets を導入する

    • Ref:

    • IAM ユーザやアクセスキーの利用履歴を確認する

      • IAM ユーザや IAM ロールのダッシュボードから、それぞれ最後にいつ使われたのか確認することができる。認証情報レポートからすべて IAM ユーザの利用状況を CSV 形式でダウンロードできる。

      • Config Rules を利用することで自動でチェックすることも可能。

  • IAM グループ

    • 同一の役割を持つ IAM ユーザをグループ化する機能。IAM ユーザ同様にアクセス権限を付与するができる。

    • 権限の付与方法について、管理ポリシーとインラインポリシーがある。

    • インラインポリシーは、IAM ユーザ・IAM グループ間で共用することができない。基本的には管理ポリシーを利用しましょう。

  • IAM ポリシー

    • JSON 形式で記述する。以下3つのルールがある。

      • Action

      • Resource

      • Effect

    • AWS 管理ポリシー(AWS Managed Policies)とカスタマ管理ポリシー(Customer Managed Policies)、インラインポリシーについて

      • インラインポリシーは、対象ごとに作成・付与するポリシーで、複数のユーザ・グループに付与することはできない

      • 管理ポリシーは、1つのポリシーを複数のユーザやグループに適用することができる。

    • 10種類の職務機能の AWS 管理ポリシー

      • 管理者

      • Billing

      • データベース管理者

      • データサイエンティスト

      • 開発者パワーユーザ

      • ネットワーク管理者

      • セキュリティ監査人

      • サポートユーザ

      • システム管理者

      • 閲覧専用ユーザ

  • IAM ロール

    • ロールによる権限の委任の仕組み

      • IAM ロールは、AWS のサービスやアプリに対して、一時的な AWS リソースの操作権限を与える仕組み。この操作権限の付与は、AWS Security Token Service(AWS STS)を利用し、一時的認証情報(Temporary security credential)を発行することにより実現している。

    • 信頼関係の設定

      • アクセス権限(Policy)以外に信頼関係(Principal)がある。信頼関係は、誰がそのロールを利用できるのかを指定するもの。基本的に、下記のPrincipalを編集して利用する。AWS のサービスであったり AD でログインしたユーザであったりと様々な指定方法がある。

      {
        "Version": "2012-10-17",
        "Statement":[
          {
            "Effect": "Allow",
            "Principal": {
              "Service": "ec2.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
          }
        ]
      }
      

IAM の設計運用原則#

  • ルートユーザの取り扱いについて

    • ルートユーザのみで実行可能な操作(Admin 権限を付与した IAM ユーザでも、下記の操作はできない。)

      • AWS アカウント全体の設定変更(ルートアカウントのメールアドレス/パスワード変更など)

      • AWS サポートのプラン変更

      • 請求に関する設定

      • AWS アカウントの停止

    • AWS アカウントを作ったら、まず初めに Admin 権限をもつ IAM ユーザを払い出し、それ以降の作業はこの IAM ユーザで行うようにする。ルートユーザは二要素認証をかけ、必要な時以外はルートユーザを使わないという運用を徹底する。

IAM を利用した権限管理の原則#

  • AWS アカウントのルートユーザアクセスキーをロックする

  • 個々の IAM ユーザの作成

  • IAM ユーザへのアクセス許可を割り当てるためにグループを使用する

  • 最小権限を付与する

  • AWS 管理ポリシーを使用したアクセス許可の使用開始

  • インラインポリシーではなくカスタマ管理ポリシーを使用する

  • アクセスレベルを使用して、IAM 権限を確認する

  • ユーザの強力なパスワードポリシーを設定

  • Amazon EC2 インスタンスで実行するアプリに対し、ロールを使用する

  • ロールを使用したアクセス許可の委任

  • アクセスキーを共有しない

  • 認証情報を定期的にローテーションする

  • 不要な認証情報を削除する

  • 追加セキュリティに対するポリシー条件を使用する

  • AWS アカウントのアクティビティの監視

パーミッションバウンダリー(Permissions Boundary): IAM の移譲権限を制限する#

IAM アクセスアナライザー: 信頼関係の設定の妥当性を確認しやすくするツール#

AWS DirectoryService#

AWS 内でマネージド型の Microsoft Active Directory を利用するためのサービス。

  • AWS における ActiveDirectory 関係のサービス一覧

    分野

    概要

    AWS Managed Microsoft AD

    AWS 上にマネージド型の Microsoft AD を構築するサービス

    Simple AD

    Linux-Samba Active Directory で構築されたマネージド型ディレクトリサービス

    AD Connector

    既存の AD に対してリダイレクトする AD のプロキシサービス

  • オンプレミスとの接続パターン

    • AD Connector を使って既存の AD に対して認証プロキシとして動作させる

    • Managed Microsoft AD を構築し既存の AD と双方向の推移的信頼関係を構築する

一般的に、VPC を利用して VPN や専用線接続をする。使い分けの違いは、想定のアクセス規模であったり耐障害性である。

2. KMS(TODO)#

3. S3(TODO)#

4. VPC(TODO)#

5. CloudWatch(TODO)#