Deep Security as a ServiceでAmazon SNSトピック対応を設定する

こんにちは、ひろかずです。
少し前ですが、Deep Security as a Service(以下、DSaaS)でAWSのSNSトピック対応がされました。
当時はちょっと使いどころがピンとこなかったのですが、需要が出てきたので一筆書きます。

#主な需要
- ログの長期保存
-- DSaaS環境のログ保存期間は13週間です。

- ログ分析
-- 何をどうするかがカギですね。

- Lambda等でイベントドリブンでどうのこうのする
-- よく語られますが`どうのこうの`の部分を固めるのが先決ですね。

#ざっくり構成（今回の分）
今回は、すべての需要を考慮してこんな感じで組みました。
![Diagram_01.png](https://qiita-image-store.s3.amazonaws.com/0/46611/679b6512-3bdf-9237-50e6-1025d7d05bcc.png "Diagram_01.png")


#前提条件
- AWSアカウントを所有していること。
- DSaaSアカウントを所有していること。

#参考情報
以下の情報を参照しながら進めています。

- トレンドマイクロ社公式：[Deep Security Help Center](https://app.deepsecurity.trendmicro.com/Help.screen?isSearch=true&searchKey=Amazon%20SNS)

- AWS公式：[Subscribing an Amazon SQS Queue to an Amazon SNS Topic](http://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqssubscribe.html)

#工程
参考情報の順番とは少し変えています。

1. Amazon SNSトピックを作成する
2. サブスクリプションを作成する
3. AWSユーザーを作成する
4. DSaaS上でSNSを設定する

#1. Amazon SNSトピックを作成する
Get Startedから始めます。
リージョンは任意ですが、今回はOregonにしました。
![SNS_00.png](https://qiita-image-store.s3.amazonaws.com/0/46611/56000054-78d9-91a7-72d2-8b49888b8789.png "SNS_00.png")

Create topicでを選択します。
![SNS_01.png](https://qiita-image-store.s3.amazonaws.com/0/46611/d8902d4a-130a-0309-abda-9fca3e3fd23b.png "SNS_01.png")

Topic名を付けて、Create Topicボタンを押下します。
![SNS_02.png](https://qiita-image-store.s3.amazonaws.com/0/46611/ddab0a12-947f-e754-34b2-eb7e119d3f81.png "SNS_02.png")

できました。Topic ARNを控えておきます。
![SNS_03.png](https://qiita-image-store.s3.amazonaws.com/0/46611/551959ce-c2bb-3ae8-9d6e-80e8f4c588af.png "SNS_03.png")

#2. サブスクリプションを作成する
サブスクリプションは、需要を考慮してSQSとします。
![SQS_00.png](https://qiita-image-store.s3.amazonaws.com/0/46611/8f56b8bf-12e4-098e-839a-4369c4414335.png "SQS_00.png")

最低限、キュー名を付けるだけです。
あとは要件次第で調整してください。
ここでは、メッセージ受信待機時間を延ばしてみました。
![SQS_01.png](https://qiita-image-store.s3.amazonaws.com/0/46611/bf3f8116-6f29-81ca-3ccf-2818b1f43d24.png "SQS_01.png")

できました。
ARNを控えておきます。
![SQS_02.png](https://qiita-image-store.s3.amazonaws.com/0/46611/daac48a9-25a4-c22d-7d29-1ae3642e05be.png "SQS_02.png")

##SNSの画面に遷移
Create subscriptionボタンを押下します。
![SNS_04.png](https://qiita-image-store.s3.amazonaws.com/0/46611/af71430b-a7d4-f98e-4a1e-22b5e3ddb906.png "SNS_04.png")

ProtocolにAmazon SQSを設定して、EndpointにSQSのARNを設定します。
Create subscriptionボタンを押下します。
![SNS_05.png](https://qiita-image-store.s3.amazonaws.com/0/46611/f25d73b7-9e6e-934d-181d-211a500ec623.png "SNS_05.png")

subscriberが空欄ですが、サブスクリプションが作成できました。
![SNS_06.png](https://qiita-image-store.s3.amazonaws.com/0/46611/7761b6d7-128d-c992-db33-c2735acbcc2b.png "SNS_06.png")

##SQS画面に遷移
キュー操作でSNSトピックへのキューのサブスクライブを設定します。
![SQS_03.png](https://qiita-image-store.s3.amazonaws.com/0/46611/d4f101ad-7160-c0dc-a0e2-a63c6ac655da.png "SQS_03.png")

トピックの選択のプルダウンで、先程作成したSNSトピックを選択して、`サブスクライブ`ボタンを押下します。
![SQS_04.png](https://qiita-image-store.s3.amazonaws.com/0/46611/5121ee9b-f204-dba1-10e2-fb29bb54e568.png "SQS_04.png")

うまくできたようです。
![SQS_05.png](https://qiita-image-store.s3.amazonaws.com/0/46611/daa10cab-320c-6c6e-1194-78a2a714a53b.png "SQS_05.png")

##SNSの画面に遷移
ちょっとあちこち行ってしまいましたが、無事にサブスクライブできました。
![SNS_07.png](https://qiita-image-store.s3.amazonaws.com/0/46611/f74e224c-4602-5c3b-05a3-2792b708b7ae.png "SNS_07.png")

試し切りをします。
`Publish to topic`ボタンを押下します。
![SNS_11.png](https://qiita-image-store.s3.amazonaws.com/0/46611/d0f8e4e3-dd3e-4e03-a1ea-ddf643f131ea.png "SNS_11.png")

適当に内容を記載して`publish message`ボタンを押下します。
![SNS_12.png](https://qiita-image-store.s3.amazonaws.com/0/46611/851a6226-e2e5-1549-d1e7-64afb2d4adac.png "SNS_12.png")

SQS画面を見ると、キューが一個溜まってますね。
![SQS_11.png](https://qiita-image-store.s3.amazonaws.com/0/46611/3f28f607-be91-c8c0-bf4a-390d9e3a0b3a.png "SQS_11.png")

#3. AWSユーザーを作成する
##IAMの画面に遷移
ユーザーを選択し、`新規ユーザーの作成`ボタンを押下します。
![IAM_01.png](https://qiita-image-store.s3.amazonaws.com/0/46611/b750f22e-d70d-8111-918e-18821a56ec92.png "IAM_01.png")

ユーザー名を入力して、ユーザーを作成します。
ここではDSaaS-SNSという名前にしました。
ユーザーを作成したら、Access KeyとSecret Keyを忘れずに保存してください。
![IAM_02.png](https://qiita-image-store.s3.amazonaws.com/0/46611/51a4584e-37ab-a001-5446-7452f39ee3a8.png "IAM_02.png")

ポリシーを選択して、`ポリシーの作成`ボタンを押下します。
![IAM_03.png](https://qiita-image-store.s3.amazonaws.com/0/46611/32ed17bf-6183-d69b-4b12-408e040433a9.png "IAM_03.png")

要はSNSにpublishする権限があればいいのですが、ここでは`独自のポリシーを作成`を選択します。
![IAM_04.png](https://qiita-image-store.s3.amazonaws.com/0/46611/7cee8ae9-cf5e-d078-df16-33240163b132.png "IAM_04.png")

参考情報[Deep Security Help Center](https://app.deepsecurity.trendmicro.com/Help.screen?isSearch=true&searchKey=Amazon%20SNS)記載のポリシーをベースに以下のように作成しました。
![IAM_05.png](https://qiita-image-store.s3.amazonaws.com/0/46611/eaddc859-d571-3650-4b5f-0982f9b31959.png "IAM_05.png")

コピペ用

```
{
   "Version": "2012-10-17",
   "Statement": [
      {
         "Action": [
            "sns:Publish"
         ],
         "Effect": "Allow",
         "Resource": "arn:aws:sns:us-west-2:XXXXXXXXXXXX:dsaas-sns"
      }
   ]
}
```
できました。
![IAM_06.png](https://qiita-image-store.s3.amazonaws.com/0/46611/85976095-5f0d-2972-589b-1d3af9674570.png "IAM_06.png")

作成したポリシーを選択して、ポリシーアクションからアタッチを選択します。
![IAM_07.png](https://qiita-image-store.s3.amazonaws.com/0/46611/c15b08ed-d8a2-462b-9c41-6fa1e7f0ab10.png "IAM_07.png")

先程作成したIAMユーザを選択して、`ポリシーのアタッチボタン`を押下します。
![IAM_08.png](https://qiita-image-store.s3.amazonaws.com/0/46611/592fe12b-25a7-30a4-2abc-17c816da8057.png "IAM_08.png")

#4. DSaaS上でSNSを設定する
DSaaSの管理画面にログインし、管理＞システム設定＞SIEMと遷移します。
Amazon SNSの`Publish Events to AWS Simple Notification Service`にチェックを入れて、作成したIAMユーザのアクセスキーとシークレットキー、および作成したSNSトピック名を入力します。
今回は、送信するイベントの種類は全て選択したままとします。
![DSaaS_01.png](https://qiita-image-store.s3.amazonaws.com/0/46611/01021235-2522-8050-0d56-0bad75e65dd3.png "DSaaS_01.png")

SQS画面でメッセージの着信を見てみましょう。
早速システムイベントが着信してますね。
![SQS_12.png](https://qiita-image-store.s3.amazonaws.com/0/46611/f8a1f26b-466a-8bb0-6cf7-7cfe44415348.png "SQS_12.png")

DSaaSのイベントをSNSトピックとしてSQSへキューイングすることろまでできました。
長くなったので今日はここまでにします。

お疲れ様でした。