この記事はAzure DevOpsアドベントカレンダー22日目の記事です。
勘違いしていて、記事の順番を変えました。ちゃんと紹介して…いなかったので、少し前からパブリックプレビューになったDefender for DevOpsのエージェントレススキャンというサービスをご存じでしょうか?
GitHub Advanced Security( for Azure DevOps)でもなんでもそうですが、レポジトリや成果物に対してスキャンをするには何らかの明示的な指示が必要です。ここでいろいろ設定する余地はありますが、そんなことしなくても必ず設定してほしいとか、管理側で強制したいとか、Azureポータルで管理したいとかいろいろ理由はあります。
そんな場合、Defender for DevOpsのエージェントレススキャンを使います。やってみましょう。
Defender for Cloudポータル
Azureポータルのセットアップを開きます。一番右のadditional envionmentをクリックします。なお、この機能を使うには有償版のDefender for Cloud (Defender CSPM)を有効にする必要があります。
コードレポジトリはGitHub, Azure DevOps, GitLabがサポートされています。Azure DevOpsを選択します。
サブスクリプション、リソースグループ名、コネクター名、Locationを選択します。リージョンによっては使えないかもしれないので、気を付けてください。
エージェントレススキャンをONにします。
Azure DevOpsの認証を行います。同じEntraに接続されている、Azure DevOps organizationが全部対象になります。また、「既存のすべてのorganization」か「既存及び今後作成されるすべてのorganization」のどちらかを選びます。通常は上の「既存及び今後作成されるすべてのorganization」を選べばいいです。接続後、YAMLに書くことなくスキャンが行われます。
YAMLでビルドしてみる
今回こんなYAMLを用意してみました。Azure Container Appsのテンプレートそのままです。見てわかる通り、YAMLには余計なものはありません。しかし実行してみると。
Microsoft Defender for DevOps Container Mapping start
というタスクが自動的に差し込まれています。終了時にはEndタスクも入っています。
AzureポータルではこのようにGitHub Advanced Security for Azure DevOpsが無効であることやpull requestの状態がわかります。セキュリティの警告があればそれも表示されます。Azure DevOpsないだけではなく、Azureからも管理できるDefender for DevOpsの活用も考えてみてください。