Amazon Web Services ブログ
Amazon AppFlow SAP ConnectorとAWS PrivateLinkを通じてSAP ODataサービスと安全に接続
概要
Amazon AppFlowは、SAP、Salesforce、Zendesk、Slack、ServiceNow等のSaaSやエンタープライズアプリケーションと、Amazon S3やAmazon Redshift等のAWSサービス間で、数クリックだけで安全にデータを転送できるようにするフルマネージド型のサービスです。
多くの場合、お客様はまずSAPワークロードをAWSに移行し、コスト削減、俊敏性の向上、セキュリティの強化を図ります。しかしながら、これはSAP on AWSの可能性を完全に活用するための最初のステップです。その後、AWS上のデータレイクでSAP以外のデータと組み合わせることで、SAPデータから更なる価値を引き出す取り組みを始めることができます。これにより、生産性の向上、ビジネスパフォーマンスの追跡、製品ライフサイクル管理の加速など、AWSのネイティブサービスを活用したSAPシステムの拡張や補強が可能になります。
お客様から頂いたフィードバックに基づき、昨年、SAP OData用の新しいAmazon AppFlowコネクタを発表しました。これにより、AWSのお客様は、SAP Gatewayを通じて公開しているOData APIに接続することで、SAPのコンテキストデータを安全にAWSに転送したり、逆にAWSからSAPにデータを書き込んだりすることができるようになりました。お客様はSAPエンタープライズアプリケーション(SAP ECC、SAP S/4HANA、SAP BW、BW/4HANA)とAmazon S3オブジェクトストレージ間の安全な双方向データ統合フローを、わずか数クリックで作成できるようになりました。
Amazon AppFlow SAP ODataコネクターは、セキュリティとプライバシーのレイヤーを追加するために、AWS PrivateLinkに対応しています。お客様は、AppFlowのプライベートデータ転送オプションを使用して、Amazon AppFlowとSAPの間でデータを安全に転送できるようになります。プライベートフローの一部として、Amazon AppFlowは自動的にAWS PrivateLinkエンドポイントを作成します。このインターフェースエンドポイントのライフサイクルは、Amazon AppFlowによって完全に管理されています。
このブログでは、SAP ODataコネクターを使用してAmazon AppFlowでプライベートデータフローを設定するために、AWS PrivateLinkを介してプライベートかつ安全な方法でSAPデータを抽出する方法を紹介します。また、AppFlow SAP ODataコネクターのためのAWS PrivateLinkをセットアップする方法について、アーキテクチャと手順を説明します。
アーキテクチャ
AWS PrivateLinkは、ネットワークロードバランサー(NLB)を使用して、インターフェイスエンドポイントをVPCエンドポイントサービスに接続しています。NLBはネットワークトランスポート層(OSIモデルの第4層)で機能し、1秒間に数百万のリクエストを処理することができるサービスです。AWS PrivateLinkの場合、NLBはコンシューマーVPC内にあり、Amazon AppFlowはエンドポイントネットワークインターフェイスとなります。
AWS PrivateLinkでは、お客様はSAPインスタンスをNLBの下に配置し、Amazon AppFlowなどのコンシューマーがエンドポイントサービスに関連付けられたインターフェースVPCエンドポイントをAmazon AppFlowのマネージドVPCに作成します。その結果、お客様はAmazon AppFlowのプライベートフローを使用して、安全にデータを転送することができます。
次の手順では、Amazon AppFlowプライベートデータフローでSAP ODataサービスからデータ取り込むために、お客様のAWSアカウントでプライベートフローを作成する方法を説明します。
- SAP Gatewayは、SAPワークロード用に最適化されたAmazon Elastic Compute Cloud(EC2)インスタンス上で動作するNetWeaver Application Server ABAP 7.40のコンポーネントになります。
- このインスタンスは、各アベイラビリティゾーン(AZ)ごとにプライベートサブネットがある仮想プライベートネットワーク(VPC)内に配置されています。
- SAPインスタンスにトラフィック転送する内部向けのネットワークロードバランサー(NLB)を作成し、VPC エンドポイントサービスがこのNLBに接続させます。
- TLS接続を確立するために、TLSリスナーをネットワークロードバランサーに作成し、SSL証明書をAWS Certificate Managerから登録されたドメイン用に取得します。
- パブリックDNSプロバイダー(この場合はAmazon Route 53)を使用してドメインを認証することで、エンドポイントサービスのプライベートDNS名を有効にします。
- Amazon AppFlowで、エンドポイントサービスの情報を含むプライベート接続を作成した後、SAP ODataコネクタを使用したフローを作成して、SAPからデータを抽出します。
- プライベート接続が作成されると、Amazon AppFlowは、フロー実行中に安全なデータ転送のためのプライベートリンクを介してSAP ODataサービスへの接続を確立するために、バックグラウンドでAmazon AppFlowマネージドVPCでVPC Interfaceエンドポイントを作成します。
SAP OData コネクタを使用してプライベートデータフローを設定するために必要な設定:
前提条件
- 前提条件の一部として、内部向けNLBのバックエンドのターゲットグループとしてSAPシステムを設定します。NLBにマッピングするサブネットは、リージョンに存在する半数以上のAZを網羅するように指定する必要があります。これにより、レイテンシーが低くなり、フォールトトレランスも良くなります。
- VPCエンドポイントサービスは、作成されたAWSリージョンで利用でき、同じリージョンからアクセスすることができます。Amazon AppFlowのフローは、そのエンドポイントサービスを利用できるように、同じリージョンで作成する必要があります。
- エンドポイントサービスに対して、プライベートDNS名を有効にする必要があります。エンドポイントサービスがドメイン認証するためには、Amazon Route 53のようなパブリックDNSプロバイダを使用してドメインを所有する必要があります。
- SAPインスタンスは、エンドツーエンドのTLS通信のために証明書がインストールされている必要があります。AmazonプライベートCAを使用しサーバー証明書を取得し、トランザクションコードSTRUSTでSAPシステムにインストールすることができます。NLBでSSLを終了させたい場合は、このステップをスキップして、SAPがSSL通信に証明書を必要としないポートでターゲットグループにトラフィックを転送すればよいです。
PrivateLinkを通してSAP Gatewayを公開するための VPC エンドポイントサービスの構築は、以下のステップで行います。
ステップ1:VPCとプライベートサブネットの作成
まず、SAP Gateway を配置するためにネットワークを決定します。選択したリージョン内の50%以上のAZからアプリケーションにアクセスする必要があることに留意してください。Amazon AppFlowは、複数のAZからお客様の環境へアクセスすることが必要になります。AWSの推奨に従って、フォールトトレランスの目的のために、複数のAZにまたがるようにアプリケーションを設計する必要があるからです。
この例では、SAP GatewayインスタンスはUS-East-1リージョン内のAZの1つのプライベートサブネットに配置されています。そのリージョンのSAP Gatewayリソースをプライベートリンクで提供するには、そのリージョンの50%以上のAZにサブネットを作成し、そのサブネットにネットワークロードバランサー(NLB)をプロビジョニングする必要があります。低レイテンシーとフォールトトレランスのために、そのリージョンの50%以上のAZをカバーすることになります。
これらのサブネットはプライベートであり、ルートテーブルはVPCのトラフィックのみを許可するように設定されています。
ステップ2:ACMを使用してドメイン名の証明書をリクエスト
AWS Certificate Manager(ACM)を使用して、ドメイン名の証明書をリクエストします。この例では、下図のようにAmazon Route 53のプライベートホストゾーンにサブドメインを作成し、ACMから証明書を取得することで、既存のドメインを拡張しています。ACMのドメイン認証プロセスでは、パブリックDNSプロバイダーにドメイン所有レコードが存在することが必要です。
注:証明書の不一致の問題を防ぐために、ドメインにワイルドカード証明書をプロビジョニングすることがベストプラクティスです。詳細については、ACM証明書の特徴のワイルドカード名を参照してください。
ドメインの所有権の認証は、Amazon Route 53などのパブリックDNSプロバイダーが提供するドメインにCNAMEレコードを追加してください。
また、外部の信頼された認証局からドメイン名の証明書を取得している場合は、ACM にその公開証明書をインポートすることができます。
ステップ3:SAPインスタンスのターゲットグループ、NLB、TLSリスナーを作成
- プロトコルTLS、ポート443のターゲットグループを作成し、プライベートサブネット上のSAP Gatewayインスタンスをターゲットとして登録し、TLSポート44300のインスタンスにトラフィックを転送します。この例では、SAPインスタンスがポート44300のセキュアなHTTPSトラフィックをリッスンするように設定されています。
- 内部向けのネットワークロードバランサーを作成し、SAPインスタンスが配置するリージョンの50%以上のAZで高可用性を確保し、低レイテンシーとフォールトトレランスを実現します。NLBでクロスゾーンのロードバランシングも有効にしておきます
- ネットワークロードバランサーのTLSリスナーを作成し、先に作成したターゲットグループにトラフィックを転送するように設定します。
- 設定時に、デフォルトのSSL証明書として、ACMの証明書を選択します。次に、手順2で作成したSSL証明書を選択します。
NLBが作成されアクティブになったら、DNS(ここではRoute 53)でCNAMEレコードを作成して、ユーザフレンドリーURL(Amazon AppFlowではアプリケーションホストURLとして使用、例: privatelink.beyond.sap.aws.dev )が内部向けNLBのDNS名(<名前>.elb.<リージョン>.amazonaws.com)を指すようにします。
ステップ4:VPCエンドポイントサービスの作成とNLBとの接続
VPCエンドポイントサービスを作成し、先のステップで作成したネットワークロードバランサーを指定します。追加設定で、プライベートホストゾーンにホストされているプライベートDNS名を関連付けます。
チェックボックス「Acceptance required」のチェックを外してください。こうすることで、Amazon AppFlowはユーザの承諾作業を必要とせずに、このエンドポイントサービスに接続することができるようになります。
プライベートDNS名を持つ各VPCエンドポイントサービスに対して、ドメイン所有権の認証チェックを行う必要があります。パブリックDNSプロバイダーでドメインを持っている必要があります。ドメイン認証を実行するには、DNSプロバイダーで、認証名と値を持つTXTタイプのDNSレコードを作成する必要です。サブドメインのドメインを認証することができます。たとえば、この例ではprivatelink.beyond.sap.aws.devではなく、beyond.aws.devを認証することができます。
ドメインの確認が完了すると、ドメインの確認ステータスが “pending verification” から“verified”に更新されることがわかります。
ステップ5:VPCエンドポイントサービスへのアクセスするための許可設定
VPCエンドポイントサービスを特定のコンシューマだけによって使用されるように制限するには、エンドポイントサービスでプリンシパルの許可リストを管理する必要があります。このケースでは、プリンシパルappflow.amazonaws.comを追加してこのエンドポイントサービスに接続することで、Amazon AppFlow接続要求を許可しています。
これで、エンドポイントサービスの設定は終了です。それでは、エンドポイントサービス名を使って、Amazon AppFlowでプライベート接続を作成してみましょう。
Amazon AppFlowでセキュアなプライベート接続を作成
Amazon AppFlowのSAP ODataプライベート接続を新規に作成するために必要な入力情報は、以下の通りです。
PrivateLink接続オプションを有効にし、先ほどの手順で作成したAWS PrivateLinkのエンドポイントサービス名を指定します。
注意:プライベート接続でOAuth 2.0を使用する場合、認証URLは接続が設定されているネットワークから通信可能である必要があります。これは、OAuth接続がSAPログインページとのブラウザインタラクションを含むためで、これはAWS PrivateLink経由では行えません。
Amazon Appflowでプライベートフローを作成
Amazon AppFlowのSAP ODataフローを新規に作成するには、以下の手順を実施します。
- Flowを設定し、SAPプライベート接続を選んでソースシステムに接続します。
- SAP ODataサービスを選択します。
- SAPサービスエンティティを選択します。
- フローのトリガーを定義します。(オンデマンド又はスケジュール)
- フィールドをマッピングし、検証条件を定義し、フィルタを設定します
- フローを実行します。
フローを作成する方法の詳細は、Amazon AppFlow SAP OData Connectorのドキュメントで確認することができます。
まとめ
この記事では、AWSアカウントでSAP NetWeaver Gatewayを公開し、Amazon AppFlowとSAP SystemのODataサービス間のプライベート接続を確立し、安全なデータ転送を行うためにAWS Private Linkを使用する方法を紹介しました。オンプレミスでSAPシステムを稼働しているお客様も、SAPシステムのODataエンドポイントのパブリックIPアドレスを使用する代わりに、AWS Virtual Private NetworkまたはAWS Direct Connect接続を使用してAWS PrivateLinkを設定し、Amazon AppFlow SAP OData Connectorを使用することが可能です。
詳細は、Amazon AppFlowのページをご覧ください。AWSが5000以上のアクティブなSAPのお客様に革新のプラットフォームとして選ばれた理由に関しては、SAP on AWSのページをご覧ください。
翻訳はSpecialist SA トゥアンが担当しました。原文はこちらです。