Workflow Automation によるセキュリティワークフローの自動化
選択した
Datadog サイト (
) では Cloud Security Management Misconfigurations はサポートされていません。
Datadog ワークフローオートメーションでは、インフラストラクチャーやツールに接続するアクションで構成されるワークフローを構築することで、エンドツーエンドのプロセスをオーケストレーションし、自動化することができます。
Cloud Security Management (CSM) で Workflow Automation を使って、セキュリティ関連のワークフローを自動化します。例えば、対話型の Slack メッセージ経由で公開 Amazon S3 バケットへのアクセスをブロックすることや、自動的に Jira 課題を作成してチームに割り当てる ことを可能にするワークフローを作成できます。
トリガーとソースの仕組みを理解する
Workflow Automation では、モニター、セキュリティシグナル、またはカスタムスケジュールから手動または自動的にワークフローをトリガーすることができます。本記事のワークフロー例では、サイドパネルの Actions > Run Workflow ボタンをクリックすることで、ワークフローが手動でトリガーされています。
ワークフローをトリガーするとき、トリガーイベントのソース ID をワークフローの次のステップに渡さなければなりません。この記事の例では、トリガーイベントは新しいセキュリティの所見です。どちらの場合も、ソース ID はワークフローの最初のステップでソースオブジェクト変数を使用して指定されます。
ワークフローの構築
ワークフローを構築するには、すぐに使えるブループリントからあらかじめ構成されたフローを使用することも、カスタムワークフローを作成することもできます。ワークフローの作成方法の詳細については、Workflow Automation のドキュメントを参照してください。
Slack 経由で Amazon S3 バケットへのアクセスをブロックする
この例では、公開 Amazon S3 バケットが検出されたときに、対話型の Slack メッセージを送信する修復ワークフローを作成します。Approve または Reject をクリックすることで、S3 バケットへのアクセスを自動的にブロックしたり、措置を取らないことを選択することができます。
注: このワークフローを構築するには、Slack インテグレーションを構成する必要があります。
- Workflow Automation ページで、New Workflow をクリックします。
- ワークフローの名前を入力します。
- トリガーに Manual を選択し、Create をクリックします。
- ワークフロービルダーを使ってワークフローにステップを追加するには Add a step to get started をクリックします。または、JSON エディターを使用してワークフローを構築するには Edit JSON Spec をクリックします。
セキュリティ誤構成の取得
セキュリティ誤構成を取得してワークフローに渡すには、Get security finding アクションを使用します。このアクションは {{ Source.securityFinding.id }}
ソースオブジェクト変数を使用して、Get a finding API エンドポイントから誤構成の詳細を取得します。
- Add a step to get started をクリックして、ワークフローに最初のステップを追加します。
- Get security finding アクションを検索して選択し、ワークフローキャンバスにステップとして追加します。
- ワークフローキャンバスのステップをクリックして構成します。
- Finding ID には、
{{ Source.securityFinding.id }}
を入力します。
JS 関数の追加
次に、JavaScript Data Transformation Function アクションをキャンバスに追加し、誤構成のタグからリージョン名を返すように構成します。
- ワークフローキャンバスのプラス (
+
) アイコンをクリックして、別のステップを追加します。 - JS Function アクションを検索して選択し、ワークフローキャンバスにステップとして追加します。
- ワークフローキャンバスのステップをクリックし、スクリプトエディターに以下を貼り付けます。
// 誤構成タグからリージョン情報を取得します
// トリガーやステップのデータにアクセスするには `$` を使用します。
// Lodash にアクセスするには `_` を使用します。
// https://lodash.com/ を参照してください。
let tags = $.Steps.Get_security_finding.tags
let region = tags.filter(t => t.includes('region:'))
if(region.length == 1){
return region[0].split(':')[1]
} else {
return '';
}
Slack アクションの追加
- ワークフローキャンバスのプラス (
+
) アイコンをクリックして、別のステップを追加します。 - Slack の Make a decision アクションを検索して選択し、ワークフローキャンバスにステップとして追加します。
- ワークフローキャンバスのステップをクリックし、以下の情報を入力します。
- Workspace: Slack ワークスペースの名前。
- Channel: Slack メッセージの送信先チャンネル。
- Prompt text: Slack メッセージの選択ボタンのすぐ上の表示テキスト。例: “リージョン
{{ Steps.GetRegion.data }}
で {{ Steps.Get_security_finding.resource }}
のパブリックアクセスをブロックしますか?”
ワークフローの承認
- ワークフローキャンバスの Approve の下にあるプラス (
+
) アイコンをクリックして、別のステップを追加します。 - Amazon S3 の Block Public Access アクションを検索して選択し、ワークフローキャンバスにステップとして追加します。
- ワークフローキャンバスのステップをクリックし、以下の情報を入力します。
- Connection: AWS インテグレーションのワークフロー接続名。
- Region:
{{ Steps.GetRegion.data }}
- Bucket name:
{{ Steps.Get_security_finding.resource }}
- ワークフローキャンバスの Block public access ステップの下にあるプラス (
+
) アイコンをクリックして、別のステップを追加します。 - Slack の Send message アクションを検索して選択し、ワークフローキャンバスにステップとして追加します。
- ワークフローキャンバスのステップをクリックし、以下の情報を入力します。
- Workspace: Slack ワークスペースの名前。
- Channel: Slack メッセージの送信先チャンネル。
- Message text: Slack メッセージに表示されるテキスト。例:
S3 バケット `{{ Steps.Get_security_finding.resource }}` は正常にブロックされました。AWS API のレスポンス:
```{{ Steps.Block_public_access }}```
この問題は、次にリソースがスキャンされるときに修正済みとしてマークされます。これには最大で 1 時間程度かかります。
拒否ワークフロー
- ワークフローキャンバスの Reject の下にあるプラス (
+
) アイコンをクリックして、別のステップを追加します。 - Slack の Send message アクションを検索して選択し、ワークフローキャンバスにステップとして追加します。
- ワークフローキャンバスのステップをクリックし、以下の情報を入力します。
- Workspace: Slack ワークスペースの名前。
- Channel: Slack メッセージの送信先チャンネル。
- Message text: Slack メッセージに表示されるテキスト。例: 「ユーザーはアクションを拒否しました。」
- Save をクリックします。
Jira 課題の自動作成と割り当て
この例では、セキュリティの所見が検出されたときに、Jira 課題を作成し、適切なチームに割り当てる自動的なチケットルーティングワークフローを作成します。
注: このワークフローを構築するには、Jira インテグレーションを構成する必要があります。
- Workflow Automation ページで、New Workflow をクリックします。
- ワークフローの名前を入力します。
- トリガーに Manual を選択し、Create をクリックします。
- ワークフロービルダーを使ってワークフローにステップを追加するには Add a step to get started をクリックします。または、JSON エディターを使用してワークフローを構築するには Edit JSON Spec をクリックします。
セキュリティ問題を取得する
所見を取得してワークフローに渡すには、Get security finding アクションを使用します。このアクションは {{ Source.securityFinding.id }}
ソースオブジェクト変数を使用して、Get a finding API エンドポイントから所見の詳細を取得します。
- Add a step to get started をクリックして、ワークフローに最初のステップを追加します。
- Get security finding アクションを検索して選択し、ワークフローキャンバスにステップとして追加します。
- ワークフローキャンバスのステップをクリックして構成します。
- Security ID には、
{{ Source.securityFinding.id }}
を入力します。
JS 関数の追加
次に、JavaScript データ変換関数アクションをキャンバスに追加し、所見のタグからチーム名を返すように構成します。
- ワークフローキャンバスのプラス (
+
) アイコンをクリックして、別のステップを追加します。 - JS Function アクションを検索して選択し、ワークフローキャンバスにステップとして追加します。
- ワークフローキャンバスのステップをクリックし、スクリプトエディターに以下を貼り付けます。
// 所見タグからチーム情報を取得します
// トリガーやステップのデータにアクセスするには `$` を使用します。
// Lodash にアクセスするには `_` を使用します。
// https://lodash.com/ を参照してください。
let tags = $.Steps.Get_security_finding.tags
let team = tags.filter(t => t.includes('team:'))
if(region.length == 1){
return team[0].split(':')[1]
} else {
return '';
}
Jira アクションの追加
- ワークフローキャンバスのプラス (
+
) アイコンをクリックして、別のステップを追加します。 - Create issue Jira アクションを検索して選択し、ワークフローキャンバスにステップとして追加します。
- ワークフローキャンバスのステップをクリックし、以下の情報を入力します。
- Jira account: Jira アカウントの URL。
- Project:
{{ Steps.GetTeamInfo.data }}
- Summary:
{{ Steps.Get_security_finding.rule.name }}
- Save をクリックします。
ワークフローをトリガーする
所見、誤構成、リソースの各サイドパネルから既存のワークフローをトリガーできます。
サイドパネルで、Actions > Run Workflow をクリックし、実行するワークフローを選択します。ワークフローによっては、インシデントの詳細や重大度、影響を受ける S3 バケット名、アラートの送信先 Slack チャンネルなど、追加の入力パラメーターを入力する必要がある場合があります。
ワークフロー実行後、サイドパネルに追加情報が表示されます。リンクをクリックすると、ワークフローを表示できます。
その他の参考資料