+ 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 でログインしたユーザであったりと様々な指定方法がある。
json { "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 や専用線接続をする。使い分けの違いは、想定のアクセス規模であったり耐障害性である。