AI Platform Notebooks での機密データの保護に役立つ新しいブループリント
Google Cloud Japan Team
※この投稿は米国時間 2021 年 5 月 4 日に、Google Cloud blog に投稿されたものの抄訳です。
業界で最も信頼できるクラウドになるということが、運命の共有を信念とする Google Cloud の取り組みの中核です。Google Cloud は、お客様が Google のプラットフォームでより良いセキュリティを実現できるよう、積極的に取り組んでいます。デプロイメントにセキュリティを構築しやすくするために、Google ではセキュリティ ブループリントという形でお客様に独自のガイダンスを提供しています。Google では先日、お客様が Google Cloud の利用開始時にセキュリティを構築するのに役立つ、最新版の Google Cloud セキュリティ基盤ガイドとデプロイ可能なブループリントをリリースしました。また、本日、AI Platform Notebooks の機密データを保護するブループリント ガイドとデプロイ可能なブループリントをポートフォリオに追加しました。これにより、機密データを含む AI Platform Notebooks を保護するデータ ガバナンスとセキュリティ ポリシーを適用できます。
AI や ML プロジェクトの中心には機密データが存在することが多いため、AI に関してはセキュリティとプライバシーが特に重要となります。このブログ投稿では、主に、次のようなハイレベルなノートブックの流れを、関連するすべてのセキュリティ レイヤで保護することについて説明します。
AI Platform Notebooks は、企業向けに統合された安全な JupyterLab 環境を提供します。企業のデータ サイエンス担当者は、AI Platform Notebooks を使ってテスト、コード開発、モデルのデプロイを行います。数回クリックするだけで、一般的なディープ ラーニング フレームワーク(TensorFlow Enterprise、PyTorch、RAPIDS など多数)と一緒に動作するノートブックを簡単に使い始めることができます。現在、AI Platform Notebooks は、Deep Learning Virtual Machines または Deep Learning Containers で実行可能です。
企業のお客様、特に金融サービスや医療とライフ サイエンスなどの規制の厳しい業界のお客様は、JupyterLab Notebooks をセキュアな境界で実行し、ノートブックやデータへのアクセスを制御したいとお考えかもしれません。AI Platform Notebooks は、そのようなお客様を想定して、セキュリティとアクセス制御をサービスの柱として一から構築しました。Google は先日、AI Platform Notebooks 向けに、VPC Service Controls(VPC-SC)、顧客管理の暗号鍵(CMEK)を含むいくつかのセキュリティ機能の一般提供を発表しました。しかし、セキュリティは単に機能だけを意味するのではありません。プラクティスやプロセスも同じくらい重要になります。データおよび Notebooks の環境保護に役立つ手順ガイドとなるブループリントを見ていきましょう。
AI Platform Notebooks は、VPC-SC、共有 VPC、プライベート IP コントロールにより、一般的な Google Cloud Platform エンタープライズ セキュリティ アーキテクチャをサポートしています。AI Platform Notebooks のコンピューティング インスタンスとして Shielded VM を実行し、ディスク上のデータを CMEK で暗号化することができます。AI Platform Notebooks へのユーザー アクセスには、単一ユーザーモードとサービス アカウントを使用するモードの 2 つが事前定義されています。また、Cloud Identity and Access Management(IAM)構成に基づいて、アクセスをカスタマイズすることもできます。これらのセキュリティ機能を、AI Platform Notebooks のコンテキストで詳しく見ていきましょう。
Compute Engine のセキュリティ
Shielded VM を使用した AI Platform Notebooks は、ルートキットやブートキットからの防御に役立つ一連のセキュリティ制御をサポートしています。Notebooks API および DLVM Debian 10 イメージで利用可能なこの機能により、リモート攻撃、権限昇格、悪意のある内部関係者などの脅威から企業のワークロードを保護できます。この機能は、セキュアブートやメジャード ブート、仮想トラステッド プラットフォーム モジュール(vTPM)、UEFI ファームウェア、整合性モニタリングなど、高度なプラットフォーム セキュリティ機能を活用しています。Compute Engine は Shielded VM ノートブック インスタンスに対し、仮想トラステッド プラットフォーム モジュール(vTPM)と整合性モニタリングのオプションをデフォルトで有効にします。この機能に加えて、Notebooks API はアップグレード エンドポイントを提供しており、手動または自動アップグレードを使用する際は自動で、最新の DLVM イメージへのオペレーティング システムのアップデートを実行できます。
データ暗号化
AI Platform Notebooks インスタンスで CMEK を有効にすると、Google が管理する鍵ではなく、指定した鍵が VM のブートディスクとデータディスクのデータの暗号化に使用されます。一般に、CMEK は、データの暗号化に使用する鍵を完全に制御する必要がある場合によく利用されます。CMEK を使用すると、Cloud KMS 内で鍵を管理できます。たとえば、Cloud KMS API を使用して、鍵のローテーションや無効化を行うことが可能です。
データ漏洩リスクの軽減
VPC Service Controls(VPC-SC)を使用すると、Cloud Storage や BigQuery などの Google Cloud サービスからデータが漏洩するリスクを軽減できます。
AI Platform Notebooks は VPC-SC をサポートしており、サービス オペレーションで境界外のリソースにデータの読み取りやコピーを行うことはできません。たとえば、「gsutil cp」コマンドを使用してデータを Cloud Storage 公開バケットにコピーできません。また、「bq mk」コマンドを使用して、永続的な外部 BigQuery テーブルにデータをコピーすることもできません。
アクセス制御と監査ロギング
AI Platform Notebooks には固有の Identity and Access Management(IAM)ロールセットがあります。各事前定義ロールには、一連の権限が含まれています。プロジェクトに新しいメンバーを追加する際は、IAM ポリシーを使用してそのメンバーに 1 つ以上の IAM ロールを付与できます。各 IAM ロールには、メンバーに特定のリソースへのアクセスを許可する権限が含まれています。AI Platform Notebooks の IAM 権限は、Notebook インスタンスを管理するために使用され、Notebooks API 経由で AI Platform Notebooks インスタンスを作成、削除、変更します(JupyterLab のアクセスを構成するには、こちらのトラブルシューティングのリソースをご覧ください)。
AI Platform Notebooks は、管理アクティビティの監査ログを書き込みます。このログには、リソースの構成やメタデータを変更するオペレーションが記録されます。
これらのセキュリティ機能を考慮したうえで、AI Platform Notebooks が特に役立つユースケースをいくつかご紹介します。
1.お客様は、自社の IT インフラストラクチャに適用しているのと同じセキュリティ対策や管理を、自社のデータやノートブックのインスタンスにも適用したいと考えている。
2.お客様は、データ サイエンス チームがデータにアクセスする際に簡単に適用できる統一されたセキュリティ ポリシーを求めている。
3.お客様は、特定の個人やチームのために機密データへのアクセスを調整し、そのデータへの広範なアクセスを防止したいと考えている。
AI Platform Notebooks セキュリティのベスト プラクティス
Google Cloud は、ネットワーク、エンドポイント、アプリケーション、データ、ユーザー アクセスなど、複数のレイヤにおけるセキュリティ問題に対処する機能やプロダクトを提供しています。一つとして同じ組織はありませんが、Google の多くのお客様は、ノートブックのデプロイを含むクラウド環境のセキュリティを確保するうえで、共通の要件をお持ちです。
新しい AI Platform Notebooks の機密データを保護するブループリント ガイドは、AI Platform Notebooks を使用する際のセキュリティ管理の設定やデータ漏洩リスクの軽減を、以下を実行してサポートします。
お客様からの共通のご意見に基づいた一連のベスト プラクティスの導入をサポートする。
Terraform を使った宣言型の構成で、デプロイまでの時間を最小限に抑える。
Google Cloud セキュリティ基盤のブループリントを活用することで再現性を確保する。
このブループリントでは、以下のようなアーキテクチャをデプロイします。
上の図は、次のようなアプローチでセキュリティを実装するためのアーキテクチャを示しています。
可能な限り早い段階で、共通のコンテキストに沿ってリソースを集める。
認可ポリシーを設定する際に、最小権限の原則を適用する。
必要な通信のみを許可するネットワークの境界を作成する。
機密情報をデータやソフトウェア レベルで保護する。
1. 可能な限り早い段階で、共通のコンテキストに沿ってリソースを集める
Google Cloud では、カスタマイズできるリソース階層を使用して、共通のテーマを持つリソースを集めることができます。Google Cloud セキュリティ基盤のブループリント ガイド は、デフォルトの組織の階層を設定します。ブループリントでは、AI Platform Notebooks を使用する際の機密性の高い本番環境データの取り扱いに関するフォルダとプロジェクトが追加されています。
「本番環境」フォルダの下にある「信頼できる」フォルダには、論理的なアプリケーションに応じて整理された次の 3 つのプロジェクトが含まれています。
「trusted-kms」は、データを保護する鍵やシークレットなどのリソースを集めます。
「trusted-data」は機密データを集めます。
「trusted-analytics」は、データにアクセスするノートブックなどのリソースを集めます。
共通のコンテキストでリソースをグループ化することで、ハイレベルなリソース管理が可能になり、リソースレベルでルールを設定する場合に比べて以下のようなメリットがあります。
セキュリティ侵害のリスクを軽減できる。セキュリティ ルールを目的のエンティティに適用し、データ階層間のポリシー継承によって下位レベルに伝播させることができます。
管理者が積極的にリソース間の橋渡しをしなければならないようにする。デフォルトでは、プロジェクトはリソースのサンドボックス化された環境です。
将来の組織変更を容易にする。高いレベルでのルールを設定することで、リソースのグループを近づけます。
ブループリントでは、セキュリティに対する最小権限のアプローチを促進するために、以下のことを行っています。
2. 必要な通信のみを許可するネットワークの境界を作成する
Google Cloud では、リソースのネットワークを定義するための VPC を提供しています。これまでのセクションでは、プロジェクトによる機能の分離について説明してきました。VPC はプロジェクトに属しているため、デフォルトでは、VPC からのリソースは別の VPC のリソースと通信できません。
管理者は、以下のネットワーク通信を許可または遮断する必要があります。
インターネットによる通信: Google のインスタンスは、内部および外部の IP アドレスを持つことができます。ブループリントでは、信頼されたフォルダレベルで外部 IP アドレスの使用を禁止するデフォルトのポリシーが設定されています。
Google API による通信: 外部 IP アドレスがないと、インスタンスは Cloud Storage や BigQuery のパブリック エンドポイントにアクセスできません。このブループリントでは、VPC レベルで Google API へのプライベート接続を設定し、ノートブックがこれらのサービスと通信できるようにします。
境界内: ノートブックがアクセスできる BigQuery や Cloud Storage などの環境を制限します。ブループリントでは、VPC Service Controls を設定して信頼できる境界を作成します。その中では、特定のプロジェクトのリソースのみが、ユーザー / デバイス クライアントのアクセス ポリシーに基づいた特定のサービスにアクセスできます。
リソース間: ブループリントでは、既存の共有 VPC を使用してノートブックを作成します。共有 VPC では、インスタンスが相互に通信するために使用できるプロトコルを制限するために、制限付きのファイアウォール ルールを設定する必要があります。
ブループリントでは、Google Cloud のネットワーク機能を使用して、最低限必要なネットワーク パスを以下のように設定しています。
許可リストのデバイスを通じて、ユーザーが Google Cloud のエンドポイントにアクセスできるようにする。
ユーザーがノートブック インスタンスにアクセスするための SSH トンネルの作成を可能にする。
許可された境界内のプライベート接続を通じて、インスタンスを Google サービスに接続する。
3. 認可ポリシーを設定する際に、最小権限の原則を適用する
Google Cloud には、プラットフォームのオンボーディングを簡単にするために、デフォルトの Cloud IAM セットアップが用意されています。本番環境では、これらのデフォルトのリソースのほとんどを無視することをおすすめします。Cloud IAM を使用して、お客様の要件に基づいたカスタム ID と認可ルールを作成します。
Google Cloud では、職掌分散を設定しながら最小権限の原則を実装するために以下の機能を提供しています。
カスタムロールは、アクセスを制限するための権限の最小限のセットをグループ化する方法を提供します。これにより、ロールを使用して ID は期待されるタスクのみを実行できるようになります。
サービス アカウントは、インスタンス ID を表し、信頼されたユーザーに代わって操作を行うことができます。これにより、一貫した動作が可能となり、これらのコンピューティング リソース外でのユーザーのアクションが制限されます。
ユーザー ペルソナに基づいた論理的な ID グループは、単独で忘れられる可能性のある ID の数を制限することで、管理を簡素化します。
Cloud IAM ポリシーは、ロールと ID を結びつけます。これにより、ユーザーが仕事をするための手段が提供されるとともに、承認されていない操作のリスクを軽減させます。
たとえば、次のようなブループリントがあります。
ジョブを実行し、trusted-analytics プロジェクトのノートブック インスタンス ID として機能するのに十分なロールを持つサービス アカウントを作成する。
あらかじめ作成された信頼できる科学者のグループにロールを割り当て、彼らがノートブックを使ってデータを操作できるようにする。
trusted-data プロジェクトにカスタムロールを作成し、BigQuery の機密情報に対する閲覧権限が付与されるが、データの変更やエクスポートは許可されない。
カスタムロールを関連するユーザー グループやサービス アカウントにバインドして、trusted-data プロジェクトのデータを操作できるようにする。
Terraform を通して、ブループリントは次のような流れを作ります。
ユーザーを trusted_scientists 変数から事前に作成した trusted-data-scientists Google グループに追加する。
trusted-data-scientists グループの ID がサービス アカウント sa_p_notebook_compute を使用するためのポリシーを設定する。
信頼できるユーザーごとに個別のノートブック インスタンスを作成し、インスタンスの ID として sa_p_notebook_compute サービス アカウントを利用する。
この設定により、ユーザーは trusted-data プロジェクトの機密データに、trusted-analytics プロジェクトのインスタンスの ID として機能するサービス アカウントを介してアクセスできます。
注: 信頼できるユーザー全員が、すべての機密データにアクセス可能です。より狭い範囲での権限の設定は、このブループリントでは範囲外です。複数のサービス アカウントを作成し、データアクセスを必要なレベル(例: 特定の列)に制限して、各サービス アカウントを関連する ID グループに割り当てることで、より狭い範囲の権限を設定できます。
4. 機密情報をデータやソフトウェア レベルで保護する
Google Cloud では、保存データを保護するためのデフォルトの機能と、ノートブックを作成するための追加のセキュリティ機能が用意されています。
ブループリントでは、鍵を使用して保存データを暗号化し、以下の方法を示します。
ご自身のプロジェクトで、高可用性のカスタマー マネージャー鍵を作成する方法。
鍵のアクセスを特定の ID に制限する方法。
鍵を使用して、BigQuery、Cloud Storage、AI Platform Notebooks のデータを関連する境界内の他のプロジェクトで保護する方法。
詳細については、このブループリント ガイドの鍵の管理セクションをご参照ください。
AI Platform Notebooks は、Compute Engine インスタンス上に設定された Jupyter Notebook を利用します。ノートブックを作成する際、ブループリントは AI Platform Notebooks の次のカスタマイズ機能を使用します。
「sudo」の防止など、追加のセキュリティ パラメータを設定する。
デプロイメント スクリプトの呼び出し時に、外部ソースへのアクセスを制限する。
JupyterLab UI からファイルをダウンロードするリスクを軽減するために、Jupyter の設定を変更する。
詳細については、ブループリント ガイドの AI Platform Notebooks のセキュリティ管理のセクションをご参照ください。
データ サイエンティストの能力を引き出しながら、機密データを保護する方法の詳細については、ガイド AI Platform Notebooks の機密データの保護をご覧ください。このブループリントと、Google Cloud セキュリティ ベスト プラクティス センターで入手できる、拡張を続けるGoogle のブループリントのポートフォリオによって、お客様が Google Cloud のデプロイの開始時からセキュリティを構築し、より安全に Google を利用できるようになれば幸いです。
-Google Cloud プロダクト マネージャー Suds Narasimhan
-Google Cloud クラウド ソリューション アーキテクト Matthieu Mayran