Cloud Functions の保護

このページでは、Cloud Functions のリソースを使用して操作を制御する方法の概要を説明します。

アクセス制御

Cloud Functions に対するアクセスの制御には、次の 2 種類の方法があります。

ID によるアクセスの保護

Cloud Functions へのアクセスを制御する方法の一つは次のとおりです。

  • エンティティが示す認証情報を評価して、エンティティが誰であるかを確認します(Authentication)。
  • ID に付与された権限(Authorization)に基づいて、そのエンティティにリソースへのアクセスを許可します。

Cloud Functions では、Identity and Access Management(IAM)と OAuth 2.0 の 2 種類の認証と認可をサポートしています。

Identity and Access Management の使用

IAM は、Cloud Functions で最もよく使用されるアクセス制御です。次の 2 種類の ID に対応しています。

  • サービス アカウント: 関数、アプリケーション、VM など、人以外の ID として機能する特別なアカウントです。サービス アカウントでは、人以外の認証や、API を呼び出すなどの処理を行うための権限を付与できます。
  • ユーザー アカウント: 個々の Google アカウント所有者、または Google グループのような Google が管理するエンティティの一員といった、人を表しています。

設定中に、リクエスト元の ID に適切なロールを付与します。このロールでは、リソースのコンテキストで ID が持つ権限を定義します。このプロセスの設定方法の詳細については、IAM によるアクセスの承認をご覧ください。

OAuth 2.0 の使用

OAuth 2.0 は、認可のオープン スタンダードです。OAuth 2.0 は、IAM を使用できない場合やその他の該当する状況で使用できます。2 つの方法の選択についての詳細は、サービス アカウントの使用と管理のベスト プラクティスをご覧ください。

Google Cloud Console を使用して、クライアント アプリケーション用に OAuth 2.0 クライアント ID(場合によってはクライアント シークレット)を作成します。このクライアント ID は認証情報として機能します。

この認証情報は、クライアント アプリケーションが、access token を提供する Google 承認サーバーに送信します。このトークンにより、リソースへのアクセスが許可されます。権限は、IAM のようなロールではなく、scope という値に基づきます。

ネットワーク ベースのアクセス制御

個々の関数のネットワーク設定を指定してアクセスを制限することもできます。これにより、関数の上り(内向き)、下り(外向き)のネットワークをより細かく制御できます。

隔離とサンドボックス化

内部では、関数インスタンスは、gVisor サンドボックス プラットフォームを使用して分離されています。設計上、関数は他の関数のオペレーション環境にアクセスできません。