Looker(Google Cloud コア)によるプライベート IP ネットワーキング

プライベート IP のみ、またはプライベート IP とパブリック IP の両方を使用するように Looker(Google Cloud コア)インスタンスを設定したら、特定の Looker(Google Cloud コア)を使用するか、外部サービスまたはインターネットとの通信を許可または制限するようにネットワークを構成できます。

外部ドメインへのメールの配信を制限する

デフォルトでは、プライベート IP のみを使用する Looker(Google Cloud コア)インスタンス、またはプライベート IP とパブリック IP の両方を使用する Looker(Google Cloud コア)インスタンスは、外部ドメインへのメール配信を許可します。Looker ユーザーがメール配信を行うことができるドメインを制限するには、メールドメインの許可リストを設定します。

カスタム ドメインを作成してアクセスする

プライベート IP 専用 Looker(Google Cloud コア)インスタンスを使用する場合、そのインスタンスにアクセスするにはカスタム ドメインを設定する必要があります。また、プライベート IP カスタム ドメインへのアクセスを許可するようにネットワークを構成する必要もあります。構成のタイプは、インスタンスのトラフィックの送信元によって異なります。構成オプションの概要と各オプションのドキュメントへのリンクについては、Looker(Google Cloud コア)プライベート IP インスタンスのカスタム ドメイン ネットワーキング オプションのドキュメント ページをご覧ください。

プライベート IP Looker(Google Cloud コア)インスタンスの外部サービスに接続する

プライベート IP のみ、またはプライベート IP とパブリック IP の両方を使用する Looker(Google Cloud コア)インスタンスでは、インスタンスの VPC ネットワーク外のサービスまたはリソースに接続するために、追加の構成が必要になる場合があります。以降のセクションでは、追加の構成オプションについて説明します。

プライベート サービス アクセスを使用して他の VPC に接続する

内部 IP を使用して、Google またはサードパーティによってホストされている他の VPC 内のサービスに接続するには、プライベート サービス アクセスを使用します。

Looker(Google Cloud コア)のインスタンスの作成中に、プライベート サービス アクセス接続を作成して VPC を Looker(Google Cloud コア)サービスに接続しました。トラフィックを中断することなく、既存のプライベート サービス アクセス接続の IP 割り当てを更新することもできます。

プライベート サービス アクセス接続を設定するには:

  1. VPC ネットワークに内部 IP 範囲を割り当てます
  2. 割り振られた IP 範囲を使用して、VPC ネットワークとサービス プロデューサーのネットワーク間のプライベート接続を設定します。このプライベート接続は、VPC と他のネットワークの間の VPC ネットワーク ピアリング接続を確立します。

プライベート接続は、VPC ネットワークとサービス プロデューサーとの 1 対 1 の関係です。単一のサービス プロデューサーで複数のサービスを提供する場合でも、プロデューサーのすべてのサービスに対して必要なプライベート接続は 1 つのみです。

オンプレミス リソースまたはサードパーティ サービスに接続する

次の 2 つのオプションのいずれかを使用して、プライベート IP のみ、またはプライベート IP とパブリック IP の両方を使用して Looker(Google Cloud コア)インスタンスをオンプレミス リソースまたはサードパーティ サービスに接続できます。

いずれの方法でも、次の操作を行う必要があります。

  • オンプレミス リソースごとに Looker(Google Cloud コア)VPC で動的ルートを構成する。
  • Looker(Google Cloud コア)VPC にデプロイされているすべての Cloud Router で、Looker(Google Cloud コア)プライベート サービス アクセス サブネットカスタムのアドバタイズされたルートを設定します。
  • オンプレミスのファイアウォールを更新して、Looker(Google Cloud コア)サブネットのトラフィックを許可する。
  • DNS 転送を構成します。これにより、Looker(Google Cloud コア)はオンプレミス リソースに接続できるようになります。

Cloud Interconnect と Cloud Router

次のネットワーク図は、Cloud Interconnect と Cloud Router が Looker(Google Cloud コア)サービスと連携してオンプレミス ネットワークに接続する方法を示しています。

  1. プライベート サービス アクセスでは、VPC ピアリングを使用して、内部 IP アドレス経由で Looker(Google Cloud コア)サービスを VPC に接続します。
  2. Cloud Router は、Border Gateway Protocol(BGP)を使用して、プライベート IP 接頭辞をアドバタイズし、ピアから受信した BGP アドバタイズに基づいて動的ルートをプログラムします。Cloud Interconnect は、オンプレミス ネットワークへの接続に使用されます。

Cloud VPN と Cloud Router

プライベート IP とパブリック IP の Looker(Google Cloud コア)インスタンスを作成し、Cloud VPN と Cloud Router を使用してオンプレミス データベースに接続する方法のチュートリアルについては、ハイブリッド ネットワーキングを介して Looker Cloud を接続する Codelab をご覧ください。

他のクラウド サービス プロバイダでホストされるデータベースに接続する

他のクラウド サービス プロバイダでホストされているデータベースまたはサービスへのプライベート接続を設定するには、それらのクラウド サービス プロバイダにトラフィックを転送してデータ交換を可能にするように Google Cloud プロジェクトを構成する必要があります。クラウド環境の接続方法については、他のクラウド サービス プロバイダを Google Cloud に接続するためのパターンのドキュメント ページで詳しく説明しています。

プライベート IP インスタンスへのアクセスを許可する

VPC の外部の関係者がプライベート IP のみを有効にした Looker(Google Cloud コア)インスタンスとインターフェースすることを許可するには、プロキシ サーバーと カスタム ドメインを設定します。このセクションの残りの部分では、プロキシ サーバーの設定方法の例を紹介します。

始める前に

プロキシ サーバーを設定する前に、Google Cloud CLI をインストールするか、最新バージョンに更新する必要があります。

プロキシ サーバーを設定する

次の例は、コマンドラインを使用して、プライベート IP ネットワーク接続が有効になっている既存の Looker(Google Cloud コア)インスタンスに NGINX プロキシ サーバーを設定する方法を示しています。NGINX サーバーはパブリック IP またはプライベート IP(VPN アクセスを許可)構成でインスタンス化できますが、この例ではパブリック IP 構成を示しています。

リバース プロキシ サーバーとして構成できる任意のウェブサーバーを使用できます。NGINX サーバーを特別に設定する必要はありません。

  1. カスタム ドメインを作成します。カスタム ドメインは、このプロセスの後半で DNS レコードを設定するときに、プロキシ サーバーの外部 IP にマッピングされます。
  2. Cloud Shell を開きます。

    Cloud Shell に移動

  3. 次のコマンドを実行して、VPC ネットワークでサブネットワークと Ubuntu 18 NGINX VM を作成し、パブリック IP を有効にします。

    • 変数を設定します。

      PROJECT="PROJECT"
      NETWORK="NETWORK"
      SUBNETNAME="SUBNETNAME"
      IP_RANGE=IP_RANGE
      REGION="REGION"
      ZONE="ZONE"
      INSTANCE_NAME="INSTANCE_NAME"
      

      以下を置き換えます。

      • PROJECT: Looker(Google Cloud コア)インスタンスを作成した Google Cloud プロジェクトの ID。
      • NETWORK: Looker(Google Cloud コア)インスタンス用に構成した VPC ネットワークの名前。
      • SUBNETNAME: この手順で作成する新しいサブネット、または VPC ネットワーク内の任意のサブネット。Looker(Google Cloud コア)インスタンスのサブネット名と一致する必要はありません。
      • IP_RANGE: 競合しない範囲。少なくとも /22 を使用してください(例: 10.10.0.0/22)。
      • REGION: プロキシ サーバーを作成するリージョン。
      • ZONE: プロキシ サーバーを作成するゾーン。利用可能なゾーンを確認するには、gcloud compute zones list を実行します。
      • INSTANCE_NAME: プロキシ サーバーの名前。
    • サブネットを作成します(自動モードを使用して VPC ネットワークを作成した場合は、VPC ネットワークの作成時に作成されたサブネットを使用することもできます)。

      gcloud compute networks subnets create $SUBNETNAME --network=$NETWORK \
      --range=$IP_RANGE --region=$REGION --project=$PROJECT
      
    • プロキシ インスタンスを作成します。

      INSTANCE_EXTERNAL_IP=$(gcloud compute instances create $INSTANCE_NAME \
      --project=$PROJECT --zone=$ZONE --network=$NETWORK --subnet=$SUBNETNAME \
      --format="json" | jq '.[].networkInterfaces[].accessConfigs[].natIP')
      
    • プロキシ インスタンスを作成したら、次のコマンドを実行してプロキシ インスタンスのパブリック IP アドレスを生成します。

      echo $INSTANCE_EXTERNAL_IP
      

      手順の後半で使用するため、外部 IP をメモしておきます。

  4. 次のコマンドを実行して、ポート 80、443、22(または NGINX がリッスンするその他のポート)上のインスタンスへのトラフィックを許可するファイアウォールを作成します。

    gcloud compute firewall-rules create managementnet-allow-http-https-ssh \
    --direction=INGRESS --priority=1000 --network=$NETWORK --action=ALLOW \
    --rules=tcp:80,tcp:443,tcp:22 --source-ranges=0.0.0.0/0 --project=$PROJECT
    
  5. このプロセスの始めに Looker(Google Cloud コア)インスタンス用に設定した、NGINX VM のパブリック IP アドレスを参照するカスタム ドメインを使用する DNS レコードを作成する VM の作成後に出力されたものです。

    • ユーザーが VPC の外部からプロキシにアクセスする場合は、パブリック DNS レコードを設定します。
    • ユーザーが VPC 内からプロキシにアクセスする場合は、VPC に公開されている限定公開ゾーンを設定し、限定公開 DNS レコードを設定します。
  6. 公開 URL にアクセスするためのサードパーティの証明書を作成します。この例では、NGINX の Let's Encrypt を使用して Let's Encrypt 証明書を生成していますが、任意の暗号化証明書を使用できます。

    • NGINX VM に接続します。

    • Let's Encrypt ツールをインストールします。

      sudo apt-get update
      sudo apt-get install certbot python3-certbot-nginx
      
    • nginx.config ファイルにアクセスします。

      sudo vi /etc/nginx/sites-available/default
      
    • nginx.config ファイルで、既存のサーバー構成を置き換えて、サーバーとポート 80 をリッスンするように設定します。

      server {
        listen 80 default_server;
        listen [::]:80 default_server;
        root /var/www/html;
        server_name SERVER_NAME;
      }
      

      SERVER_NAME は、DNS レコード名に置き換えます。

    • NGINX を再読み込みします。

      sudo nginx -t && sudo nginx -s reload
      
    • 証明書を生成する

      sudo certbot --nginx -d SERVER_NAME
      

      SERVER_NAME は、DNS レコード名に置き換えます。

  7. nginx.config ファイルで、前のステップで使用したサーバー構成を次のサーバー構成に置き換えて、Looker(Google Cloud コア)インスタンスにトラフィックを渡します。

    server {
      listen 443 ssl http2;
      listen [::]:443 ssl http2;
      server_name SERVER_NAME
      ssl_certificate /etc/letsencrypt/live/SERVER_NAME/fullchain.pem;
      ssl_certificate_key /etc/letsencrypt/live/SERVER_NAME/privkey.pem;
      include /etc/letsencrypt/options-ssl-nginx.conf;
      ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
    
      location / {
        set $priv_dns "private.lookerapp";
        proxy_pass https://PRIVATE_IP_ADDRESS/$request_uri;
        proxy_set_header Host $server_name;
        proxy_set_header X-Forwarded-Host $host:$server_port;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_ssl_protocols TLSv1.3;
        proxy_ssl_verify off;
        proxy_http_version 1.1;
        proxy_pass_request_headers on;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_redirect https://$priv_dns/ https://SERVER_NAME/;
      }
    }
    server {
      if ($host = SERVER_NAME) {
        return 301 https://$host$request_uri;
      }
        listen 80 default_server;
        listen [::]:80 default_server;
        server_name SERVER_NAME;
      return 404;
    }
    

    次のように置き換えます。

    • PRIVATE_IP_ADDRESS: Looker(Google Cloud コア)インスタンスに割り当てられたプライベート IP アドレス。Google Cloud コンソールのインスタンスの [詳細] ページで表示できます。
    • SERVER_NAME: DNS レコード名。
  8. nginx.config ファイルを検証して再読み込みします。

    sudo nginx -t && sudo nginx -s reload
    
  9. 構成が検証され、トラフィックが Looker(Google Cloud コア)インスタンスに転送され、カスタム ドメインを設定した後、OAuth クライアントの承認済みのリダイレクト URI セクションにインスタンスのカスタム ドメインを入力します。その後、インスタンスの URL に移動して、ユーザーを追加し、データベースに Looker(Google Cloud コア)を接続して、インスタンスの設定を続行します。

次のステップ