権限に関するエラー メッセージのトラブルシューティング

このドキュメントでは、リソースに必要なアクセス権がない場合に発生する可能性のあるエラー メッセージと、これらのエラーの解決方法について説明します。

権限エラー メッセージ

Cloud de Confiance コンソール、Google Cloud CLI、REST API はすべて、アクセス権のないリソースにアクセスしようとするとエラー メッセージを表示します。

これらのエラー メッセージは、次のいずれかが原因で発生する可能性があります。

  • アクセスをブロックする拒否ポリシーがあります。拒否ポリシーによって必要な権限のいずれかを使用できない場合、 Cloud de Confiance にエラー メッセージが表示されます。
  • リソースが存在しません。リソースが存在しない場合、Cloud de Confiance はエラー メッセージを表示します。

以降のセクションでは、Cloud de Confiance コンソール、gcloud CLI、REST API でこれらのエラー メッセージがどのように表示されるかを示します。

Cloud de Confiance コンソールのエラー メッセージ

Cloud de Confiance コンソールでは、次のようなエラー メッセージが表示されます。

これらのエラー メッセージには次の情報が含まれています。

  • アクセスしようとしたリソース: エラーページのタイトルにリソース名が表示されます。これは、権限エラーが発生したときにアクセスしようとしたリソースを示します。
  • 必要な権限がありません: リソースにアクセスするために必要な権限のリスト。
  • 必要な権限を含む IAM ロールのリスト: このリストは網羅的なものではありません。Cloud de Confiance がアクセス問題を解決するために提案するロールのキュレートされたリストが含まれています。並べ替えは、ロールで許可されるアクションの種類、サービスの関連性、権限の数に基づいて行われます。

    ロールの付与に必要な権限がある場合、このセクションのタイトルは「付与するロールを選択」になります。必要な権限がない場合、このセクションのタイトルは「特定のロールをリクエスト」になります。

    ロールをクリックすると、ロールの詳細を確認し、ロールの付与をリクエストできます。ロールの付与に必要な権限がある場合は、リクエストする代わりに自分でロールを付与できます。

Google Cloud CLI と REST API のエラー メッセージ

エラー メッセージの正確な文言は、実行するコマンドによって異なります。ただし、通常は次の情報が含まれています。

  • 必要な権限
  • アクションを実行しようとしたリソース
  • 認証アカウント

たとえば、プロジェクトのバケットを一覧表示する権限がない場合は、次のようなエラー メッセージが表示されます。

gcloud

ERROR: (gcloud.storage.buckets.list) HTTPError 403:
EMAIL_ADDRESS does not have
storage.buckets.list access to the Google Cloud project. Permission
'storage.buckets.list' denied on resource (or it may not exist). This command
is authenticated as EMAIL_ADDRESS which
is the active account specified by the [core/account] property.

REST

{
  "error": {
    "code": 403,
    "message": "EMAIL_ADDRESS does not have storage.buckets.list access to the Google Cloud project. Permission 'storage.buckets.list' denied on resource (or it may not exist).",
    "errors": [
      {
        "message": "EMAIL_ADDRESS does not have storage.buckets.list access to the Google Cloud project. Permission 'storage.buckets.list' denied on resource (or it may not exist).",
        "domain": "global",
        "reason": "forbidden"
      }
    ]
  }
}

不足している権限をリクエストする

組織でアクセス関連のポリシーを変更する権限がない場合は、権限エラーを自分で解決することはできません。ただし、エラー メッセージのコンテキストを使用して、管理者にアクセス権のリクエストを送信できます。

アクセス権をリクエストする方法は次のとおりです。

Cloud de Confiance コンソールを使用しており、ロールの付与に必要な権限がある場合は、リクエストする代わりに、エラー メッセージから直接ロールを付与できます。詳細については、 Cloud de Confiance コンソールを使用してロールを自分で付与するをご覧ください。

必要な権限をリクエストする

必要な権限をリクエストする手順は次のとおりです。

コンソール

  1. 不足している権限のリストで、[権限をリクエスト] をクリックします。

  2. [アクセスをリクエスト] パネルで、管理者に通知する方法を選択します。

    • 組織が重要な連絡先をサポートし、自動生成されたアクセス権のリクエスト メールを許可している場合は、組織の技術的な重要な連絡先に自動生成されたメールを送信できます。このメールを送信するには、次の操作を行います。

      1. [メールを自動生成して送信] を選択します。
      2. リクエストに含めたいコンテキストを追加します。
      3. [リクエストを送信] をクリックします。
    • アクセス権のリクエストをコピーして、任意のリクエスト管理システムに貼り付けるには、次の操作を行います。

      1. 組織が重要な連絡先をサポートし、自動生成されたメールを許可しているが、通知を手動で送信する場合は、[手動で通知] を選択します。
      2. リクエストに含めたいコンテキストを追加します。
      3. [メッセージをコピー] をクリックします。
      4. リクエストを任意のリクエスト管理システムに貼り付けてください。

      管理者は、アクセス権のリクエストと、提供された追加のコンテキストを受け取ります。

gcloud

エラー メッセージから不足している権限のリストをコピーし、任意のリクエスト管理システムを使用して、管理者にこれらの権限の付与を依頼します。

REST

エラー メッセージから不足している権限のリストをコピーし、任意のリクエスト管理システムを使用して、管理者にこれらの権限の付与を依頼します。

ロールをリクエストする

許可ポリシーが原因で権限エラーが発生した場合は、エラーを解決するために必要な権限を含むロールを付与するよう管理者にリクエストできます。

エラーの原因が別のポリシータイプである場合や、どのポリシータイプがエラーの原因であるかわからない場合は、代わりに必要な権限をリクエストしてください。

コンソール

  1. [特定のロールをリクエストする] セクションで、推奨されるロールのリストを確認し、リクエストするロールを選択します。ロールをクリックすると、詳細が表示されます。 このセクションは、許可ポリシーが原因で権限エラーが発生した場合にのみ表示されます。

  2. 選択したロールをクリックし、[ロールをリクエスト] をクリックします。

  3. [アクセスをリクエスト] パネルで、管理者に通知するためのオプションを 1 つ選択します。

    • 組織が重要な連絡先をサポートし、自動生成されたアクセス権のリクエスト メールを許可している場合は、組織の技術的な重要な連絡先に自動生成されたメールを送信できます。このメールを送信するには、次の操作を行います。

      1. [メールを自動生成して送信] を選択します。
      2. リクエストに含めたいコンテキストを追加します。
      3. [リクエストを送信] をクリックします。
    • アクセス権のリクエストをコピーして、任意のリクエスト管理システムに貼り付けるには、次の操作を行います。

      1. 組織が重要な連絡先をサポートし、自動生成されたメールを許可しているが、通知を手動で送信する場合は、[手動で通知] を選択します。
      2. リクエストに含めたいコンテキストを追加します。
      3. [メッセージをコピー] をクリックします。
      4. リクエストを任意のリクエスト管理システムに貼り付けてください。

    管理者は、アクセス権のリクエストと、提供された追加のコンテキストを受け取ります。

gcloud

  1. 不足している権限を含む IAM ロールを特定します。

    特定の権限が含まれているすべてのロールを確認するには、IAM ロールと権限のインデックスで権限を検索し、権限名をクリックします。

    ユースケースに一致する事前定義ロールがない場合は、代わりにカスタムロールを作成できます。

  2. 任意のリクエスト管理システムを使用して、管理者にロールの付与をリクエストします。

REST

  1. 不足している権限を含む IAM ロールを特定します。

    特定の権限が含まれているすべてのロールを確認するには、IAM ロールと権限のインデックスで権限を検索し、権限名をクリックします。

    ユースケースに一致する事前定義ロールがない場合は、代わりにカスタムロールを作成できます。

  2. 任意のリクエスト管理システムを使用して、管理者にロールの付与をリクエストします。

Cloud de Confiance コンソールを使用してロールを自分で付与する

Cloud de Confiance コンソールで権限エラーが発生し、ロールの付与に必要な権限がある場合は、権限エラー メッセージから直接ロールを付与できます。

  1. [付与するロールを選択する] セクションで、推奨されるロールのリストを確認し、リクエストするロールを選択します。ロールをクリックすると、詳細が表示されます。

  2. 選択したロールを付与するには、ロールをクリックして [アクセス権を付与] をクリックします。

アクセス権のリクエストの権限エラーを解決する

Cloud de Confiance コンソールで権限エラーが発生したユーザーから管理者にアクセス権のリクエストが届くことがあります。通常、これらのリクエストは次のユーザーに送信されます。

  • 組織の技術的な重要な連絡先組織で重要な連絡先が有効になっており、自動生成されたアクセス権リクエスト メールが許可されている場合、Cloud de Confiance コンソールで権限エラーが発生したユーザーは、組織の技術的な重要な連絡先に自動生成されたアクセス権リクエストを送信できます。

  • 任意のリクエスト管理システムで構成された連絡先。 Cloud de Confiance コンソールで権限エラーが発生したユーザーは、アクセス権のリクエスト メッセージをコピーして、任意のリクエスト管理システムを使用して送信できます。

これらのメッセージの形式は通常、次のとおりです。

user@example.com is requesting a role on the resource example.com:example-project.

Requestor's message:

"I need access to example-project to complete my work."

You may be able to resolve this request by granting access directly at:

ACCESS_REQUEST_PANEL_URL

Or use the Policy Troubleshooter to determine what's preventing access for user@example.com:

POLICY_TROUBLESHOOTER_URL

これらのリクエストには、次の方法で対応できます。

  • アクセス権を直接解決する: アクセス権のリクエストには、 Cloud de Confiance コンソールのアクセス権のリクエスト パネルへのリンクが含まれています。権限エラーが許可ポリシーによって発生している場合は、そのパネルからアクセス権を直接解決できます。

    アクセス権リクエスト パネルで、リクエストの詳細を確認し、リクエストへの対応方法を選択します。対応方法は次のとおりです。

    • リクエストされたロールを付与する
    • 必要なアクセス権がすでに付与されている既存のグループにユーザーを追加する
    • リクエストを拒否する
  • Policy Troubleshooter で詳細を表示する: アクセス権のリクエストには Policy Troubleshooter へのリンクが含まれており、ユーザーのアクセスをブロックしているポリシーを確認できます。この情報を使用して、ユーザーのアクセス問題を解決する方法を決定できます。詳細については、このページの権限エラーの原因となっているポリシーを特定するをご覧ください。

  • Policy Troubleshooter でアクセスに関する問題を修復するプレビュー): アクセス権ンのリクエストには、ポリシーの修復の概要へのリンクも含まれています。この概要には、リクエストしたプリンシパル、リソース、権限など、リクエストの詳細が記載されています。ポリシーの修復の概要から、許可ポリシーを含むアクセス権のリクエストを直接解決し、ユーザーのアクセスをブロックしているポリシーの詳細情報を取得できます。

    ポリシー修復の概要を使用してアクセス権のリクエストを解決する方法については、アクセスに関する問題を修復するをご覧ください。

権限エラーを手動で解決する

組織のアクセス関連ポリシーを変更する権限を持つ管理者は、エラーの原因となったポリシーの種類に関係なく、この戦略に従って権限エラーを解決できます。

権限エラーを解決するには、まずどのポリシー(許可または拒否)がエラーの原因になっているかを特定する必要があります。その後、エラーを解決します。

権限エラーの原因となっているポリシーを特定する

権限エラーの原因となっているポリシーを特定するには、Policy Troubleshooter を使用します。

Policy Troubleshooter では、プリンシパルがリソースにアクセスできるかどうかを判断できます。プリンシパル、リソース、権限を指定すると、Policy Troubleshooter により、プリンシパルのアクセス権に影響する許可ポリシー、拒否ポリシー、プリンシパル アクセス境界(PAB)ポリシーの調査が行われます。次に、これらのポリシーに基づいて、プリンシパルが指定された権限を使用してリソースにアクセスできるかどうかを示します。また、関連するポリシーを一覧表示し、それらがプリンシパルのアクセスにどのように影響するかを説明します。

アクセス権のトラブルシューティングを行い、Policy Troubleshooter の結果を解釈する方法については、IAM 権限のトラブルシューティングをご覧ください。

Cloud de Confiance コンソールのエラー メッセージには、リクエストに関与するプリンシパル、権限、リソースに関連する Policy Troubleshooter の修復ページ(プレビュー)のリンクが含まれています。このリンクを表示するには、[トラブルシューティングの詳細を表示] をクリックし、[Policy Troubleshooter] をクリックします。詳細については、アクセス権のリクエストを修復するをご覧ください。

アクセス権を更新して権限エラーを解決する

権限エラーの原因となっているポリシーを特定したら、エラーを解決するための手順を実施できます。

多くの場合、エラーの解決には、許可ポリシーまたは拒否ポリシーの作成または更新が必要です。

ただし、ポリシーを更新せずにエラーを解決する方法もあります。たとえば、必要な権限を持つグループにユーザーを追加したり、タグを追加してリソースをポリシーから除外できます。

さまざまなポリシーの種類によって発生する権限エラーを解決する方法については、以下をご覧ください。

許可ポリシーの権限エラーを解決する

許可ポリシーによって発生した権限エラーを解決するには、次のいずれかを行います。

必要な権限を持つロールを付与する

必要な権限を持つロールを見つけて付与するには、次の操作を行います。

  1. 不足している権限を含む IAM ロールを特定します。

    特定の権限が含まれているすべてのロールを確認するには、IAM ロールと権限のインデックスで権限を検索し、権限名をクリックします。

    ユースケースに一致する事前定義ロールがない場合は、代わりにカスタムロールを作成できます。

  2. ロールを付与するプリンシパルを特定します。

    • 権限を必要としているのがそのユーザーのみの場合は、ロールをユーザーに直接付与します。
    • ユーザーが、同様の権限を必要とするユーザーを含む Google グループに属している場合は、代わりにグループにロールを付与することを検討してください。グループにロールを付与すると、そのグループのすべてのメンバーがその権限を使用できます。ただし、その権限の使用が明示的に拒否されているメンバーは除きます。
  3. プリンシパルにロールを付与します。

ユーザーを Google グループに追加する

Google グループにリソースに対するロールが付与されている場合、そのグループのすべてのメンバーは、そのロールの権限を使用してリソースにアクセスできます。

既存のグループに、必要な権限を持つロールがすでに付与されている場合は、そのグループにユーザーを追加することで、必要な権限をユーザーに付与できます。

  1. 必要な権限を含むロールを持つグループを特定します。Policy Troubleshooter を使用してリクエストのトラブルシューティングをすでに実施している場合は、ポリシーに関するトラブルシューティングの結果を確認して、必要な権限を持つグループを特定できます。

    または、Policy Analyzer を使用して、必要な権限を持つグループを特定することもできます。

  2. ユーザーをグループに追加します。

拒否ポリシーの権限エラーを解決する

拒否ポリシーに関連する権限エラーを解決するには、次のいずれかを行います。

拒否ポリシーから自分を除外する

拒否ルールによってユーザーがリソースにアクセスできない場合は、次のいずれかの方法でユーザーをルールから除外できます。

  • 拒否ルールにユーザーを例外プリンシパルとして追加する。例外プリンシパルは、拒否ルールに含まれるグループのメンバーであっても、拒否ルールの影響を受けないプリンシパルです。

    拒否ルールに例外プリンシパルを追加するには、拒否ポリシーの更新手順に沿って操作します。拒否ポリシーを更新するときに、アクセスをブロックする拒否ルールを見つけて、ユーザーのプリンシパル ID を例外プリンシパルとして追加します。

  • ルールが適用されないグループにユーザーを追加する。グループが例外プリンシパルとしてリストされている場合、そのグループのすべてのメンバーは拒否ルールの対象外となります。

    ユーザーを免除グループに追加する手順は次のとおりです。

    1. Policy Troubleshooter を使用して、リソースへのアクセスをブロックしている拒否ポリシーを特定します。
    2. 拒否ポリシーを表示します
    3. グループの例外プリンシパルのリストを確認します。
    4. 除外グループを特定した場合は、ユーザーをグループに追加します。

拒否ポリシーから権限を削除する

拒否ルールにより、リストに記載されているプリンシパルは特定の権限を使用できなくなります。拒否ルールによってユーザーがリソースにアクセスできない場合は、必要な権限を拒否ルールから削除できます。

拒否ルールから権限を削除するには、拒否ポリシーの更新手順に沿って操作します。拒否ポリシーを更新するときに、アクセスをブロックする拒否ルールを見つけて、次のいずれかを行います。

  • 拒否ポリシーに必要な権限が個別にリストされている場合は、必要な権限を見つけて拒否ルールから削除します。
  • 拒否ルールで権限グループを使用している場合は、必要な権限を例外権限として追加します。例外権限は、ルールに含まれる権限グループの一部であっても、拒否ルールでブロックされない権限です。

拒否ポリシーからリソースを除外する

拒否ポリシーの条件を使用すると、リソースのタグに基づいて拒否ルールを適用できます。リソースのタグが拒否ルールの条件を満たしていない場合、拒否ルールは適用されません。

拒否ルールによってリソースへのアクセスがブロックされている場合は、拒否ルールまたはリソースのタグの条件を編集して、拒否ルールがリソースに適用されないようにします。

次のステップ