IAM によるアクセス管理

Cloud Identity and Access Management(Cloud IAM)を使用すると、関数の表示、作成、更新、削除などのデベロッパーの機能を制御できます。関数の呼び出しで認証が必要かどうかも制御できます。役割メンバーに付与して、このような制御を行います。

関数に対するアクセスの制御

Cloud IAM を使用して個々のユーザーにロールを付与または制限することで、関数に対するアクセスを制御できます。

ユーザーを追加する

Console

  1. Google Cloud Console に移動します。

    Google Cloud Console に移動

  2. アクセス権を付与する関数の隣にあるチェックボックスをクリックします。

  3. 右上隅にある [情報パネルを表示] をクリックして、[権限] タブを表示します。

  4. [メンバーを追加] フィールドに、関数にアクセスが必要な ID を入力します。

  5. [役割を選択] プルダウン メニューから役割を選択します。 選択した役割と付与する権限の簡単な説明がパネルに表示されます。

  6. [保存] をクリックします。

gcloud

gcloud functions add-iam-policy-binding コマンドを使用します。

gcloud functions add-iam-policy-binding FUNCTION_NAME \
  --member=MEMBER_TYPE \
  --role=ROLE

ここで、FUNCTION_NAME は関数名、MEMBER_TYPE はメンバータイプ、ROLE は役割です。

MEMBER_TYPE に使用可能な値については、Cloud IAM のコンセプト ページをご覧ください。ROLE に使用可能な値については、Cloud Functions IAM 役割のリファレンス ページをご覧ください。

ユーザーを削除する

Console

  1. Google Cloud Console に移動します。

    Google Cloud Console に移動

  2. アクセスを制限する関数の隣にチェックボックスをクリックします。

  3. 右上隅にある [情報パネルを表示] をクリックして、[権限] タブを表示します。

  4. 削除するユーザーを検索するか、ユーザーの役割を展開します。

  5. 役割内のメンバータイプの横にある [削除](ごみ箱)をクリックして、メンバーから役割を削除します。

gcloud

gcloud functions remove-iam-policy-binding コマンドを使用します。

  gcloud functions remove-iam-policy-binding FUNCTION_NAME \
    --member=MEMBER_TYPE \
    --role=ROLE

ここで、FUNCTION_NAME は関数名、MEMBER_TYPE はメンバータイプ、ROLE は役割です。

MEMBER_TYPE に使用可能な値については、Cloud IAM のコンセプト ページをご覧ください。ROLE に使用可能な値については、Cloud Functions IAM 役割のリファレンス ページをご覧ください。

ユーザーを一括で追加または削除する

Console

  1. Google Cloud Console に移動します。

    Google Cloud Console に移動

  2. アクセスを許可または制限する関数の隣にあるチェックボックスをクリックします。

  3. 右上隅にある [情報パネルを表示] をクリックして、[権限] タブを表示します。

ユーザーを追加する方法は次のとおりです。

  1. [メンバーを追加] フィールドに、関数にアクセスが必要な ID を入力します。

  2. [役割を選択] プルダウン メニューから役割を選択します。 選択した役割と付与する権限の簡単な説明がパネルに表示されます。

  3. [保存] をクリックします。

ユーザーを削除する方法は、次のとおりです。

  1. 削除するユーザーを検索するか、ユーザーの役割を展開します。

  2. 役割内のメンバータイプの横にある [削除](ごみ箱)をクリックして、メンバーから役割を削除します。

gcloud

たとえば、policy.json という名前の IAM ポリシーを作成します。

{
  "bindings": [
    {
      "role": ROLE,
      "members": [
        MEMBER_TYPE
      ]
    }
  ]
}

gcloud functions set-iam-policy コマンドを使用します。

gcloud functions set-iam-policy FUNCTION_NAME policy.json

MEMBER_TYPE に使用可能な値については、Cloud IAM のコンセプト ページをご覧ください。ROLE に使用可能な値については、Cloud Functions IAM 役割のリファレンス ページをご覧ください。

ユーザーを表示する

Console

  1. Google Cloud Console に移動します。

    Google Cloud Console に移動

  2. ユーザーと役割を表示する関数を選択します。

  3. 右上隅にある [情報パネルを表示] をクリックして、[権限] タブを表示します。

  4. 付与された役割別にすべてのユーザーが表示されます。

gcloud

gcloud functions get-iam-policy コマンドを使用します。

gcloud functions get-iam-policy FUNCTION_NAME

プロジェクト内のすべての関数に対するアクセスを制御する

プロジェクトのすべての関数に対するロールをメンバーに付与するには、プロジェクト レベルの Cloud IAM を使用します。

認証されていない関数の呼び出しを許可する

上記の方法で、関数の呼び出し権限を付与または制限できます。これにより、関数呼び出しで呼び出し側の認証が必要かどうかを指定できます。このコンセプトは、HTTP 関数にのみ適用されます。バックグラウンド関数を呼び出すことができるのは、関数が登録されているイベントソースだけです。

特別な allUsers メンバータイプを関数に追加し、Cloud Functions 起動元の役割を付与することで、関数の非認証呼び出しを許可できます。

Console

  1. Google Cloud Console に移動します。

    Google Cloud Console に移動

  2. アクセス権を付与する関数の隣にあるチェックボックスをクリックします。

  3. 右上隅にある [情報パネルを表示] をクリックして、[権限] タブを表示します。

  4. [メンバーを追加] をクリックします。

  5. [新しいメンバー] フィールドで、「allUsers」と入力します。

  6. [ロールを選択] プルダウン メニューから Cloud Functions > Cloud Functions 起動元ロールを選択します。

  7. [保存] をクリックします。

gcloud

gcloud functions add-iam-policy-binding コマンドを使用して特別な allUsers メンバータイプを関数に渡し、roles/cloudfunctions.invoker 役割を付与します。

gcloud functions add-iam-policy-binding FUNCTION_NAME \
 --member="allUsers" \
 --role="roles/cloudfunctions.invoker"

これらの権限は、Google Cloud Console で変更することもできます。

gcloud functions deploy コマンドは、関数作成時に呼び出し権限を構成するようにプロンプトを表示します。また、--allow-unauthenticated フラグも使用できます。

gcloud functions deploy FUNCTION_NAME \
  --trigger-http \
--allow-unauthenticated \
...

最初の関数を作成するときに、--allow-unauthenticated フラグを指定するだけで済みます。後続のデプロイで --allow-unauthenticated フラグを指定しない場合、IAM 権限は変更されません。

ドメインで制限された共有

ドメインで制限された共有の組織ポリシーの対象となるプロジェクトで関数を開発する場合、関数の未承認の呼び出しを許可できません。このポリシーは、一般公開データの共有を制限して、データの漏えいのリスクを低減します。

未認証の呼び出しを許可する関数をデプロイする場合は、ドメインで制限された共有組織ポリシーをプロジェクトから削除することをおすすめします。組織のポリシーは組織レベル、フォルダレベル、プロジェクト レベルで設定できます。

未認証の呼び出しを許可する関数を作成したら、次のように組織ポリシーを再度有効にできます。

  • 組織ポリシーが再度有効になる前にデプロイされた関数では、未認証の呼び出しの呼び出しを引き続き許可します。
  • 既存の関数の新しいバージョンは、呼び出しを認証することなくデプロイできます。
  • 非認証の呼び出しを許可する新しい関数はデプロイできません。

次のステップ

保護した関数に対するデベロッパー、関数、エンドユーザーの認証を安全に行う方法を学習する。