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

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

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

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

プライベート 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 つのみです。

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

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

どちらの場合も、次のことを行う必要があります。

  • オンプレミス リソースごとに Looker(Google Cloud コア)VPC で動的ルートを構成します。
  • Looker(Google Cloud コア)のプライベート サービス アクセス サブネットカスタムルート アドバタイズを、Looker(Google Cloud コア)VPC にデプロイされているすべての Cloud Router に設定します。
  • 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)を使用して、ピアから受信した BGP アドバタイズに基づいて、プライベート IP プレフィックスをアドバタイズし、動的ルートをプログラムします。Cloud Interconnect はオンプレミス ネットワークに接続するために使用されます。

Cloud VPN と Cloud Router

プライベート IP とパブリック IP の Looker(Google Cloud コア)インスタンスを作成し、HA 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 ネットワークでパブリック IP を有効にしてサブネットワークと Ubuntu 18 NGINX VM を作成します。

    • 変数を設定します。

      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 コア)インスタンスに設定したカスタム ドメインを使用してパブリック DNS レコードを作成し、VM の作成後に出力された NGINX VM のパブリック IP アドレスを指定します。

  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 コア)を接続して、インスタンスの設定を続行します。

    次のステップ