AWSのセキュリティについて
クラウドの情報セキュリティガイダンスについて
-
ISO/IEC 27017:2015
- クラウドコンピューティングに関連する情報セキュリティに特化した国際規格。クラウドサービスの利用者とクラウドサービスプロバイダーの両者が適切なセキュリティ管理を行うためのガイドラインを提供する。
- ISO27000系のガイダンスを細くする情報セキュリティコントロールの実装を支援するための標準規格。
- 責任共有
- 資産の廃棄
- マルチテナント
- 仮想マシンの構成
- 管理運用と手順
- 監査アクティビティの監視
- 相互運用性
- AWSも第三者機関である「EY CertifyPoint」から認定を受けている
AWSの責任共有モデルとAWS Well-Architected
- AWS(クラウド事業者)と利用者がお互いのセキュリティ責任範囲を明確化したモデルのこと。
- AWS Well-Architectedフレームワーク
- https://docs.aws.amazon.com/ja_jp/wellarchitected/latest/framework/welcome.html
- 信頼性が高く、安全で、効率的で、費用対効果が高く、持続可能なシステムを設計して運用するための、アーキテクチャに関するベストプラクティスを学ぶことができる
- AWS Well-Architected フレームワークの柱
- 設計原則
項目 | 内容 |
---|---|
キャパシティニーズの推測が不要 | クラウドでは必要な分のみキャパシティを使用し、自動的にスケールアップまたはスケールダウンできるため、アイドル状態やパフォーマンスの制約による影響を避けられる。 |
本稼働スケールでシステムをテスト | オンデマンドで本稼働規模のテスト環境を作成し、テスト後にリソースを削除できるため、わずかなコストで本番環境をシミュレートできる。 |
アーキテクチャの実験を念頭に置いた自動化 | 自動化により低コストでワークロードを作成・レプリケートし、手作業の負担を回避でき、変更の影響を追跡・監査して以前の状態に戻すことが可能。 |
発展するアーキテクチャを検討 | クラウドでは自動化されたテストやオンデマンドのリソース使用が可能なため、アーキテクチャの変更に伴うリスクを軽減し、ビジネスの進化に対応できる柔軟性を提供する。 |
データに基づいてアーキテクチャを駆動 | クラウドではワークロードのデータに基づいてアーキテクチャの選択と改善を進めることができ、事実に基づいた意思決定を可能にする。 |
ゲームデーを利用して改善 | 定期的にゲームデーを実施し、本番環境のイベントをシミュレートすることで、アーキテクチャとプロセスのパフォーマンスをテストし、改善を促進する。 |
Security Hub
- セキュリティ状態を包括的に把握するためのマネージドサービスのこと
- 各AWSのセキュリティサービスやサードパーティツールで検出されたイベントを集約することができる。
- ベースラインアプローチ(AWS CIS Benchmark等)とリスクベースアプローチ(脆弱性リスク等)を組み合わせた脅威検出が可能。
- Findings
- 各セキュリティサービスやサードパーティツールで検出されたイベントをFindingsと呼ぶ。
- Findingsは最終更新日から90日間SecurityHubに保存される。
-
ASFF(AWS Secuity Finding Format)と呼ばれる標準化された形式を使用してFindingsに情報を連携している。
- 検出結果の集約について
- SecurityHubのデフォルトはAWSアカウント単位かつリージョン単位。
- Organizationを利用したマルチアカウント集約が可能。
- クロスリージョン集約
- インサイトやコントロールコンプライアンスのステータス等をFindingsを通して1つのリージョンで管理することができる。
- https://docs.aws.amazon.com/ja_jp/securityhub/latest/userguide/finding-aggregation.html
GuardDuty
-
https://docs.aws.amazon.com/ja_jp/guardduty/latest/ug/what-is-guardduty.html
-
悪意のあるIPアドレスやドメイン、機械学習モデルを使用して、異常なアクティビティやマルウェア等悪意のある行動を識別・検出することができる。
-
GuardDutyの検出結果はEventBridgeを介して通知され、Amazon S3にエクスポートできる他、Security HubやAmazon Detectiveとも連携し、セキュリティの分析と調査が可能となる。
-
GuardDutyの検出データソースについて
- CloudTrail Log
- VPC Flow Logs
- DNSクエリログ
- EKS監査ログ
- GuardDuty agentによるEKSランタイムアクティビティ
- EBSのマルウェアスキャン
- RDSログインアクテビティ
- 2024/6/11 にマネージドでS3のマルウェアスキャンがbeta版にて利用可能となっている。
-
Organizationでの利用と委任について
- https://docs.aws.amazon.com/ja_jp/guardduty/latest/ug/guardduty_organizations.html
- Organizationの管理下にあるAWSアカウントは自動的にGuardDutyを有効化した状態で参加させることができる。
- リージョンサービスであるため、リージョン毎に有効化する必要がある。
AWS Config
- https://docs.aws.amazon.com/ja_jp/config/latest/developerguide/WhatIsConfig.html
- AWSリソースのインベントリ管理、構成変更管理ができる
- AWSリソースの構成変更をロギングが可能。S3に保存することもできる。
- 独自・マネージドのルールを作成・設定することで維持したいセキュリティ設定から外れようとする変更を検知できる。
- 非準拠となってしまったリソースに対して自動の修復をすることもできる。
- SecurityHubを利用する上でAWS Configを有効化する必要がある。
- ベースラインアプローチの機能をAWS Configに依存しているためである。
- SecurityHubでセキュリティ基準を有効化すると、Config Rulesに「securityhub-」から始まるルールが自動生成される。
- マルチアカウントマルチリージョンの集約
- Aggregatorを利用して集約をする。
- Aggregatorはソースアカウントから設定スナップショットを定期的に取得し、指定された S3 に保存する
- Config Rulesの評価モード
- 予防的統制(proactive)と発見的統制(detective)の2つのモードが存在する。
- 予防的統制は、AWS Config API、AWS SDK、CloudFormation Guard、CloudFormation Hooksを利用して、リソースがプロビジョニングされる前にConfig Rulesに準拠しているかを評価する。
- 発見的統制は、すでにプロビジョニング済みのリソースに対して、設定変更及び定期的なチェックでConfig Rulesに準拠しているかを評価する。
Inspector
ソフトウェアの脆弱性や意図しないネットワークへの露出について AWS ワークロードを継続的にスキャンする脆弱性管理サービス。以下に対応している。
- EC2インスタンス
- AMI
- ECR
- Lambda
2016年4月にリリースされたInspectorはInspector Classicと呼ばれており、現在は Inspector v2 が主流になっている。
- Inspectorの検出
- パッケージの脆弱性
- Amazon InspectorはEC2インスタンス、ECRコンテナイメージ、Lambda関数についてパッケージ脆弱性検出結果を生成できる。
- パッケージ脆弱性の検出結果は、AWS環境内のソフトウェアパッケージに存在する共通脆弱性識別子 (CVE) を特定する。
- Linux向けのCVE検出は、ベンダーのセキュリティアドバイザリがリリースされてから24時間以内にAmazon Inspectorに追加される。
- Windows向けのCVE検出は、Microsoftがリリースしてから48時間以内にAmazon Inspectorに追加される。
- コードの脆弱性
- Amazon Inspectorのコードスキャンでは、コード内の脆弱性を特定し、スニペットとしてハイライトする。
- コードスキャンで検出されたスニペットには、プレーンテキストでハードコードされた認証情報や他の機密情報が含まれることがある。
- Amazon Inspectorを使用すると、Lambda関数のコード脆弱性検出結果を生成できる。
- 検出されたコードスニペットはCodeGuruサービスに保存され、AWS管理のキーで暗号化されるが、Inspector APIではカスタマーマネージドキーを使用できる。
- ネットワーク到達可能性
- ネットワーク到達可能性の検出結果は、Amazon EC2 インスタンスへのネットワークパスが開いていることを示す。
- TCPおよびUDPポート経由でVPCエッジから到達可能な場合、これらの結果が表示される。
- パッケージの脆弱性
IAM Access Analyzer
- IAM Access Analyzerは、AWS環境内の外部エンティティと共有されているリソース(S3、IAMロール、KMSキー...)を識別するための機能を提供する。
- IAM Access Analyzerは、アカウントの外部で共有されているリソースごとに検査結果を生成し、アクセスと共有される外部プリンシパルに関する詳細情報を提供する。
- 検査結果を通じて、外部エンティティと共有されているリソースへの意図しないアクセスを特定し、セキュリティリスクを評価できる。
- デフォルトではアカウント単位かつリージョン単位だが、Orgnization管理下にある管理アカウント(委任アカウント)ではOrgnization単位でアナライザーを作成することができる。
CloudTrail
CloudTrailは、AWSアカウント内の操作をイベントログとして記録するサービスであり、AWSアカウント作成後、管理イベントを自動的に取得する
CloudTrailは、「いつ」「誰が」「どこから」「どのAWSリソースを」「どのように操作したのか」をAPI操作ログとして記録する。
証跡として過去90日以上のログ保存が必要な場合は、S3バケットやCloudWatch Logsのロググループにログを出力する。
- ログの構造
- CloudTrail監査ログは、イベント名によってフィールド構造が異なるJSONフォーマットである。
- ログイベントの内容
- https://docs.aws.amazon.com/ja_jp/awscloudtrail/latest/userguide/cloudtrail-event-reference-record-contents.html
- 何を: eventType、eventSoruce、eventCategory、eventName
- どこから: sourceIPAddress
- いつ: eventTime
- 誰が: userIdentity.type
IAMのログの例
{"Records": [{
"eventVersion": "1.08",
"userIdentity": {
"type": "IAMUser",
"principalId": "AIDA6ON6E4XEGITEXAMPLE",
"arn": "arn:aws:iam::888888888888:user/Mary",
"accountId": "888888888888",
"accessKeyId": "AKIAIOSFODNN7EXAMPLE",
"userName": "Mary",
"sessionContext": {
"sessionIssuer": {},
"webIdFederationData": {},
"attributes": {
"creationDate": "2023-07-19T21:11:57Z",
"mfaAuthenticated": "false"
}
}
},
"eventTime": "2023-07-19T21:25:09Z",
"eventSource": "iam.amazonaws.com",
"eventName": "CreateUser",
"awsRegion": "us-east-1",
"sourceIPAddress": "192.0.2.0",
"userAgent": "aws-cli/2.13.5 Python/3.11.4 Linux/4.14.255-314-253.539.amzn2.x86_64 exec-env/CloudShell exe/x86_64.amzn.2 prompt/off command/iam.create-user",
"requestParameters": {
"userName": "Richard"
},
"responseElements": {
"user": {
"path": "/",
"arn": "arn:aws:iam::888888888888:user/Richard",
"userId": "AIDA6ON6E4XEP7EXAMPLE",
"createDate": "Jul 19, 2023 9:25:09 PM",
"userName": "Richard"
}
},
"requestID": "2d528c76-329e-410b-9516-EXAMPLE565dc",
"eventID": "ba0801a1-87ec-4d26-be87-EXAMPLE75bbb",
"readOnly": false,
"eventType": "AwsApiCall",
"managementEvent": true,
"recipientAccountId": "888888888888",
"eventCategory": "Management",
"tlsDetails": {
"tlsVersion": "TLSv1.2",
"cipherSuite": "ECDHE-RSA-AES128-GCM-SHA256",
"clientProvidedHostHeader": "iam.amazonaws.com"
},
"sessionCredentialFromConsole": "true"
}]}
CloudTrail ログ分析方法
- S3 & Athena
- S3に保存したログに対して、Athena Tableを作成して検索する
- CloudTrail Lake
- CloudTrail Lakeでイベントデータストアを作成して検索する。
- Athena テーブルの作成は不要だが、ログの保持期間は最大7年(2557日)
- Open Search
- fluentd、Lambda等を利用して、S3に保存したログをインデックスに取り込み、Open Search Daashboardで可視化する。
- Open Searchの構築が必要なため上2つよりも、構築コストが高い。
CloudTrail digest ログ
- CloudTrailはAWSアカウント内の操作をイベントログとして記録するサービス。
- CloudTrailログファイルの整合性検証は、ログファイルが配信後に変更、削除、または偽造されていないことを確認するための機能。
- CloudTrailはログファイルと同じ証跡に関連付けられたAmazon S3バケットにダイジェストファイルを配信する。
- ダイジェストファイルには、ログファイルのハッシュとその署名が含まれており、これを使用してログファイルの整合性を検証する。
WAF
WAFはおもにWebアプリケーション、IDS/IPSはネットワークやOS/ミドルウェア層のソフトウェアの脆弱性等への攻撃に対し、シグネチャーと呼ばれる攻撃のパターンをマッチングさせることで脅威のある通信を検知/遮断することができる。
以下のリソースタイプを保護できる。
- Amazon CloudFront
- Amazon API Gateway
- Application Load Balancer
- AWS AppSync
- Amazon Cognito
- AWS App Runner
- AWS 検証済みアクセスインスタンス
API Gatewayのみ上限1024バイトまでレスポンスボディを記録でるが、ほかのAWSサービスの通信ログでは、レスポンスボディまではログに記録ができない。
レスポンスボディを記録に残すには、VPC Traffic MirroringというVPC上のENIを流れるパケットをキャプチャするサービスが必要となる。
トラフィックログの出力には、S3、CloudWatch Logs、Kinesis Firehoseの3つが対象として選択できる。
AWS SRA (Security Reference Architecture)
AWSによってまとめられているセキュリティリファレンスアーキテクチャのこと。
SRAは、AWS クラウド導入フレームワーク (AWS CAF)、AWS Well-Architected フレームワーク、AWS 責任共有モデルの 3 つの AWS セキュリティ基盤に整合している。
セキュリティを設計して実装する際に留意すべき AWS SRA の 8 つの重要なポイント
- AWS Organizationsとマルチアカウント戦略の使用
- defense-in-depthの原則の適用
- 複数のAWSサービスと機能を組み合わせたクラウドインフラの構築
- AWSサービスと機能の主要な機能の理解と統合
- 全てのアカウントでの共有ガードレールの構築
- AWS Organizationsの委任管理機能の活用
- AWS組織全体での一元的な監視、管理、ガバナンスの実装
- AWS Control Towerを使用したマルチアカウント環境のセットアップ
セキュリティのためのAWS Organization
SCPを用いたOrganization、OU、アカウントレベルでのガードレールの適用やControltowerを用いたセキュリティ要件を満たしたアカウントプロビジョニングが可能。
管理アカウントが保持する機能と影響範囲から、必要なロールにのみアクセス許可を付与することができる。
これを実現するための機能として、信頼されたアクセスと委任された管理者の2 つのパターンが存在する。
信頼されたアクセスは、信頼されたサービスが組織のメンバーアカウントで自動的にタスクを実行できるように設定し、組織内にアカウントを作成するとき、または組織への既存のアカウントの招待が承諾されたときに、AWS Organizations は、サービスにリンクされたロール (AWSServiceRoleForOrganizations) を使用してメンバーアカウントをプロビジョニングする。
具体的な例としては、AWS CloudTrail サービスに信頼できるアクセスを許可して、AWS CloudTrail 組織内のすべてのアカウントに組織証跡を作成するなどがある。
委任された管理者は、AWS 組織のAWS メンバーアカウントをそのサービスのAWS 組織のアカウントの管理者として登録すること。委任管理者をサポートしているのは以下のサービスに限られている。
- AWS IAM アイデンティティセンター
- AWS Config
- AWS Firewall Manager
- Amazon GuardDuty
- AWS IAM アクセスアナライザー
- Amazon Macie
- AWS Security Hub
- Amazon Detective
- AWS Audit Manager
- Amazon Inspector
- AWS Systems Manager