次のいずれかに該当する場合は AWS CloudFormation を使わずに AWS Cloud Development Kit (AWS CDK) を実行してデプロイしてください。
- Amazon Elasticsearch Service (Amazon ES) を Amazon VPC の Private Subnet にデプロイする
- Amazon VPC の Public Subnet へのデプロイは未対応
- マルチアカウント環境下でログを集約して分析する
- 既存の Amazon Simple Storage Service (Amazon S3) の バケットを CloudFormation のスタックにインポートし、マルチアカウントのログ受信用に、S3 バケットポリシーを AWS CDK で自動設定をする。既存の S3 バケットポリシーは上書きされます
- 既存の S3 バケットからログを SIEM on Amazon ES にロードする。S3 バケットポリシーはご自身で管理する
- 既存の AWS Key Management Service (AWS KMS) カスタマーマネジメントキー で S3 バケットに暗号化して保存したログを復号する。AWS KMS のキーポリシーはご自身で管理する
- S3 バケット名または SIEM on Amazon ES のドメイン名を初期値から変更してデプロイする
- SIEM on Amazon ESのドメイン名: aes-siem
- ログ用 S3 バケット名: aes-siem-[AWS アカウント ID]-log
- スナップショット用 S3 バケット名: aes-siem-[AWS アカウント ID]-snapshot
- GeoIPダウンロード用 S3 バケット名: aes-siem-[AWS アカウント ID]-geo
すでにお持ちの S3 バケットを SIEM on Amazon ES の CloudFormation スタックに取り込み、AWS CDK で管理します。ログ取り込み用にS3 バケットポリシーを追加・修正します。S3 のバケットポリシーやその他のバケット設定は上書きされるのでご注意ください。SIEM on Amazon ES の初期インストール時にのみ設定可能です。 既存の S3 バケットから SIEM on Amazon ES にログを送信しつつ、S3 バケットポリシー等はご自身で引き続き管理する場合は、この手順はスキップしてください。
- CloudFormation スタックに取り込みたい S3 バケットの名前を確認してください
- Github からソースコード一式を git clone するか、ここ からインポート用CloudFormationテンプレートをダウンロード
- GitHub から clone またはダウンロードした CloudFormationテンプレートの
deployment/siem-on-amazon-elasticsearch-import-exist-s3bucket.templateを編集する。BucketName の [change-me-to-your-bucket] をスタックに取り込みたい S3 バケット名に変更 - AWS マネジメントコンソールで CloudFormation に移動
- [スタック] のメニューから、右上のプルダウンメニューの [スタックの作成] から [既存のリソースを使用(リソースをインポート)] を選択
- [次へ]を選択して、[テンプレートの指定] 画面にて、編集したテンプレートの
siem-on-amazon-elasticsearch-import-exist-s3bucket.templateをアップロードし、[次へ] を選択 - [リソースを識別] 画面にて、[識別子の値] にスタックへ [インポートしたい S3 バケット名] を入力して、[次へ] を選択
- [スタックの詳細を指定] 画面にて、スタック名に [aes-siem] と入力して [次へ] を選択
- [概要をインポート] 画面にて、[リソースのインポート] を選択して完了
- 次のセクションの [AWS CDK によるデプロイ] の [5-3. その他の共通設定] で cdk.json を編集してください。スタックにインポートする S3 バケット名を s3_bucket_name.log に指定をしてください。
- デプロイするサブネットは Private Subnet です
- サブネットは 3つの異なる Availability Zone を選択してください。(実際にデプロイするのは 1 つの AZ へ 1 インスタンスのみです)
- Amazon VPC の [DNS ホスト名] と [DNS ホスト解決] の 2 つとも有効にしてください
- デプロイ時に
cdk.jsonの作成をしますが、このファイルと自動生成されるcdk.context.jsonを保存をしてください。SIEM on Amazon ES のデプロイで使用する CDK の再実行に必要です
-
Amazon Linux 2 (x86) を実行させた Amazon Elastic Compute Cloud (Amazon EC2) インスタンスをデプロイしてください
-
AWS Identity and Access Management (IAM) で Admin 権限を持つロールを作成して、インスタンスにアタッチします
-
シェルにログインして、開発ツール、Python 3.8 と開発ファイル、git、jq をインストールし、ソースコードを GitHub から取得します
cd sudo yum groups mark install -y "Development Tools" sudo yum install -y amazon-linux-extras sudo amazon-linux-extras enable python3.8 sudo yum install -y python38 python38-devel git jq sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1 git clone https://github.com/aws-samples/siem-on-amazon-elasticsearch.git
export CDK_DEFAULT_ACCOUNT=<AWS_ACCOUNT> # your AWS account
export AWS_DEFAULT_REGION=<AWS_REGION> # region where the distributable is deployedSIEM on Amazon ES で使用する AWS Lambda 関数は 3rd Party のライブラリを利用します。ローカルにこれらのライブラリをダウンロードをしてデプロイパッケージを作成します。Python 3 がインストールされていることを確認してください。
cd siem-on-amazon-elasticsearch/deployment/cdk-solution-helper/
chmod +x ./step1-build-lambda-pkg.sh && ./step1-build-lambda-pkg.shAWS CDK を実行できるように各種のソフトウェアをユーザーモードでインストールします。
chmod +x ./step2-setup-cdk-env.sh && ./step2-setup-cdk-env.sh
source ~/.bash_profileインストールされるソフトウェア
- Node Version Manager (nvm)
- Node.js
- AWS SDK for Python (Boto3)
- AWS Cloud Development Kit (AWS CDK)
レポジトリのルートディレクトリから、AWS CDK のコードのあるディレクトリに移動して、オプション設定とインストールの準備をします
cd ../../source/cdk/
source .env/bin/activate
cdk bootstrapエラーで実行が失敗した場合、Amazon EC2 インスタンスに Admin 権限のロールが割り当てられているかを確認してください。
SIEM on Amazon ES を Amazon VPC 内にデプロイする場合は、Amazon VPC 用の AWS CDK のサンプルファイルをコピーして編集してください。
cp cdk.json.vpc.sample cdk.jsoncdk.json を編集してください。
Amazon VPC に関するパラメーターと説明です。
| パラメータ | 説明 |
|---|---|
| vpc_typ | 新しい Amazon VPC を作成する場合は [new] を、既存の Amazon VPC を利用する場合は [import] を入力。編集するパラメーターとして、新規の場合は new_vpc_XXXX、既存の利用は imported_vpc_XXXX を修正する |
| imported_vpc_id | SIEM on Amazon ES をデプロイする Amazon VPC の ID を入力 |
| imported_vpc_subnets | 3つ以上の"VPC サブネット ID" をリスト形式で入力 |
| imported_vpc_subnetX | (deprecated) 3つの、[VPC サブネット ID]、[アベイラビリティーゾーン]、[ルートテーブル ID] を入力 |
| new_vpc_nw_cidr_block | 新規に作成する Amazon VPC の IP と CIDR ブロックを入力。形式は、IP アドレス/サブネットマスク数。例) 192.0.2.0/24 |
| new_vpc_subnet_cidr_mask | サブネット CIDR ブロック。拡張性を考慮して 27 以上を推奨 |
SIEM on Amazon ES をパブリックアクセス環境にデプロイする場合
cp cdk.json.public.sample cdk.jsonパブリックアクセス特有の設定はなし
共通の設定として以下のパラメーターを変更できます。変更がなければ修正は不要です。
| パラメーター | 初期値 | 説明 |
|---|---|---|
| aes_domain_name | aes-siem | SIEM on Amazon ES ドメインを変更する |
| s3_bucket_name | S3 バケット名を初期値から変更する | |
| log | aes-siem-[AWS アカウント ID]-log | ログ用 S3 バケット名 |
| snapshot | aes-siem-[AWS アカウント ID]-snapshot | スナップショット用 S3 バケット名 |
| geo | aes-siem-[AWS アカウント ID]-geo | GeoIPダウンロード用 S3 バケット名 |
| kms_cmk_alias | aes-siem-key | AWS KMS カスタマーマネジメントキーのエイリアス名を変更する |
| organizations | AWS Organizations の情報を入力して、S3 バケットのバケットポリシーを自動生成。他の S3 バケットをご自身で管理する場合は入力不要 | |
| .org_id | Organizations ID。例)o-12345678 | |
| .management_id | Organizations で管理者アカウントとなっている AWS アカウント ID | |
| .member_ids | Organizations でメンバーアカウントとなっている AWS アカウント ID をカンマ区切りでを入力 | |
| no_organizations | Oarganizations で管理していないアカウント情報を入力して、バケットポリシーを自動生成。他の S3 バケットをご自身で管理する場合は入力不要 | |
| .aws_accounts | Oarganizations で管理していない AWS アカウント ID をカンマ区切りで入力 | |
| additional_s3_buckets | カンマ区切りで S3 バケット名を列挙 | |
| additional_kms_cmks | カンマ区切りで AWS KMS カスタマーマネジメントキー の ARN を列挙 |
最後に JSON ファイルのバリデーションをしてください。実行結果として、JSON が表示され、エラーが出なければ JSON ファイルの文法に問題はありません。
cdk context --jCloudFormation テンプレートと同じパラーメーターを指定して CDK コマンドを実行します
| パラメーター | 説明 |
|---|---|
| AllowedSourceIpAddresses | Amazon VPC 外に SIEM on Amazon ES をデプロイした時に、アクセスを許可するIPアドレス。複数アドレスはスペース区切り |
| GeoLite2LicenseKey | Maxmindのライセンスキー。IP アドレスに国情報を付与 |
| ReservedConcurrency | es-loaderの同時実行数の上限値。デフォルトは10。エラーがないにもかかわらずログ取り込み遅延やThrottleが常時発生する場合はこの値を増やしてください |
| SnsEmail | メールアドレス。SIEM on Amazon ES で検知したアラートを SNS 経由で送信する |
文法) --parameters オプション1=パラメータ1 --parameters オプション2=パラメータ2 複数のパラメーターがある場合は、--parametersを繰り返す
パラメーター付きでの実行例)
cdk deploy \
--parameters AllowedSourceIpAddresses="10.0.0.0/8 192.168.0.1" \
--parameters GeoLite2LicenseKey=xxxxxxxxxxxxxxxx約30分でデプロイが終わります。完了したら、READMEに戻って、「3. Kibana の設定」にお進みください。
SIEM のレポジトリを更新して、AWS CDK でアップデートします。初期インストール時に使用した cdk.json が CDK のディレクトリにあることを確認してください。
cd ~/siem-on-amazon-elasticsearch/
git pull --rebase[AWS CDK によるデプロイ] の [2. 環境変数の設定]、[3. AWS Lambda デプロイパッケージの作成]、「4. AWS Cloud Development Kit (AWS CDK) の環境セットアップ] を再実行してください。
[5. AWS CDK によるインストールのオプション設定] 以降は 実行せず、下記を実行
インストール時に保存した cdk.json と cdk.context.json を ~/siem-on-amazon-elasticsearch/source/cdk/ にリストア。cdk.context.json はない場合があります。
cd ~/siem-on-amazon-elasticsearch/source/cdk/
source .env/bin/activate
cdk deploy更新される差分が表示されるので確認して、[y] を入力。数分でアップデートは完了します。
cdk.json と cdk.context.json を保存して終了です。