SCS学習記録
CloudTrailのログファイル整合性検証機能
GuardDuty 自動アーカイブ
- 通常GuardDutyの検知結果がマネジメントコンソールに表示される
- 検知結果は確認後手動でアーカイブするが、定常的に発生する既知の検知結果を毎回手動でアーカイブするのは面倒
- フィルタで自動アーカイブを有効にしておくと、そのフィルタの検出結果を自動でアーカイブしてくれる
S3イベントを別アカウントに送信する構成
- 送信元アカウントのEventBridgeで、S3イベントを送信先アカウントのEventBridgeのイベントバスに送信
侵入テスト
許可された特定のサービスについては、事前承認なしで侵入テストを実行してよい。
AWS のお客様は、[Permitted Services] (許可されたサービス) の下の次のセクションに記載されているサービスについて、事前の承認なしに AWS インフラストラクチャのセキュリティ評価またはペネトレーションテストを実行できます。
スキャンエンジン
管理コンソールで指定されたサーバやクライアント・NW機器などのIT資産に対して、脆弱性スキャンを行うためのコンポーネントです。
Cognitoユーザープールのグループ
ユーザープール内のユーザーをグループ分けして、グループ単位でIAMロール設定などができる。
KMSキーにキーマテリアルをインポートする方法
- キーマテリアルなしでKMSキーを作成
- キーマテリアルなしでキーを作成するには、オリジンとして EXTERNAL を指定
- 作成したキーはPendingImport になり、この状態だと暗号化には使用できない
- キー作成後、KMS キーの RSA ラップパブリックキーとインポートトークンをダウンロード
- ラップパブリックキー: AWS アカウント に固有のパブリックキーでキーマテリアルを安全にインポートするための暗号化を行う
- インポートトークン: キーマテリアルが正しくインポートされたことを保証するメタデータ
- 各ラップパブリックキーとインポートトークンのセットは 24 時間有効
- 24 時間以内にキーマテリアルのインポートに使用しなかった場合、新しいセットのダウンロードが必要
- ダウンロードしたパブリックキーと指定したラップアルゴリズムを使用してキーマテリアルを暗号化
- キーマテリアルをKMSキーにインポート
- ラップパブリックキーとインポートトークンをダウンロードしたときに指定した KMS キーにインポートする必要がある
- キーマテリアルをインポートするとEnable状態になり、暗号化に利用できるようになる
KMSキーにキーマテリアルを再インポートする方法
KMSキーからキーマテリアルを削除してしまった場合に再インポートしたい場合の対処
- ラップパブリックキーとインポートトークンをダウンロードする際に、再インポートしたい既存KMSキーを指定
- ダウンロードしたパブリックキーと指定したラップアルゴリズムを使用してキーマテリアルを暗号化
- 削除したものと同じキーマテリアルを、既存KMSキーに再インポート
暗号化コンテキストを用いたKMS暗号化
AWS KMSには暗号化コンテキスト(Encryption Context)という形で追加認証データ(AAD)が組み込まれている。暗号化コンテキストを利用することで、データの秘匿性に加えて、完全性、認証性も担保できる。
KMSキーのIAMポリシーの条件にkms:EncryptionContextを追加すると、暗号化コンテキストの使用を条件にできる。
独自のKMSキーローテーションの期間
- KMS管理キーは一年ごとの自動ローテーションで、期間の変更などはできない。
- カスタマー管理KMSキーであれば独自のキーローテーションを設定できる
- 独自のキーローテーションの期間が設定可能
- 手動でのローテーションが可能
DynamoDBとのHTTPS通信
デフォルトでは、DynamoDB との通信において、SSL/TLS 暗号化を使用してネットワークトラフィックを保護する HTTPS プロトコルが使用されます。
EC2でホストされたサイトにACM証明書を設定できない
EC2インスタンス間のトラフィックを暗号化する方法
アプリのコードに暗号化ライブラリを組み込み、送信前に暗号化する。
CloudWatchエージェントの設定ファイル
エージェントが収集するログファイルのパスを指定する必要がある
KMSカスタムキーストア
- キーストアは暗号化キーを保存する場所
- デフォルトキーストアにHSMを使用している
- HSMの管理をさらに強化する場合はカスタムキーストアを使う
- カスタムキーストアで KMS キーを使用する場合、暗号化のオペレーションは、ユーザーのキーマネージャーが、ユーザーの暗号化キーを使用して実行するため、暗号化キーの可用性と耐久性、および HSM のオペレーションに対するユーザーの責任が増える
- カスタムキーストアには下記の二種類がある
- AWS Cloud HSM キーストア
- 外部キーストア
VPNのルートテーブルの設定
- Site-to-Site VPNで接続されたVPCのオンプレミスのデータセンター間で通信をしている
- 各サブネット→データセンター間の通信をする場合、データセンターのCIDRブロックが仮想プライベートゲートウェイを経由するようにルートテーブルを設定する
AWS Audit Manager
- 規制とコンプライアンスを管理するためのツール
AWS コスト異常検出
AWS コスト異常検出は、高度な Machine Learning テクノロジーを活用して、異常な支出と根本原因を特定します。
AWS Lambda でのコード署名の設定
- Lambdaにデプロイされたコードの整合性を署名によって確認できる
- AWS Signer を使ってデジタル署名されたコードパッケージを作成
- コードパッケージをデプロイすると、Lambdaによってコードパッケージの検証が入る
- 署名プロファイル
- コードパッケージに署名できるユーザーを制御する
SecretsManagerで認証情報がローテーションされた後、LambdaでDynamoDBの認証情報の更新をする。
Amazon Inspector
- EC2インスタンスにインストールしたAmazon Inspector エージェントが取得する情報からセキュリティ評価をする
- 評価内容は大きく分けて下記の二つ
- EC2のネットワークアクセス
- アプリケーションのセキュリティ
- 評価テンプレートに沿って自動でセキュリティチェック
- ルールパッケージ: セキュリティチェックのコレクション
- 評価実行期間
- 通知の送信先
- セキュリティチェック内容はAWSが作成したものから選択し、自分で独自の内容は定義できない
- ホスト評価ルールの例
- CVE
- CIS
- OS構成のベンチマーク
- セキュリティベストプラクティス
- 評価ターゲット: Inspectorの評価対象
- 対象リージョンすべてのインスタンスを含められる
- 個別にインスタンスを指定したい場合はタグを使う
CloudTrailを用いたLambda API コールの記録
CloudTrailでLambda関数の呼び出しをデータイベントとして記録できる
アプリが参照するKMSキーの変更
キーの手動ローテーション時に、アプリケーションが参照するKMSキーを変更する場合は、エイリアスのターゲットKMSキーを変更するのが楽。
各AWSセキュリティサービスで検知する内容
- Inspector→EC2の脆弱性検知
- GuardDuty→AWSアカウント内のセキュリティ検知
- Macie→S3上の個人情報検知
DirectConnectとVPNを組み合わせる
別アカウントへのKMSキーの許可
- KMSキーを別アカウントに許可することは可能
- キーポリシーのPrincipalに書く
AWS管理キーのキーポリシーは設定できない
access-keys-rotatedルールの設定期間
- アクセスキーの生成後の経過期間を90日間検知可能
- これ以上の期間はEventBridgeとLambdaを用いる
削除されたCMKの復旧は出来ない
SecurityHubデプロイのポイント
全リージョンと全AWSアカウントを対象にする。
Cloudformation Guard
CloudFormation テンプレート(以下、CFn テンプレート)が、ポリシーガイドラインに準拠しているか確認できるコマンドラインツール
SecurityHub ワークフローステータス
検出結果の調査状況を追跡するステータス
ステータスの値
- 新規(NEW)
- 通知済み(NOTIFIED)
- 抑制済み(SUPPRESSED)
- 解決済み(RESOLVED)
BatchUpdateFindingsAPI
SecurityHubの検出結果のフィールドを更新するAPI
SecurityHubでは、個別のセキュリティチェックを無効化することが可能
GuardDutyに信頼できるIPリストを伝える方法
- 信頼できるIPリストを記載した構成ファイルをプレーンテキストで作成する
- 構成ファイルをS3にアップロードする
SCP でサポートされていない要素
- Principal
- NotPrincipal
- NotResource
KMSカスタムキーストアでサポートされていない機能
- 非対称 KMS キー
- 非対称データキーペア
- HMAC KMS キー
- インポートされたキーマテリアルを持つ KMS キー
- 自動キーローテーション
- マルチリージョンキー
S3にCloudfrontディストリビューションからのみアクセスできるようにする方法
OAI + パブリックアクセスブロック
Inspectorの検出結果タイプ
- Package 脆弱性
- コード脆弱性
- ネットワーク到達性
AWS Systems Manager インベントリ
- コンピューティング環境のメタデータを収集しS3に保存
- 組み込みツールでメタデータにクエリを投げ、更新が必要なノードを診断
AWS Systems Manager Compliance
AWS Systems Manager の機能であるコンプライアンスを使ってマネージドノードのフリートをスキャンし、パッチコンプライアンスと設定の不整合を調べるために使用できます。
DNSクエリログ
次の DNS クエリをログ記録できます。
指定した Amazon Virtual Private Cloud VPC で発生するクエリ、およびこれらの DNS クエリに対する応>答。
インバウンドの Resolver エンドポイントを使用する、オンプレミスのリソースからのクエリ。
再帰的な DNS 解決にアウトバウンドリゾルバーのエンドポイントを使用するクエリ。
Route 53 Resolver DNS Firewall のルールを使用して、ドメインリストをブロック、許可、またはモニタリングするクエリ。
Contributor Insights
ログデータを分析し、コントリビューターデータを表示する時系列を作成できます。
システムのパフォーマンスに影響を与えている人や物を判断できます。たとえば、不良ホストを検出したり、最も重いネットワークユーザーを特定したり、エラーを最も多く生成する URL を検索したりできます。
OAIと暗号化について
- OAIと同時に使えるSSEはSSE-S3しかない
- OACを使えばSSE-KMSも設定できる
CloudTrailが無効になっていた場合の調査
- GuardDutyからCloudTrailLoggingDisabledイベントの詳細をDetectiveで調査できる
- イベントに関連するユーザー名
- CloudTrailが無効になっている間に発生したアクションを特定できる
ECR イメージスキャンニング
- コンテナイメージ内のソフトウェアの脆弱性をチェックできる
- 拡張スキャン
- Inspectorと統合して、自動継続的にスキャンを実行
- OSとプログラミング言語パッケージの両方の脆弱性をチェック
- ベーシックスキャン
- オープンソースのClairプロジェクトのCVEデータベースを使用
- プッシュ時に自動スキャン
- 手動スキャンも可
- 拡張スキャン
IMDSv2から取得したロールを矯正するIAMポリシー
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "RequireAllEc2RolesToUseV2",
"Effect": "Deny",
"Action": "*",
"Resource": "*",
"Condition": {
"NumericLessThan": {
"ec2:RoleDelivery": "2.0"
}
}
}
]
}
IAMユーザーのアクセスキー漏洩時の対応手順
- これらの資格情報がアクセスできるリソースを特定し、許可されたアクセスを確認する。
- 資格情報を無効化し、アカウントへのアクセスを防ぐ。
- 暴露された資格情報を使用して発行された一時的なセキュリティ資格情報を無効化する。一時的な資格情報の有効期限が切れるのを待たず、すぐに無効化する。
- 適切なアクセスを回復する。IAM ユーザーを作成するか、長期間有効な AWS 資格情報の代わりに IAM ロールやフェデレーションを使用することを検討。
- S3 バケットのログや AWS CloudTrail ログを調べて、発生した可能性のあるアクションを特定する。。
EventBridgeでログインイベントを検知
CloudTrailのログをKDSに直接送信することはできない。
KMSのグラント
一時的なキーへのアクセスなど、柔軟な権限管理が可能
VPCフローログでIPアドレスを取得
- カスタム形式で下記の項目を含める
- pkt-srcaddr
- pkt-dstaddr