ストレージアカウントの診断設定を実装する -Bicep編

Bicepを利用してストレージアカウントの診断設定を実装する機会がありましたので、簡単に紹介したいと思います。

※本記事は2023年7月時点での内容になります。

診断設定とは

診断設定とは、各AzureリソースのログやメトリックをLogAnalyticsワークスペースなどに送信する設定となります。

例えば、Blobストレージに対して診断設定を行った場合、いつ、だれがBlobに対してどのような動作をしたのかなどの情報を送信することが可能となります。

learn.microsoft.com

ログの出力先として指定可能なAzureリソース

  • LogAnalyticsワークスペース
  • Azure Storage Account
  • Event Hub

Bicepで診断設定の実装

Azure Blob Storageに対して診断設定を行い、ログやメトリックの送信先をLogAnalyticsワークスペースとして実装します。

前提条件

Bicepを利用して診断設定を実装する際の前提条件は以下になります。

前提条件 概要
Bicep実行環境の準備、リソースグループ作成

Bicepを試してみた-リソースグループ作成編- - JBS Tech Blog」を参照してBicep実行環境の準備、リソースグループ作成を行う

RBAC権限の追加 共同作成者、所有者など
ファイルの準備 「DiagnosticSettings.bicep」というファイルを用意して、Visual Studio Codeで開く
Powershell、Azモジュールのインストール Azure仮想ネットワークピアリング実装してみた -Powershell編 - JBS Tech Blog」を参照してPowershell、Azモジュールのインストールを行う

パラメータシートの定義

DiagnosticSettings.bicepファイルを開き、パラメータ設定を行います。

設定値は以下になります。

//location parameter
param location string = 'japaneast'

// logAnalyticsWorkspace parameter
param loganaName string = 'logana01'

//Storage Account parameter
param storageName string = 'dsdemost001' //一意の名前である必要あり
param stsku string = 'Standard_LRS'

//diagnosticLogs parameter
param diagnosticLogsName string = 'StorageblobdiagnosticLogs'

LogAnalyticsワークスペースの作成

ログの送信先となるLogAnalyticsワークスペースの作成を行います。

DiagnosticSettings.bicepファイルに「logana」と入力して事前に定義されたスニペットから「res-log-analytics-workspace」を選択します。

赤枠部分を上記で設定した変数に変更します。

設定値は下記の通りになります。

'Microsoft.OperationalInsights/workspaces@2020-10-01' = {
name: LoganaName
  location: location
  properties: {
    sku: {
      name: 'Free'
    }
  }
}

ストレージアカウントの作成

ストレージアカウントの作成を行います。

「st」と入力して事前に定義されたスニペットから「res-storage」を選択します。

赤枠部分を上記で設定した変数に変更します。

設定値は下記の通りになります。

resource storageaccount 'Microsoft.Storage/storageAccounts@2021-02-01' = {
  name: storageName
  location: location
  kind: 'StorageV2'
  sku: {
    name: stsku
  }
}

Blobストレージの作成

Blobストレージの作成を行います。

Blobストレージの作成は既定で定義されたスニペットに含まれていない為、以下を利用します。

resource blob 'Microsoft.Storage/storageAccounts/blobServices@2022-09-01' = {
  name: 'default'
  parent: storageaccount
  properties: {}
}

parentプロパティを設定することで依存関係を指定することが可能です。

Blobストレージはストレージアカウントに含まれる必要がある為、今回は上記で作成したストレージアカウント(変数:storageaccount)を指定しています。

診断設定

ストレージアカウントの診断設定を行います。

診断設定は既定で定義されたスニペットに含まれていない為、以下を利用します。

resource diagnosticLogs 'Microsoft.Insights/diagnosticSettings@2021-05-01-preview' = {
  name: diagnosticLogsName
scope: blob
  properties: {
    workspaceId: logAnalyticsWorkspace.id
    logs: [
      {
        category: 'StorageRead'
        enabled: true
      }
      {
        category: 'StorageWrite'
        enabled: true
      }
      {
        category: 'StorageDelete'
        enabled: true
      }
    ]
    metrics: [
      {
        category: 'Transaction'
        enabled: true
      }
    ]
  }
}

scopeプロパティではどのリソースに対して診断設定を行うのか指定します。今回はBlobストレージに対して診断設定を行う為、変数:blobを指定します。

workspaceIdでは送信先となるLogAnalyticsワークスペースのidを指定します。

デプロイ

Poweshell でサインインします。

Connect-AzAccount

下記コマンドを実行して、リソースを作成します。

$RGName01 = "testrg01"  //リソースグループ名
$filepath = "実行ファイルのパス(/DiagnosticSettings.bicep)"

New-AzResourceGroupDeployment -ResourceGroupName $RGName01 -TemplateFile $filepath

パラメータの値を変更したい場合は下記のように記載します。

New-AzResourceGroupDeployment -ResourceGroupName $RGName01 -TemplateFile $filepath -パラメータ変数値 "値"

診断設定の確認

問題なく設定されていることを確認します。

おわりに

Bicep便利なので、ぜひ使ってみてください!

執筆担当者プロフィール
和田 剣斗

和田 剣斗(日本ビジネスシステムズ株式会社)

業務では主にAzureに携わっています。趣味はサウナや資産運用です。最近はテントサウナにはまっています。

担当記事一覧