SAP ERP を Google SecOps と統合する

このドキュメントでは、SAP ERP を Google Security Operations と統合する方法について説明します。

SAP ERP 統合により、Cloud Run ゲートウェイ サービスを介して Google SecOps が SAP ERP 環境に接続されます。Google SecOps で SAP 環境をモニタリングして保護する方法については、Google SecOps で SAP アプリケーションを保護するをご覧ください。

ユースケース

SAP ERP 統合では、Google SecOps の機能を使用して次のユースケースをサポートします。

  • 侵害された SAP ユーザー アカウントを封じ込める: 不審なアクティビティ、認証情報の不正使用、不正な権限昇格が検出された場合、自動インシデント対応ハンドブックの実行中に SAP ユーザー アカウントを直ちにロックします。

  • アクティブなユーザー セッションを終了する: アカウントの不正使用やポリシー違反が発生した後に、ターゲット ユーザー名とクライアントのアクティブな SAP セッションを終了して、進行中のアクセスを取り消します。

  • セキュリティ監査ロギングを適用する: ターゲットの SAP インスタンスとクライアントで SAP セキュリティ監査ログをリモートで有効にして、重要なアプリケーション セキュリティ イベントが記録されるようにします。

  • ゲートウェイ接続を検証する: Google SecOps と Cloud Run ゲートウェイ サービス間の Google Cloud 認証とネットワーク接続を確認します。

始める前に

Google SecOps で SAP ERP 統合を構成する前に、次の前提条件の手順を完了します。

  1. Cloud Run SAP RFC Gateway をデプロイして構成し、アクションを SAP ERP インスタンスに転送します。

  2. Workload Identity またはサービス アカウントの JSON キーを使用して、 Google Cloud 認証と IAM 権限を構成します。

  3. ターゲット SAP クライアントのゲートウェイ通信ユーザーに SAP 権限を構成します。

  4. Google SecOps、Cloud Run サービス、SAP ERP インスタンス間のネットワーク接続を確認します。

Cloud Run SAP RFC Gateway をデプロイして構成する

SAP ERP 統合は、Cloud Run SAP RFC Gateway サービスを介して SAP システムと通信します。このサービスは、Google SecOps からターゲット SAP インスタンスにアクションを安全に転送します。

Cloud Run ゲートウェイ サービスがデプロイされ、各ターゲット SAP インスタンス(SAP Instance Name)と 3 桁の SAP クライアント(SAP Client Number)の接続の詳細が構成されていることを確認します。Cloud Run Service URL 統合パラメータの Cloud Run サービスの HTTPS URL を記録します。

Google Cloud 認証と IAM 権限を構成する

Cloud Run ゲートウェイ サービスへのリクエストを認証するには、次のいずれかの方法で Google Cloud サービス アカウントを構成します。

  • Workload Identity(推奨): サービス アカウントの権限借用を使用するため、静的 JSON キーをダウンロードまたは管理する必要はありません。
  • サービス アカウントの JSON キー: ダウンロードした JSON キーファイルを使用します。この方法は、Workload Identity を構成できない場合にのみ使用してください。Service Account JSON と Workload Identity Email の両方を指定すると、統合では Service Account JSON が使用されます。

Google CloudIAM ロールを割り当てるときは、最小権限の原則に従います。roles/owner や roles/editor などの広範な管理ロールを付与しないでください。次の表に示す最小限のロールのみを付与します。

プリンシパル ターゲット リソース 必要な IAM ロール 目的
サービス アカウント(Workload Identity Email または Service Account JSON で構成) Cloud Run SAP RFC Gateway サービス Cloud Run 起動元(roles/run.invoker) サービス アカウントが Cloud Run ゲートウェイ サービスを呼び出せるようにします。
Google SecOps インスタンス ID(Workload Identity Email を使用する場合のみ) Workload Identity Email で指定されたサービス アカウント サービス アカウント トークン作成者(roles/iam.serviceAccountTokenCreator) ゲートウェイを呼び出すときに、Google SecOps インスタンスがサービス アカウントの権限を借用できるようにします。

Workload Identity で認証する(推奨)

Workload Identity を使用して認証するには、サービス アカウントを作成し、Cloud Run サービスを呼び出すアクセス権を付与して、Google SecOps インスタンスにそのサービス アカウントの権限借用を許可します。

サービス アカウントを作成して Cloud Run へのアクセス権を付与する
  1. Google Cloud コンソールで、[IAM と管理] > [サービス アカウント] に移動します。

  2. [サービス アカウントを作成] をクリックし、サービス アカウントの名前を入力して、[作成して続行] をクリックします。

  3. [完了] をクリックしてサービス アカウントの作成を完了し、そのメールアドレスをコピーします。

  4. Google Cloud コンソールで、[Cloud Run] に移動し、SAP RFC Gateway サービスを選択します。

  5. 行く安全または権限タブをクリックしてクリック元金を追加する。

  6. [新しいプリンシパル] フィールドに、サービス アカウントのメールアドレスを貼り付けます。

  7. [ロールを選択] メニューで [Cloud Run 起動元](roles/run.invoker)を選択し、[保存] をクリックします。

Google SecOps インスタンスに権限借用の権限を付与する
  1. Google SecOps で、[Content Hub] > [Response Integrations] に移動します。

  2. [SAP ERP] インテグレーションを選択し、Cloud Run Service URL を入力して、Workload Identity Email にサービス アカウントのメールアドレスを入力します。

  3. [保存] > [テスト] をクリックします。権限借用の権限を付与する前に、テストは失敗するはずです。

  4. [テスト] の横にある close_small をクリックし、エラー メッセージ(gke-init-python@PROJECT.iam.gserviceaccount.com または soar-python@TENANT_PROJECT.iam.gserviceaccount.com の形式)で Google SecOps インスタンス サービス アカウントのメールアドレスを見つけます。このメールアドレスをコピーします。

  5. Google Cloud コンソールで、[IAM と管理] > [サービス アカウント] に移動し、サービス アカウントを選択します。

  6. [権限] > [アクセス権を付与] に移動します。

  7. [新しいプリンシパル] に、コピーした Google SecOps インスタンスのメールアドレスを貼り付けます。

  8. [ロールを割り当てる] で、[サービス アカウント トークン作成者](roles/iam.serviceAccountTokenCreator)を選択し、[保存] をクリックします。

サービス アカウントの JSON キーで認証する

Workload Identity を使用できない場合は、サービス アカウントを作成して JSON キーファイルを抽出します。

  1. Google Cloud コンソールで、[IAM と管理] > [サービス アカウント] に移動します。

  2. 既存のサービス アカウントを選択するか、[サービス アカウントを作成] をクリックして専用のサービス アカウントを作成します。

  3. サービス アカウントに、Cloud Run SAP RFC Gateway サービスに対する Cloud Run 起動元(roles/run.invoker)ロールがあることを確認します。

  4. サービス アカウントを選択し、[キー] > [キーを追加] > [新しいキーを作成] の順に移動します。

  5. 鍵のタイプとして [JSON] を選択し、[作成] をクリックします。JSON キーファイルがパソコンにダウンロードされます。

  6. ダウンロードしたファイルをテキスト エディタで開き、JSON コンテンツ全体をコピーして、Google SecOps の Service Account JSON パラメータに貼り付けます。

SAP 権限を構成する

各ターゲット SAP クライアントで、Cloud Run ゲートウェイで構成された SAP 通信ユーザーに、実行するアクションに必要な最小限の権限のみを付与します。

アクション 必要な SAP 権限
監査ログを有効にする ターゲット SAP クライアントで SAP セキュリティ監査ログをリモートで有効にする権限。
ユーザー セッションを削除する ターゲット SAP クライアントでアクティブなユーザー セッションを終了する TH_DELETE_USER 関数モジュールを実行する権限。
SAP ユーザーをロックする ターゲット SAP クライアントでユーザー アカウントをロックする権限。

ネットワーク接続を確認する

環境が次のネットワーク要件を満たしていることを確認します。

  • Google SecOps(またはリモート エージェント)が HTTPS(ポート 443)経由で Cloud Run SAP RFC Gateway URL にアクセスできる。
  • Cloud Run SAP RFC Gateway サービスが、ターゲットの SAP ERP インスタンスにネットワーク接続されている。

統合のパラメータ

SAP ERP 統合には、次のパラメータが必要です。

パラメータ 説明
Cloud Run Service URL

必須。

SAP ERP インスタンスに接続する Cloud Run ゲートウェイ サービスの HTTPS URL。

Service Account JSON

省略可。

Cloud Run ゲートウェイ サービスでの認証に使用されるサービス アカウントの JSON キー。

Service Account JSON と Workload Identity Email の両方が指定されている場合、統合では Service Account JSON が使用されます。

Workload Identity Email

省略可。

Workload Identity 認証に使用されるサービス アカウントのメールアドレス(推奨)。

Service Account JSON が空の場合に使用されます。

Verify SSL

省略可。

選択すると、統合は Cloud Run ゲートウェイ サーバーに接続するときに SSL 証明書を検証します。

デフォルトで有効になっています。

Google SecOps で統合を構成する方法については、統合を構成するをご覧ください。

必要に応じて、後の段階で変更できます。統合インスタンスを構成すると、ハンドブックで使用できます。複数のインスタンスを構成してサポートする方法の詳細については、複数のインスタンスのサポートをご覧ください。

操作

アクションの詳細については、 デスクから保留中のアクションに対応するとケースで手動アクションを実行するをご覧ください。

監査ログを有効にする

監査ログを有効にするアクションを使用して、Cloud Run SAP RFC Gateway を介してターゲット SAP インスタンスとクライアントで SAP セキュリティ監査ログを有効にします。

このアクションは Google SecOps エンティティに対しては実行されません。

アクションへの入力

監査ログを有効にするアクションには、次のパラメータが必要です。

パラメータ 説明
SAP Client Number

必須。

3 桁の数字の SAP クライアント番号。

SAP Instance Name

必須。

Cloud Run SAP RFC Gateway で構成されたターゲット SAP インスタンスの名前。

アクションの出力

監査ログを有効にするアクションでは、次の出力が提供されます。

アクションの出力タイプ 対象
ケースウォールのアタッチメント 利用不可
ケースウォールのリンク 利用不可
ケースウォール テーブル 利用不可
拡充テーブル 利用不可
JSON の結果 利用可能
出力メッセージ 利用可能
スクリプトの結果 利用可能
JSON の結果

次の例は、監査ログを有効にするアクションを使用した場合に受信される JSON 結果の出力を示しています。

{
  "status": "SUCCESS",
  "functionId": "ACTIVATE_AUDIT_LOG",
  "sap_instance": "PRD",
  "client": "100",
  "return": [
    {
      "type": "S",
      "message": "Security Audit Log activated successfully."
    }
  ]
}
出力メッセージ

監査ログを有効にするアクションは、次の出力メッセージを返すことができます。

出力メッセージ メッセージの説明
Successfully activated SAP audit log. アクションが成功しました。
Error executing action - "Activate Audit Log". Reason: Failed to activate audit log. SAP Error: ERROR_SUMMARY

SAP システムがエラーを返したため、アクションが失敗しました。

ターゲットの SAP インスタンスとクライアントにアクセスできること、ゲートウェイ通信ユーザーにセキュリティ監査ログを有効にする権限があることを確認します。

Error executing action - "Activate Audit Log". Reason: SAP Client Number must be a 3-digit numeric string (got 'SAP_CLIENT_NUMBER').

アクションのパラメータ検証に失敗しました。

SAP Client Number には、有効な 3 桁の数字文字列(100 など)を指定します。

Error executing action - "Activate Audit Log". Reason: Proxy request failed (HTTP STATUS_CODE): ERROR_DETAIL

Cloud Run SAP RFC Gateway へのリクエストが失敗しました。

Cloud Run Service URL、サービス アカウントの権限、ゲートウェイ ログを確認します。

スクリプトの結果

次の表に、監査ログを有効にするアクションを使用した場合のスクリプト結果の出力値を示します。

スクリプトの結果名 値
is_success true または false

ユーザー セッションを削除する

ユーザー セッションを削除アクションを使用して、Cloud Run SAP RFC Gateway を介して SAP でユーザーのアクティブなセッションを終了します。

このアクションは Google SecOps エンティティに対しては実行されません。

アクションへの入力

ユーザー セッションの削除アクションには、次のパラメータが必要です。

パラメータ 説明
SAP Username

必須。

アクティブなセッションを終了する SAP ユーザー名。

SAP Client Number

必須。

3 桁の数字の SAP クライアント番号。

SAP Instance Name

必須。

Cloud Run SAP RFC Gateway で構成されたターゲット SAP インスタンスの名前。

アクションの出力

Delete User Session アクションは、次の出力を提供します。

アクションの出力タイプ 対象
ケースウォールのアタッチメント 利用不可
ケースウォールのリンク 利用不可
ケースウォール テーブル 利用不可
拡充テーブル 利用不可
JSON の結果 利用可能
出力メッセージ 利用可能
スクリプトの結果 利用可能
JSON の結果

次の例は、ユーザー セッションを削除アクションを使用した場合に受信される JSON 結果の出力を示しています。

{
  "status": "SUCCESS",
  "functionId": "DELETE_USER_SESSION",
  "sap_instance": "PRD",
  "client": "100",
  "return": [
    {
      "type": "S",
      "message": "User session terminated."
    }
  ]
}
出力メッセージ

Delete User Session アクションは、次の出力メッセージを返すことがあります。

出力メッセージ メッセージの説明
Successfully deleted user session for SAP_USERNAME. アクションが成功しました。
Error executing action - "Delete User Session". Reason: Failed to delete user session for SAP_USERNAME. SAP Error: ERROR_SUMMARY

SAP システムがエラーを返したため、アクションが失敗しました。

指定した SAP クライアントにユーザー名が存在し、ゲートウェイ通信ユーザーに TH_DELETE_USER を実行する権限があることを確認します。

Error executing action - "Delete User Session". Reason: SAP Client Number must be a 3-digit numeric string (got 'SAP_CLIENT_NUMBER').

アクションのパラメータ検証に失敗しました。

SAP Client Number には、有効な 3 桁の数字文字列(100 など)を指定します。

Error executing action - "Delete User Session". Reason: Proxy request failed (HTTP STATUS_CODE): ERROR_DETAIL

Cloud Run SAP RFC Gateway へのリクエストが失敗しました。

Cloud Run Service URL、サービス アカウントの権限、ゲートウェイ ログを確認します。

スクリプトの結果

次の表に、ユーザー セッションの削除アクションを使用した場合のスクリプト結果の出力値を示します。

スクリプトの結果名 値
is_success true または false

SAP ユーザーをロックする

SAP ユーザーをロックするアクションを使用して、Cloud Run SAP RFC Gateway を介して SAP で指定されたユーザー アカウントをロックします。

このアクションは Google SecOps エンティティに対しては実行されません。

アクションへの入力

Lock SAP User アクションには、次のパラメータが必要です。

パラメータ 説明
SAP Username

必須。

ロックするアカウントの SAP ユーザー名。

SAP Client Number

必須。

3 桁の数字の SAP クライアント番号。

SAP Instance Name

必須。

Cloud Run SAP RFC Gateway で構成されたターゲット SAP インスタンスの名前。

アクションの出力

SAP ユーザーをロックするアクションでは、次の出力が提供されます。

アクションの出力タイプ 対象
ケースウォールのアタッチメント 利用不可
ケースウォールのリンク 利用不可
ケースウォール テーブル 利用不可
拡充テーブル 利用不可
JSON の結果 利用可能
出力メッセージ 利用可能
スクリプトの結果 利用可能
JSON の結果

次の例は、SAP ユーザーをロックするアクションを使用した場合に受信される JSON 結果の出力を示しています。

{
  "status": "SUCCESS",
  "functionId": "USER_LOCK",
  "sap_instance": "PRD",
  "client": "100",
  "return": [
    {
      "type": "S",
      "message": "User locked successfully."
    }
  ]
}
出力メッセージ

SAP ユーザーをロックするアクションは、次の出力メッセージを返すことができます。

出力メッセージ メッセージの説明
Successfully locked user SAP_USERNAME. アクションが成功しました。
Error executing action - "Lock SAP User". Reason: Failed to lock user SAP_USERNAME. SAP Error: ERROR_SUMMARY

SAP システムがエラーを返したため、アクションが失敗しました。

指定された SAP クライアントにユーザー名が存在すること、およびゲートウェイ通信ユーザーにユーザー アカウントをロックする権限があることを確認します。

Error executing action - "Lock SAP User". Reason: SAP Client Number must be a 3-digit numeric string (got 'SAP_CLIENT_NUMBER').

アクションのパラメータ検証に失敗しました。

SAP Client Number には、有効な 3 桁の数字文字列(100 など)を指定します。

Error executing action - "Lock SAP User". Reason: Proxy request failed (HTTP STATUS_CODE): ERROR_DETAIL

Cloud Run SAP RFC Gateway へのリクエストが失敗しました。

Cloud Run Service URL、サービス アカウントの権限、ゲートウェイ ログを確認します。

スクリプトの結果

次の表に、SAP ユーザーをロックするアクションを使用した場合のスクリプト結果の出力値を示します。

スクリプトの結果名 値
is_success true または false

Ping

Ping アクションを使用して、SAP ERP Cloud Run ゲートウェイ サービスへの認証とネットワーク接続をテストします。

このアクションは Google SecOps エンティティに対しては実行されません。

アクションへの入力

なし

アクションの出力

Ping アクションは、次の出力を提供します。

アクションの出力タイプ 対象
ケースウォールのアタッチメント 利用不可
ケースウォールのリンク 利用不可
ケースウォール テーブル 利用不可
拡充テーブル 利用不可
JSON の結果 利用不可
出力メッセージ 利用可能
スクリプトの結果 利用可能
出力メッセージ

Ping アクションは、次の出力メッセージを返すことができます。

出力メッセージ メッセージの説明
Successfully connected to the SAP ERP server with the provided connection parameters! アクションが成功しました。
Failed to connect to the SAP ERP server! Error is Failed to generate Google Cloud authentication token. Verify service account credentials and permissions.

アクションで Google Cloud 認証トークンを生成できませんでした。

Service Account JSON または Workload Identity Email の構成を確認します。

Failed to connect to the SAP ERP server! Error is Authentication to Cloud Run failed (HTTP STATUS_CODE). Verify the caller has roles/run.invoker on the service.

Cloud Run ゲートウェイが認証リクエストを拒否しました。

サービス アカウントに、Cloud Run サービスに対する Cloud Run 起動元(roles/run.invoker)ロールが付与されていることを確認します。

Failed to connect to the SAP ERP server! Error is Cloud Run service returned unexpected HTTP STATUS_CODE: ERROR_DETAIL

Cloud Run ゲートウェイが予期しない HTTP ステータス コードを返しました。

Cloud Run Service URL を確認し、Cloud Run サービスログを検査します。

スクリプトの結果

次の表に、Ping アクションを使用した場合のスクリプト結果の出力値を示します。

スクリプトの結果名 値
is_success true または false

さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。