このドキュメントでは、SAP システムがオンプレミス、別のクラウド プロバイダ、 Google Cloud以外の別の環境にあるホストで実行されている場合、または SAP RISE プログラムを介して SAP によって管理されている場合に、 Google Cloudにアクセスするための認証の設定方法について説明します。
Google Cloudへの認証の場合、 Google Cloudの署名付き JSON ウェブトークン(JWT)を使用して Google Cloudからアクセス トークンを取得します。おおまかな構成手順は次のとおりです。
- Google Cloud APIs を有効にします。
- JWT ベースのトークンを取得するためのサービス アカウントを作成します。
- SAP LT Replication Server ホストで Google Cloud のセキュリティ設定を構成します。
- 認可用の別のサービス アカウントを作成します。
- BigQuery データセットを作成します。
- TLS / SSL 証明書と HTTPS を設定します。
/GOOG/CLIENT_KEY
にアクセス設定を指定します。
Google Cloud API を有効にする
Google Cloud プロジェクトで、必要な Google Cloud APIs を有効にします。
Pub/Sub を介した CDC レプリケーションの場合は、次の API を有効にします。
- Pub/Sub API
- BigQuery API
- IAM Service Account Credentials API
ストリーミング データ レプリケーションの場合は、次の API を有効にします。
- BigQuery API
- IAM Service Account Credentials API
Google Cloud API を有効にする方法については、API の有効化をご覧ください。
JWT ベースのトークン取得用のサービス アカウントを作成する
Google Cloudに対する JWT ベースの認証の場合、BigQuery Connector for SAP に IAM サービス アカウントが必要です。
サービス アカウントを作成する
JWT ベースのトークンを取得するサービス アカウントを作成するには、次の操作を行います。
Google Cloud コンソールで、[IAM と管理] の [サービス アカウント] ページに移動します。
プロンプトが表示されたら、 Google Cloud プロジェクトを選択します。
[サービス アカウントを作成] をクリックします。
サービス アカウントの名前を指定します。必要であれば、説明も入力します。
[作成して続行] をクリックします。
[このサービス アカウントにプロジェクトへのアクセスを許可する] パネルで、[サービス アカウント トークン作成者] のロールを選択します。
[続行] をクリックします。
必要に応じて、他のユーザーにサービス アカウントへのアクセス権を付与します。
[完了] をクリックします。 Google Cloud プロジェクトのサービス アカウントのリストにサービス アカウントが表示されます。
サービス アカウント キーを作成する
JWT ベースのトークンを取得するためのサービス アカウントに、P12 サービス アカウント キーを作成する必要があります。
サービス アカウント キーを作成するには、次の操作を行います。
Google Cloud コンソールで、[IAM と管理] の [サービス アカウント] ページに移動します。
Google Cloud プロジェクトを選択します。
前のセクションのサービス アカウントを作成するで、JWT ベースのトークンの取得用に作成したサービス アカウントのメールアドレスをクリックします。
サービス アカウント名で [キー] タブをクリックします。
[鍵を追加] プルダウン メニューをクリックして [新しい鍵を作成] を選択し、サービス アカウント キーを作成します。
鍵のタイプとして P12 を使用し、[作成] をクリックします。
秘密鍵がパソコンに保存されます。
秘密鍵ファイル
notasecret
のパスワードをメモします。秘密鍵を SAP 管理者に提供して、
STRUST
に秘密鍵をインポートします。詳細については、サービス アカウント キーを STRUST にインポートするをご覧ください。
SAP LT Replication Server ホストでサービス アカウントの JWT 署名を有効にする
JWT ベースのトークンの取得用に作成したサービス アカウントで JWT 署名を有効にするには、テーブル /GOOG/BQ_PARAM
にパラメータ JWT_SERVC_ACCT
を追加して、サービス アカウントを構成する必要があります。
サービス アカウントで JWT 署名を有効にするには、次の手順を完了します。
SAP GUI で、
/n
で始まる/GOOG/SLT_SETTINGS
トランザクションを入力します。/n/GOOG/SLT_SETTINGS
/GOOG/SLT_SETTINGS
トランザクションの起動画面の [Settings Table] プルダウン メニューから [Parameters] を選択します。[Execute] アイコンをクリックします。[BigQuery Settings Maintenance - Parameters] 画面が表示されます。
[Insert Row] アイコンをクリックします。
表示された行で、次の設定を指定します。
- [Parameter Name] フィールドに「
JWT_SERVC_ACCT
」と入力します。パラメータの説明は自動的に入力されます。 - [Parameter Value] フィールドに、前のセクション(サービス アカウントを作成する)で JWT ベースのトークンの取得用に作成したサービス アカウントのメールアドレスを入力します。
- [Parameter Name] フィールドに「
[Save] をクリックします。
設定がレコードとして
/GOOG/BQ_PARAM
構成テーブルに保存されます。[Changed By]、[Changed On]、[Changed At] の各フィールドに値が自動的に挿入されます。
SAP LT Replication Server ホストで Google Cloud のセキュリティ設定を構成する
このセクションでは、SAP LT Replication Server ホストで Google Cloudのセキュリティ設定を構成する方法について説明します。これには、SSF アプリケーション エントリの作成と、サービス アカウント キーの STRUST
へのインポートが含まれます。
新しい Secure Store and Forward(SSF)アプリケーションを作成する
BigQuery Connector for SAP トランスポートの一部としてテーブル SSFAPPLIC
に ZG_JWT
エントリがインポートされます。ZG_JWT
エントリがインポートされていない場合は、トランザクション SE16
を使用して、ZG_JWT
という名前の新しいエントリを作成する必要があります。
テーブル SSFAPPLIC
に新しいエントリを作成するには、次の手順を完了します。
- SAP GUI で、トランザクション コード
SE16
を入力します。 - [Table Name] フィールドに「
SSFAPPLIC
」と入力し、新しいエントリを作成します。 - [APPLIC] フィールドに「
ZG_JWT
」と入力します。 - [B_INCCERTS]、[B_DETACHED]、[B_ASKPWD]、[B_DISTRIB] 以外のすべてのフィールドを選択します。
- [DESCRIPT] フィールドに「
JWT Signature for GCP
」と入力します。 新しいエントリを保存します。
このエントリは、トランザクション
STRUST
で新しいノードになり、ここにサービス アカウント キーをインポートします。
STRUST
ノードを有効にする
トランザクション SSFA
を使用して、JWT Signature for GCP
の STRUST
ノードを有効にします。
STRUST
ノードを有効にするには、次の手順を完了します。
- SAP GUI で、トランザクション コード
SSFA
を入力します。 - [New Entries] をクリックします。
[SSF Application] プルダウン リストで
JWT Signature for GCP
を選択します。これは、テーブルSSFAPPLIC
に作成した新しいエントリです。次のスクリーンショットは、SAP によって自動的に入力されるアプリケーション固有の SSF パラメータを示しています。
新しいエントリを保存します。
トランザクション
STRUST
で新しいノードSSF JWT Signature for GCP
が有効になります。このノードにサービス アカウント キーをインポートします。
サービス アカウント キーを STRUST
にインポートする
サービス アカウント キーを STRUST
にインポートするには、次の手順を完了します。
SAP GUI で、トランザクション コード
STRUST
を入力します。トランザクション
STRUST
の新しいノードがSSF JWT Signature for GCP
であることを確認します。秘密鍵ファイルをインポートします。
- メニューバーから [PSE] > [Import] を選択します。
- ソースシステムの種類に応じて、適切な秘密鍵を選択します。
- S4/HANA
- P12 秘密鍵を選択します。
- ファイルのパスワード
notasecret
を入力して、[OK] をクリックします。
- ECC
- PSE 秘密鍵を選択します。以前にダウンロードした P12 秘密鍵を PSE 秘密鍵に変換する必要があります。P12 鍵を PSE 鍵に変換する方法については、P12 鍵を PSE 鍵に変換するをご覧ください。
- 秘密鍵を P12 鍵から PSE 鍵に変換する際に作成したファイルの PIN を入力して、[OK] をクリックします。
- S4/HANA
[PSE] > [Save as] を選択します。
[SSF Application] のオプション ボタンを選択して、新しい Secure Store and Forward(SSF)アプリケーションを作成するで作成した新しい SSF アプリケーション ノードを該当するフィールドで選択します。
新しいエントリを保存します。
サービス鍵が SSF アプリケーション ノード
SSF JWT Signature for GCP
に関連付けられます。
P12 秘密鍵を PSE 鍵に変換する
ソースシステムが SAP NetWeaver 7.0x(SAP ECC)の場合、P12 鍵を PSE 鍵に変換する必要があります。
P12 鍵を PSE 鍵に変換するには、次の手順を完了します。
パスに移動します。
/usr/sap/SID/SYS/exe/run/
SID は、SAP システム ID に置き換えます。
プレースホルダを置き換えて、次のコマンドを実行します。
sapgenpse import_p12 -p PSE_PATH_AND_FILE_NAME P12_PATH_AND_FILE_NAME.p12
次のように置き換えます。
PSE_PATH_AND_FILE_NAME
: PSE ファイルのパスとファイル名を指定します。P12_PATH_AND_FILE_NAME
: P12 鍵ファイルのパスとファイル名を指定します。
P12 秘密鍵ファイル
notasecret
のパスワードを入力します。PSE 秘密鍵に新しい PIN を作成し、その PIN をもう一度入力します。
PIN をメモしておきます。PSE 秘密鍵ファイルを
STRUST
にインポートするときに、この PIN を入力する必要があります。
P12 鍵を PSE 鍵に変換する方法については、以下を参照してください。
- SAP Note 2148457 - How to convert the keypair of a PKCS#12 / PFX container into a PSE file
- SAP Note 2976401 - "import_p12: Error creating PSE" error during converting keypair of PKCS#12 / PFX container into PSE file
認可用のサービス アカウントを作成する
このセクションでは、認証用のサービス アカウントを作成し、安全な通信のために TLS/SSL 証明書を設定するプロセスについて説明します。
サービス アカウントを作成する
BigQuery Connector for SAP には、 Google Cloud リソースにアクセスするための認証と認可のための IAM サービス アカウントが必要です。
このサービス アカウントは、有効な Google Cloud APIs を含む Google Cloud プロジェクトのプリンシパルである必要があります。サービス アカウントを Google Cloud APIs と同じプロジェクトで作成すると、そのサービス アカウントはプリンシパルとして自動的にプロジェクトに追加されます。
有効な Google Cloud APIs を含むプロジェクト以外のプロジェクトにサービス アカウントを作成する場合は、別のステップで有効な Google Cloud APIs プロジェクトにサービス アカウントを追加する必要があります。
サービス アカウントを作成するには、次のようにします。
Google Cloud コンソールで、[IAM と管理] の [サービス アカウント] ページに移動します。
プロンプトが表示されたら、 Google Cloud プロジェクトを選択します。
[サービス アカウントを作成] をクリックします。
サービス アカウントの名前を指定します。必要であれば、説明も入力します。
[作成して続行] をクリックします。
サービス アカウントを有効な Google Cloud APIs と同じプロジェクトで作成する場合は、[このサービス アカウントにプロジェクトへのアクセスを許可する] パネルで、必要に応じてロールを選択します。
Pub/Sub を介した CDC レプリケーションの場合は、次のロールを選択します。
- Pub/Sub 編集者
- BigQuery データ編集者
- BigQuery ジョブユーザー
ストリーミング データ レプリケーションの場合は、次のロールを選択します。
- BigQuery データ編集者
- BigQuery ジョブユーザー
サービス アカウントを Google Cloud APIs が有効になっているプロジェクトとは異なるプロジェクトで作成する場合は、サービス アカウントにロールを付与しないでください。
[続行] をクリックします。
必要に応じて、他のユーザーにサービス アカウントへのアクセス権を付与します。
[完了] をクリックします。プロジェクトのサービス アカウントのリストにサービス アカウントが表示されます。
サービス アカウントを Google Cloud APIs が有効になっているプロジェクトとは別のプロジェクトで作成した場合は、そのサービス アカウント名をメモします。この名前は、 Google Cloud APIs が有効になっているプロジェクトにサービス アカウントを追加するときに指定します。詳細については、サービス アカウントを BigQuery プロジェクトに追加するをご覧ください。
サービス アカウントは、サービス アカウントが作成された Google Cloud プロジェクトの [IAM 権限] ページにプリンシパルとして表示されます。
サービス アカウントをターゲット プロジェクトに追加する
有効な Google Cloud APIs を含むプロジェクト以外のプロジェクトで BigQuery Connector for SAP のサービス アカウントを作成した場合は、有効な Google Cloud APIs プロジェクトにサービス アカウントを追加する必要があります。
有効な Google Cloud APIs と同じプロジェクトにサービス アカウントを作成した場合は、この手順をスキップできます。
既存のサービス アカウントを BigQuery データセット プロジェクトに追加するには、次の操作を行います。
Google Cloud コンソールで IAM の [権限] ページに移動します。
有効なGoogle Cloud APIs を含むプロジェクトの名前がページの上部付近に表示されていることを確認します。例:
プロジェクト「
PROJECT_NAME
」の権限表示されていない場合は、プロジェクトを切り替えます。
[IAM] ページで、[
追加] をクリックします。[「PROJECT_NAME
」にプリンシパルを追加します] ダイアログが開きます。[「
PROJECT_NAME
」プロジェクトにプリンシパルを追加する] ダイアログで、次の手順を行います。- [新しいプリンシパル] フィールドに、サービス アカウントの名前を指定します。
- [ロールを選択] フィールドで [BigQuery データ編集者] を指定します。
- [別のロールを追加] をクリックします。[ロールを選択] フィールドが再び表示されます。
- [ロールを選択] フィールドで、[BigQuery ジョブユーザー] を指定します。
- Pub/Sub を介した CDC レプリケーションの場合は、上記の手順を繰り返し、Pub/Sub 編集者を指定します。
- [保存] をクリックします。サービス アカウントは、[IAM] ページのプロジェクト プリンシパルのリストに表示されます。
BigQuery データセットを作成する
BigQuery データセットを作成するには、ユーザー アカウントに、BigQuery に対する適切な IAM 権限が必要です。詳細については、必要な権限をご覧ください。
Google Cloud コンソールで、[BigQuery] ページに移動します。
プロジェクト ID の横にある [アクションを表示] アイコン(
)をクリックし、[データセットを作成] をクリックします。[データセット ID] フィールドに一意の名前を入力します。詳細については、データセットに名前を付けるをご覧ください。
BigQuery データセットの作成の詳細については、データセットの作成をご覧ください。
TLS / SSL 証明書と HTTPS を設定する
BigQuery Connector for SAP と Google サービス間の通信は、TLS/SSL と HTTPS を使用して保護されます。
Google サービスに接続する場合は、Google Trust Services のアドバイスに沿って対応してください。少なくとも、Google Trust Services リポジトリからすべてのルート CA 証明書をダウンロードする必要があります。
最新の信頼できるルート CA 証明書を使用していることを確認するため、システムのルート証明書ストアを 6 か月ごとに更新することをおすすめします。新しいルート CA 証明書と削除されたルート CA 証明書は、Google Trust Services で発表されます。自動通知を受け取るには、Google Trust Services で RSS フィードを登録してください。
SAP GUI で、
STRUST
トランザクションを使用して、ルート CA 証明書をSSL client SSL Client (Standard)
PSE フォルダにインポートします。SAP の詳細については、SAP Help - Maintain PSE Certification list をご覧ください。
SAP LT Replication Server ホストで、HTTPS ポートから BigQuery API への下り(外向き)トラフィックを許可するように、ファイアウォール ルールかプロキシが構成されていることを確認します。
具体的には、SAP LT Replication Server は、次のGoogle Cloud APIs にアクセスできる必要があります。
https://bigquery.googleapis.com
https://iamcredentials.googleapis.com
https://pubsub.googleapis.com
BigQuery Connector for SAP で VPC ネットワーク内の Private Service Connect エンドポイントを介して Google Cloud API にアクセスする場合は、RFC 宛先を構成して、その RFC 宛先に Private Service Connect エンドポイントを指定する必要があります。詳細については、RFC 宛先をご覧ください。
TLS / SSL の設定に関する SAP からの詳細情報については、SAP Note 510007 - Additional considerations for setting up TLS/SSL on Application Server ABAP をご覧ください。
/GOOG/CLIENT_KEY
にアクセス設定を指定する
トランザクション SM30
を使用して、Google Cloudへのアクセス用の設定を指定します。BigQuery Connector for SAP は、/GOOG/CLIENT_KEY
カスタム構成テーブルにレコードとして設定を保存します。
アクセス設定を指定するには、次の操作を行います。
SAP GUI で、トランザクション コード
SM30
を入力します。/GOOG/CLIENT_KEY
構成テーブルを選択します。次のテーブル フィールドに値を入力します。
フィールド データ型 説明 名前 文字列 CLIENT_KEY
構成のわかりやすい名前を指定します(例:BQC_CKEY
)。クライアント キー名は、BigQuery Connector for SAP が Google Cloudへのアクセス構成を識別するために使用する固有識別子です。
サービス アカウント名 文字列 サービス アカウントを作成するで BigQuery Connector for SAP 用に作成したサービス アカウントの名前(メールアドレス形式)。例:
sap-example-svc-acct@example-project-123456.
。範囲 文字列 アクセス スコープ。 Compute Engine の推奨事項に従って、
https://www.googleapis.com/auth/cloud-platform
APIs のアクセス スコープを指定します。プロジェクト ID 文字列 対象とする BigQuery データセットを含むプロジェクトの ID。 コマンド名 文字列 このフィールドは空白のままにしておきます。
認可クラス 文字列 /GOOG/CL_GCP_AUTH_JWT
認可フィールド 該当なし このフィールドは空白のままにしておきます。 トークンの更新期限(秒) 整数 このフィールドは空白のままにしておきます。 トークンのキャッシュ保存 ブール値 このフィールドは空白のままにしておきます。
RFC 宛先を構成する
BigQuery Connector for SAP を Google Cloudに接続するには、RFC 宛先を使用することをおすすめします。
サンプルの RFC 宛先 GOOG_OAUTH2_TOKEN
、GOOG_IAMCREDENTIALS
、GOOG_BIGQUERY
は、BigQuery Connector for SAP トランスポートの一部としてインポートされます。
サンプルの RFC 宛先をコピーして、新しい RFC 宛先を作成する必要があります。
RFC 宛先を構成するには、次の操作を行います。
SAP GUI で、トランザクション コード
SM59
を入力します。(推奨)サンプルの RFC 宛先をコピーして新しい RFC 宛先を作成し、その新しい RFC 宛先の名前をメモします。これらは、後のステップで使用します。
BigQuery Connector for SAP は RFC 宛先を使用してGoogle Cloud APIs に接続します。
RFC 宛先ベースの接続をテストする場合は、この手順をスキップしてサンプルの RFC 宛先を使用できます。
作成した RFC 宛先に対して、次の操作を行います。
[Technical Settings] タブに移動して、[Service No.] フィールドの値が
443
に設定されていることを確認します。これは、RFC 宛先が安全な通信に使用するポートです。[Logon & Security] タブに移動し、[SSL Certificate] フィールドで [DFAULT SSL Client (Standard)] オプションが設定されていることを確認します。
必要に応じて、プロキシを構成し、HTTP 圧縮を有効にして、Private Service Connect エンドポイントを指定します。
変更を保存します。
接続をテストするには、[Connection Test] をクリックします。
RFC 宛先で指定されたエンドポイントがGoogle Cloud サービスに対応し、サービスによってホストされる特定のリソースではないため、
404 Not Found
を含むレスポンスは許容され、想定されます。このようなレスポンスは、ターゲットの Google Cloudサービスに到達でき、ターゲット リソースが見つからなかったことを示します。
SAP GUI で、トランザクション コード
SM30
を入力します。前のセクションで作成した
/GOOG/CLIENT_KEY
テーブルで、[Name] フィールドの値をメモします。テーブル
/GOOG/SERVIC_MAP
で、次のフィールド値を持つエントリを作成します。Google Cloud キー名 Google サービス名 RFC 宛先 CLIENT_KEY_TABLE_NAME
bigquery.googleapis.com
BigQuery をターゲットとする RFC 宛先の名前を指定します。テスト目的でサンプル RFC 宛先を使用している場合は、 GOOG_BIGQUERY
を指定します。CLIENT_KEY_TABLE_NAME
pubsub.googleapis.com
Pub/Sub をターゲットとする RFC 宛先の名前を指定します。テスト目的でサンプル RFC 宛先を使用している場合は、 GOOG_PUBSUB
を指定します。CLIENT_KEY_TABLE_NAME
iamcredentials.googleapis.com
IAM をターゲットとする RFC 宛先の名前を指定します。テスト目的でサンプル RFC 宛先を使用している場合は、 GOOG_IAMCREDENTIALS
を指定します。CLIENT_KEY_TABLE_NAME
googleapis.com/oauth2
JWT をアクセス トークンと交換するために使用される Google OAuth 2.0 トークン エンドポイントをターゲットとする RFC 宛先の名前を指定します。テスト目的でサンプル RFC 宛先を使用している場合は、 GOOG_OAUTH2_TOKEN
を指定します。CLIENT_KEY_TABLE_NAME
は、前の手順でメモしたクライアント キー名で置き換えます。
プロキシを構成する
RFC 宛先を使用して Google Cloudに接続する場合は、SAP ランドスケープで使用しているプロキシ サーバーを介して、BigQuery Connector for SAP から通信をルーティングできます。
プロキシ サーバーを使用しない場合や、SAP 環境にプロキシ サーバーがない場合は、この手順をスキップできます。
BigQuery Connector for SAP のプロキシ サーバーを構成するには、次の手順を完了します。
SAP GUI で、トランザクション コード
SM59
を入力します。IAM をターゲットとする RFC 宛先を選択します。
[Technical Settings] タブに移動して、[HTTP Proxy Options] セクションのフィールドに値を入力します。
BigQuery をターゲットとする RFC 宛先で、前の手順を繰り返します。
HTTP 圧縮を有効にする
RFC 宛先を使用して Google Cloudに接続する場合は、HTTP 圧縮を有効にできます。
この機能を有効にしない場合は、この手順をスキップできます。
HTTP 圧縮を有効にするには、次の操作を行います。
SAP GUI で、トランザクション コード
SM59
を入力します。BigQuery をターゲットとする RFC 宛先を選択します。
[Special Options] タブに移動します。
[HTTP Version] フィールドで [HTTP 1.1] を選択します。
[Compression] フィールドで、適切な値を選択します。
圧縮オプションの詳細については、SAP Note 1037677 - HTTP compression compresses certain documents only をご覧ください。
Private Service Connect エンドポイントを指定する
BigQuery Connector for SAP で Private Service Connect エンドポイントを使用して、BigQuery と IAM のプライベート使用を許可する場合は、 Google Cloud プロジェクトでこれらのエンドポイントを作成し、エンドポイントをそれぞれの RFC 宛先で指定する必要があります。
BigQuery Connector for SAP で、引き続きデフォルトのパブリック API エンドポイントを使用して BigQuery と IAM に接続する場合は、この手順をスキップします。
Private Service Connect エンドポイントを使用するように BigQuery Connector for SAP を構成するには、次の操作を行います。
SAP GUI で、トランザクション コード
SM59
を入力します。BigQuery と IAM に新しい RFC 宛先が作成されていることを確認します。これらの RFC 宛先の作成方法については、RFC 宛先の構成をご覧ください。
BigQuery をターゲットとする RFC 宛先を選択し、次の操作を行います。
[Technical Settings] タブに移動します。
[Target Host] フィールドに、BigQuery にアクセスするために作成した Private Service Connect エンドポイントの名前を入力します。
[Logon and Security] タブに移動します。
[Service No.] フィールドに値
443
が指定されていることを確認します。[SSL Certificate] フィールドで、[DFAULT SSL Client (Standard)] オプションが選択されていることを確認します。
IAM をターゲットとする RFC 宛先を選択し、次の操作を行います。
[Technical Settings] タブに移動します。
[Target Host] フィールドに、IAM にアクセスするために作成した Private Service Connect エンドポイントの名前を入力します。
[Logon and Security] タブに移動します。
[Service No.] フィールドに値
443
が指定されていることを確認します。[SSL Certificate] フィールドで、[DFAULT SSL Client (Standard)] オプションが選択されていることを確認します。