SAP BTP 向け Microsoft Sentinel ソリューションをデプロイする

この記事では、SAP Business Technology Platform (BTP) システム用の Microsoft Sentinel ソリューションをデプロイする方法について説明します。 SAP BTP 向け Microsoft Sentinel ソリューションは、SAP BTP システムを監視および保護します。 BTP インフラストラクチャと BTP ベースのアプリから監査ログとアクティビティ ログを収集し、脅威、疑わしいアクティビティ、不正なアクティビティなどを検出します。 ソリューションの詳細情報をご確認ください

前提条件

開始する前に、以下のことを確認してください。

  • Microsoft Sentinel ソリューションが有効になっている。
  • 定義済みの Microsoft Sentinel ワークスペースがあり、そのワークスペースへの読み取りと書き込みのアクセス許可があります。
  • 組織では、(Cloud Foundry 環境内にある) SAP BTP を使用して SAP アプリケーションやその他のビジネス アプリケーションとの連携を効率化している。
  • (Cloud Foundry 環境内の BTP アカウントに対応した) SAP BTP アカウントがある。 SAP BTP 試用版アカウントを使用することもできます。
  • SAP BTP の監査ログ管理サービスとサービス キーがある (「BTP アカウントとソリューションを設定する」を参照)。
  • ターゲットの Microsoft Sentinel ワークスペースに対する Microsoft Sentinel 共同作成者ロールがある。

BTP アカウントとソリューションを設定する

BTP アカウントとソリューションを設定するには:

  1. BTP アカウントにサインインできるようになったら (「前提条件」を参照)、SAP BTP システムで監査ログ取得手順を実行します。

  2. SAP BTP コックピットで、[Audit Log Management Service] を選択します。

    BTP の [監査ログ管理サービス] の選択を示すスクリーンショット。

  3. 監査ログ管理サービスのインスタンスを BTP サブ アカウントに作成します。

    BTP サブアカウントのインスタンスの作成を示すスクリーンショット。

  4. サービス キーを作成し、urluaa.clientiduaa.clientecret、および uaa.url の値を記録します。 これらの値は、データ コネクタをデプロイするために必要です。

    これらのフィールド値の例を次に示します:

    • url: https://auditlog-management.cfapps.us10.hana.ondemand.com
    • uaa.clientid: 00001111-aaaa-2222-bbbb-3333cccc4444|auditlog-management!b1237
    • uaa.clientsecret: aaaaaaaa-0b0b-1c1c-2d2d-333333333333
    • uaa.url: https://trial.authentication.us10.hana.ondemand.com
  5. Azure portal にサインインします。

  6. Microsoft Sentinel サービスに移動します。

  7. [コンテンツ ハブ] を選択し、検索バーで「BTP」を検索します。

  8. SAP BTP を選択します。

  9. [インストール] を選択します。

    ソリューション コンポーネントを管理する方法の詳細については、すぐに使えるコンテンツの検出とデプロイに関するページを参照してください。

  10. [作成] を選択します

    SAP BTP 向け Microsoft Sentinel ソリューションの作成方法を示すスクリーンショット。

  11. ソリューションをデプロイするリソース グループとMicrosoft Sentinel ワークスペースを選択します。

  12. 検証に成功するまで [次へ] を選び、[作成] を選択します。

  13. ソリューションのデプロイが完了したら、Microsoft Sentinel ワークスペースに戻り、[データ コネクタ] を選択します。

  14. 検索バーに「BTP」と入力し、[SAP BTP] を選択します。

  15. [Open connector page](コネクタ ページを開く) を選択します。

  16. コネクタ ページで、一覧表示されている必要な前提条件を満たしていることを確認し、構成手順を完了します。 準備ができたら、[アカウントの追加] を選択します。

  17. 構成中に先ほど定義したパラメーターを指定します。 指定したサブアカウント名は、テーブル SAPBTPAuditLog_CL の列として投影され、複数のサブアカウントがある場合にログをフィルター処理するために使用できます。

    Note

    グローバル アカウントの監査を取得しても、サブアカウントの監査は自動的に取得されません。 監視するサブアカウントごとにコネクタ構成手順を実行し、グローバル アカウントについてもこの手順を実行してください。 以下のアカウント監査の構成に関する考慮事項を確認してください。

  18. BTP ログが Microsoft Sentinel ワークスペースに送られていることを確認してください:

    1. BTP サブアカウントにサインインし、サインイン、ユーザーの追加、アクセス許可の変更、設定の変更など、ログが生成されるアクティビティをいくつか実行します。
    2. ログが送られるようになるまで、20 分から 30 分待ちます。
    3. SAP BTP のコネクタ ページで、Microsoft Sentinel が BTP データを受信していることを確認するか、SAPBTPAuditLog_CL テーブルに直接クエリを実行します。
  19. これらのガイドラインに従って、ソリューションの一部として提供されるブック分析ルールを有効にします。

アカウント監査の構成を検討する

デプロイ プロセスの最後の手順は、グローバル アカウントとサブアカウント監査の構成を検討することです。

グローバル アカウント監査の構成

BTP コックピットでグローバル アカウントの監査ログの取得を有効にする場合: 監査ログ管理サービスを適用したいサブアカウントがディレクトリの下にある場合は、最初にディレクトリ レベルでサービスを適用する必要があります。 適用した後でのみ、サブアカウント レベルでサービスに資格を与えることができます。

サブアカウント監査の構成

サブアカウントの監査を有効にするには、SAP のサブアカウントの監査ログ取得 API に関するドキュメントの手順を実行します。

API ドキュメントでは、Cloud Foundry CLI を使用して監査ログの取得を有効にする方法について説明します。

UI を使用してログを取得することもできます:

  1. サブアカウントの SAP サービス マーケットプレースで、監査ログ管理サービスのインスタンスを作成します。
  2. 新しいインスタンスで、サービス キーを作成します。
  3. データ コネクタ UI で、サービス キーを表示し、構成手順 4 にから必要なパラメーター (urluaa.urluaa.clientiduaa.clientsecret) を取得します。

BTP クライアント シークレットをローテーションする

BTP サブアカウントのクライアント シークレットを定期的にローテーションすることをお勧めします。 次のサンプル スクリプトは、Azure Key Vault からフェッチした新しいシークレットで既存のデータ コネクタを更新するプロセスを示しています。

開始する前に、スクリプト パラメーターに必要な値を収集します。これには、次のような値が含まれます。

  • Microsoft Sentinel ワークスペースのサブスクリプション ID、リソース グループ、ワークスペース名。
  • キー コンテナーとキー コンテナー シークレットの名前。
  • 新しいシークレットで更新するデータ コネクタの名前。 データ コネクタの名前を特定するには、Microsoft Sentinel の [データ コネクタ] ページで SAP BTP データ コネクタを開きます。 データ コネクタ名の構文は、BTP_{コネクタ} です。
param(
    [Parameter(Mandatory = $true)] [string]$subscriptionId,
    [Parameter(Mandatory = $true)] [string]$workspaceName,
    [Parameter(Mandatory = $true)] [string]$resourceGroupName,
    [Parameter(Mandatory = $true)] [string]$connectorName,
    [Parameter(Mandatory = $true)] [string]$clientId,
    [Parameter(Mandatory = $true)] [string]$keyVaultName,
    [Parameter(Mandatory = $true)] [string]$secretName
)

# Import the required modules
Import-Module Az.Accounts
Import-Module Az.KeyVault

try {
    # Login to Azure
    Login-AzAccount

    # Retrieve BTP client secret from Key Vault
    $clientSecret = (Get-AzKeyVaultSecret -VaultName $keyVaultName -Name $secretName).SecretValue
    if (!($clientSecret)) {
        throw "Failed to retrieve the client secret from Azure Key Vault"
    }

    # Get the connector from data connectors API
    $path = "/subscriptions/{0}/resourceGroups/{1}/providers/Microsoft.OperationalInsights/workspaces/{2}/providers/Microsoft.SecurityInsights/dataConnectors/{3}?api-version=2024-01-01-preview" -f $subscriptionId, $resourceGroupName, $workspaceName, $connectorName
    $connector = (Invoke-AzRestMethod -Path $path -Method GET).Content | ConvertFrom-Json
    if (!($connector)) {
        throw "Failed to retrieve the connector"
    }

    # Add the updated client ID and client secret to the connector
    $connector.properties.auth | Add-Member -Type NoteProperty -Name "clientId" -Value $clientId
    $connector.properties.auth | Add-Member -Type NoteProperty -Name "clientSecret" -Value ($clientSecret | ConvertFrom-SecureString -AsPlainText)

    # Update the connector with the new auth object
    Invoke-AzRestMethod -Path $path -Method PUT -Payload ($connector | ConvertTo-Json -Depth 10)
}
catch {
    Write-Error "An error occurred: $_"
}