このドキュメントでは、リソースに必要なアクセス権がない場合に発生する可能性のあるエラー メッセージと、これらのエラーの解決方法について説明します。
権限エラー メッセージ
Google Cloud コンソール、Google Cloud CLI、REST API はすべて、アクセス権のないリソースにアクセスしようとするとエラー メッセージを表示します。
これらのエラー メッセージは、次のいずれかが原因で発生する可能性があります。
- 必要な権限がありません。必要な権限を持つロールに対して、許可ポリシーのロール バインディングまたは有効な Privileged Access Manager の利用資格のいずれかが必要です。必要な権限がない場合は、Google Cloud にエラー メッセージが表示されます。
- アクセスをブロックする拒否ポリシーがあります。拒否ポリシーによって必要な権限のいずれかを使用できない場合、 Google Cloud にエラー メッセージが表示されます。
- リソースにアクセスする権限がありません。プリンシパル アクセス境界ポリシーの対象である場合、アクセスしようとしているリソースは、ポリシーのプリンシパル アクセス境界ルールに含まれている必要があります。そうでない場合は、 Google Cloud にエラー メッセージが表示されます。
- リソースが存在しません。リソースが存在しない場合、Google Cloud はエラー メッセージを表示します。
以降のセクションでは、Google Cloud コンソール、gcloud CLI、REST API でこれらのエラー メッセージがどのように表示されるかについて説明します。
Google Cloud コンソールのエラー メッセージ
Google Cloud コンソールでは、次のようなエラー メッセージが表示されます。
これらのエラー メッセージには次の情報が含まれています。
- アクセスしようとしたリソース: エラーページのタイトルにリソース名が表示されます。これは、権限エラーが発生したときにアクセスしようとしたリソースを示します。
- 必要な権限がありません: リソースにアクセスするために必要な権限のリスト。
必要な権限を含むロールを持つ Privileged Access Manager の利用資格のリスト: このリストは網羅的ではありません。アクセスに関する問題を解決するために Google Cloud が推奨する上位の利用資格のみが含まれています。
このリストは、追加の IAM ロールを付与することで解決できる権限エラーでのみ使用できます。
利用資格をクリックすると、利用資格の詳細を確認し、利用資格に対する付与をリクエストできます。詳細については、このドキュメントの Privileged Access Manager のアクセス権付与をリクエストするをご覧ください。
必要な権限を含む利用資格がない場合、エラー メッセージ ページに利用資格のリストは表示されません。
必要な権限を含む IAM ロールのリスト: このリストは網羅的なものではありません。Google Cloud がアクセス問題を解決するために提案するロールのキュレートされたリストが含まれています。並べ替えは、ロールで許可されるアクションの種類、サービスの関連性、権限の数に基づいて行われます。
ロールの付与に必要な権限がある場合、このセクションのタイトルは [付与するロールを選択] になります。必要な権限がない場合、このセクションのタイトルは [特定のロールをリクエスト] になります。
このリストは、追加の IAM ロールを付与することで解決できる権限エラーでのみ使用できます。
ロールをクリックすると、ロールの詳細を確認し、ロールの付与をリクエストできます。ロールの付与に必要な権限がある場合は、リクエストする代わりに自分でロールを付与できます。
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"
}
]
}
}
不足している権限をリクエストする
組織でアクセス関連のポリシーを変更する権限がない場合は、権限エラーを自分で解決することはできません。ただし、エラー メッセージのコンテキストを使用して、管理者にアクセス リクエストを送信できます。
アクセス権をリクエストする方法は次のとおりです。
必要な権限をリクエストします。この解決策は、すべてのタイプの権限エラーに有効です。
Privileged Access Manager の利用資格に対する権限付与をリクエストします。この解決策は、権限エラーが許可ポリシーによるものであり、必要な権限を持つ Privileged Access Manager の利用資格がある場合にのみ有効です。
必要な権限を持つロールをリクエストします。この解決策は、権限エラーが許可ポリシーによる場合にのみ有効です。
Google Cloud コンソールを使用しており、ロールの付与に必要な権限がある場合は、リクエストする代わりに、エラー メッセージから直接ロールを付与できます。詳細については、 Google Cloud コンソールでロールを自己付与するをご覧ください。
必要な権限をリクエストする
必要な権限をリクエストする手順は次のとおりです。
コンソール
不足している権限のリストで、[権限をリクエスト] をクリックします。
[アクセスをリクエスト] パネルで、管理者に通知する方法を選択します。
組織が重要な連絡先をサポートしている場合は、組織の技術的な重要な連絡先に自動生成されたメールを送信できます。このメールを送信するには、次の操作を行います。
- [メールを自動生成して送信] を選択します。
- リクエストについて含めたいコンテキストを追加します。
- [リクエストを送信] をクリックします。
アクセス リクエストをコピーして、任意のリクエスト管理システムに貼り付けるには、次の操作を行います。
- 組織が重要な連絡先をサポートしているが、通知を手動で送信する場合は、[手動で通知] を選択します。
- リクエストについて含めたいコンテキストを追加します。
- [メッセージをコピー] をクリックします。
- リクエストを任意のリクエスト管理システムに貼り付けます。
管理者は、アクセス権のリクエストと、提供された追加のコンテキストを受け取ります。
gcloud
エラー メッセージから不足している権限のリストをコピーし、任意のリクエスト管理システムを使用して、管理者にこれらの権限の付与を依頼します。
REST
エラー メッセージから不足している権限のリストをコピーし、任意のリクエスト管理システムを使用して、管理者にこれらの権限の付与を依頼します。
Privileged Access Manager の利用資格に対する権限付与をリクエストする
Privileged Access Manager の利用資格は、いつでもリクエストできる IAM ロールのセットを定義します。リクエストが成功すると、リクエストされたロールが一時的に付与されます。
この解決オプションは、権限エラーが許可ポリシーによるもので、必要な権限を持つ Privileged Access Manager の利用資格がある場合にのみ使用できます。
既存の利用資格に対する権限付与をリクエストするには、次の操作を行います。
コンソール
エラー メッセージが表示されたら、[一時的なアクセスをリクエスト] セクションを探します。このセクションでは、必要な権限を持つロールを含む Privileged Access Manager のすべての利用資格を一覧表示します。
[一時アクセスをリクエスト] セクションが返されない場合、必要な権限を含む利用資格はありません。この場合は、管理者に新しい利用資格の作成を依頼してください。
利用可能な利用資格のリストを確認し、権限付与をリクエストする利用資格を選択します。
利用資格をクリックし、[アクセス権をリクエスト] をクリックします。
[権限付与をリクエスト] パネルで、権限付与リクエストの詳細を入力します。
権限付与に必要な期間(利用資格に設定されている最大期間まで)。
必要な場合、権限付与の正当性。
省略可: 権限付与リクエストを通知するメールアドレス。承認者に関連付けられている Google ID に自動的に通知されます。ただし、特に Workforce Identity 連携を使用している場合は、別のメールアドレスのセットに通知することもできます。
[権限付与をリクエスト] をクリックします。
承認ステータスを含む権限付与の履歴を表示するには、Google Cloud コンソールの Privileged Access Manager ページに移動し、[権限付与> 自分の権限付与] をクリックします。
gcloud
利用可能な利用資格を検索して、必要な権限を持つロールを含む利用資格を見つけます。
利用資格が返されない場合は、管理者に新しい利用資格の作成を依頼できます。
省略可: 権限付与リクエストのステータスを確認します。
REST
利用可能な利用資格を検索して、必要な権限を持つロールを含む利用資格を見つけます。
利用資格が返されない場合は、管理者に新しい利用資格の作成を依頼できます。
省略可: 権限付与リクエストのステータスを確認します。
ロールをリクエストする
権限エラーが許可ポリシーによるものである場合は、エラーを解決するために必要な権限を持つロールを付与するよう管理者にリクエストできます。
エラーの原因が別のポリシーの種類である場合や、どのポリシーの種類が原因かわからない場合は、代わりに必要な権限をリクエストしてください。
コンソール
[特定のロールをリクエストする] セクションで、推奨されるロールのリストを確認し、リクエストするロールを選択します。ロールをクリックすると、ロールの詳細が表示されます。このセクションは、許可ポリシーが原因で権限エラーが発生した場合にのみ表示されます。
選択したロールをクリックし、[ロールをリクエスト] をクリックします。
[アクセスをリクエスト] パネルで、管理者に通知するためのオプションを 1 つ選択します。
組織が重要な連絡先をサポートしている場合は、組織の技術的な重要な連絡先に自動生成されたメールを送信できます。このメールを送信するには、次の操作を行います。
- [メールを自動生成して送信] を選択します。
- リクエストについて含めたいコンテキストを追加します。
- [リクエストを送信] をクリックします。
アクセス リクエストをコピーして、任意のリクエスト管理システムに貼り付けるには、次の操作を行います。
- 組織が重要な連絡先をサポートしているが、通知を手動で送信する場合は、[手動で通知] を選択します。
- リクエストについて含めたいコンテキストを追加します。
- [メッセージをコピー] をクリックします。
- リクエストを任意のリクエスト管理システムに貼り付けます。
管理者は、アクセス権のリクエストと、提供された追加のコンテキストを受け取ります。
gcloud
不足している権限を含む IAM ロールを特定します。
特定の権限が含まれているすべてのロールを確認するには、IAM ロールと権限のインデックスで権限を検索し、権限名をクリックします。
ユースケースに一致する事前定義ロールがない場合は、代わりにカスタムロールを作成できます。
任意のリクエスト管理システムを使用して、管理者にロールの付与をリクエストします。
REST
不足している権限を含む IAM ロールを特定します。
特定の権限が含まれているすべてのロールを確認するには、IAM ロールと権限のインデックスで権限を検索し、権限名をクリックします。
ユースケースに一致する事前定義ロールがない場合は、代わりにカスタムロールを作成できます。
任意のリクエスト管理システムを使用して、管理者にロールの付与をリクエストします。
Google Cloud コンソールでロールを自己付与する
Google Cloud コンソールで権限エラーが発生し、ロールの付与に必要な権限がある場合は、権限エラー メッセージから直接ロールを付与できます。
[付与するロールを選択] セクションで、推奨されるロールのリストを確認し、リクエストするロールを選択します。ロールをクリックすると、ロールの詳細が表示されます。
選択したロールを付与するには、ロールをクリックして [アクセス権を付与] をクリックします。
アクセス リクエストの権限エラーを解決する
管理者の場合は、 Google Cloud コンソールで権限エラーが発生したユーザーからアクセス権のリクエストが届くことがあります。通常、これらのリクエストは次のユーザーに送信されます。
組織の技術的な重要な連絡先。組織でエッセンシャル コンタクトが有効になっている場合、Google Cloud コンソールで権限エラーが発生したユーザーは、組織の技術的なエッセンシャル コンタクトにアクセス リクエストを送信できます。
ご希望のリクエスト管理システムで設定された連絡先。 Google Cloud コンソールで権限エラーが発生したユーザーは、アクセス リクエスト メッセージをコピーして、希望するリクエスト管理システムを使用して送信できます。
これらのメッセージの形式は通常、次のとおりです。
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
これらのリクエストには、次の方法で対応できます。
アクセス権を直接解決する: アクセス リクエストには、 Google Cloud コンソールのアクセス リクエスト パネルへのリンクが含まれています。権限エラーが許可ポリシーによるものである場合は、そのパネルからアクセス権を直接解決できます。
アクセス権リクエスト パネルで、リクエストの詳細を確認し、リクエストへの対応方法を選択できます。返信方法は次のとおりです。
- リクエストされたロールを付与する
- 必要なアクセス権がすでに付与されている既存のグループにユーザーを追加する
- リクエストを拒否する
Policy Troubleshooter で詳細を表示する: アクセス リクエストには Policy Troubleshooter へのリンクも含まれています。このリンクを使用すると、ユーザーのアクセスをブロックしているポリシーを確認できます。この情報を使用して、ユーザーのアクセス問題を解決する方法を決定できます。詳細については、このページの権限エラーの原因となっているポリシーを特定するをご覧ください。
権限エラーを手動で解決する
組織のアクセス関連ポリシーを変更する権限を持つ管理者は、エラーの原因となったポリシーのタイプに関係なく、これらの戦略を使用して権限エラーを解決できます。
権限エラーを解決するには、まず、どのポリシー(許可、拒否、プリンシパル アクセス境界)がエラーの原因になっているかを特定する必要があります。その後、エラーを解決できます。
権限エラーの原因となっているポリシーを特定する
権限エラーの原因となっているポリシーを特定するには、ポリシーに関するトラブルシューティングを使用します。
Policy Troubleshooter では、プリンシパルがリソースにアクセスできるかどうかを判断できます。プリンシパル、リソース、権限を指定すると、Policy Troubleshooter により、プリンシパルのアクセス権に影響する許可ポリシー、拒否ポリシー、プリンシパル アクセス境界(PAB)ポリシーの調査が行われます。次に、これらのポリシーに基づいて、プリンシパルが指定された権限を使用してリソースにアクセスできるかどうかを示します。また、関連するポリシーを一覧表示し、それらがプリンシパルのアクセスにどのように影響するかを説明します。アクセス権のトラブルシューティングを行い、Policy Troubleshooter の結果を解釈する方法については、IAM 権限のトラブルシューティングをご覧ください。
Google Cloud コンソールのエラー メッセージには、リクエストに関与するプリンシパル、権限、リソースの Policy Troubleshooter の結果ページへのリンクが含まれています。このリンクを表示するには、[トラブルシューティングの詳細を表示] をクリックし、[トラブルシューティング URL] フィールドの値を確認します。
アクセス権を更新して権限エラーを解決する
権限エラーの原因となっているポリシーを特定したら、エラーを解決するための手順を実行できます。
多くの場合、エラーの解決には、許可ポリシー、拒否ポリシー、プリンシパル アクセス境界ポリシーの作成または更新が必要です。
ただし、ポリシーの更新を伴わないエラーを解決する方法もあります。たとえば、必要な権限を持つグループにユーザーを追加したり、タグを追加してリソースをポリシーから除外したりできます。
さまざまなポリシー タイプが原因で発生した権限エラーを解決するさまざまな方法については、以下をご覧ください。
許可ポリシーの権限エラーを解決する
許可ポリシーによる権限エラーを解決するには、次のいずれかを行います。
必要な権限を持つロールを付与する
必要な権限を持つロールを見つけて付与するには、次の操作を行います。
不足している権限を含む IAM ロールを特定します。
特定の権限が含まれているすべてのロールを確認するには、IAM ロールと権限のインデックスで権限を検索し、権限名をクリックします。
ユースケースに一致する事前定義ロールがない場合は、代わりにカスタムロールを作成できます。
ロールを付与するプリンシパルを指定します。
プリンシパルにロールを付与します。
Privileged Access Manager の利用資格に対する権限付与を承認する
Privileged Access Manager の利用資格を使用すると、ユーザーは特定の IAM ロールの付与をリクエストできます。ユーザーの付与リクエストを承認すると、リクエストされたロールが一時的に付与されます。
必要な権限を含むロールを持つ Privileged Access Manager の利用資格がユーザーにすでに付与されている場合は、その利用資格に対して権限付与をリクエストできます。権限付与をリクエストされたら、権限付与を承認して権限エラーを解決できます。
ユーザーに利用資格がない場合は、ユーザーが利用資格に対して権限付与をリクエストできるように、新しい利用資格を作成できます。
ユーザーを Google グループに追加する
Google グループにリソースに対するロールが付与されている場合、そのグループのすべてのメンバーは、そのロールの権限を使用してリソースにアクセスできます。
既存のグループに、必要な権限を持つロールがすでに付与されている場合は、そのグループにユーザーを追加することで、ユーザーに必要な権限を付与できます。
必要な権限を持つロールを持つグループを特定します。ポリシーに関するトラブルシューティングを使用してリクエストのトラブルシューティングをすでに実施している場合は、ポリシーに関するトラブルシューティングの結果を確認して、必要な権限を持つグループを特定できます。
または、Policy Analyzer を使用して、必要な権限を持つグループを特定することもできます。
拒否ポリシーの権限エラーを解決する
拒否ポリシーに関連する権限エラーを解決するには、次のいずれかを行います。
拒否ポリシーから除外する
拒否ルールによってユーザーがリソースにアクセスできない場合は、次のいずれかの方法でユーザーをルールから除外できます。
拒否ルールにユーザーを例外プリンシパルとして追加します。例外プリンシパルは、拒否ルールに含まれるグループのメンバーであっても、拒否ルールの影響を受けないプリンシパルです。
拒否ルールに例外プリンシパルを追加するには、拒否ポリシーを更新する手順に沿って操作します。拒否ポリシーを更新するときに、アクセスをブロックする拒否ルールを見つけて、ユーザーのプリンシパル ID を例外プリンシパルとして追加します。
ルールが適用されないグループにユーザーを追加します。グループが例外プリンシパルとしてリストされている場合、そのグループのすべてのメンバーは拒否ルールの対象外となります。
ユーザーを免除グループに追加する手順は次のとおりです。
- Policy Troubleshooter を使用して、リソースへのアクセスをブロックしている拒否ポリシーを特定します。
- 拒否ポリシーを表示する。
- グループの例外プリンシパルのリストを確認します。
- 除外グループを特定した場合は、ユーザーをグループに追加します。
拒否ポリシーから権限を削除する
拒否ルールにより、リストに記載されているプリンシパルは特定の権限を使用できなくなります。拒否ルールによってユーザーがリソースにアクセスできない場合は、必要な権限を拒否ルールから削除できます。
拒否ルールから権限を削除するには、拒否ポリシーを更新するの手順に沿って操作します。拒否ポリシーを更新するときに、アクセスをブロックする拒否ルールを見つけて、次のいずれかを行います。
- 拒否ポリシーに必要な権限が個別にリストされている場合は、必要な権限を見つけて拒否ルールから削除します。
- 拒否ルールで権限グループを使用している場合は、必要な権限を例外権限として追加します。例外の権限は、ルールに含まれる権限グループの一部であっても、拒否ルールでブロックされない権限です。
拒否ポリシーからリソースを除外する
拒否ポリシーの条件を使用すると、リソースのタグに基づいて拒否ルールを適用できます。リソースのタグが拒否ルールの条件を満たしていない場合、拒否ルールは適用されません。
拒否ルールによってリソースへのアクセスがブロックされている場合は、拒否ルールまたはリソースのタグの条件を編集して、拒否ルールがリソースに適用されないようにします。
拒否ルールで条件を使用する方法については、拒否ポリシーの条件をご覧ください。
拒否ポリシーを更新する方法については、拒否ポリシーを更新するをご覧ください。
リソースのタグを編集する方法については、タグの作成と管理をご覧ください。
プリンシパル アクセス境界ポリシーの権限エラーを解決する
デフォルトでは、プリンシパルはすべての Google Cloud リソースにアクセスできます。ただし、プリンシパル アクセス境界ポリシーの対象となる場合、それらのプリンシパルは、対象となるプリンシパル アクセス境界ポリシーにリストされているリソースにのみアクセスできます。このような場合、プリンシパル アクセス境界ポリシーによって、プリンシパルがリソースにアクセスできなくなる可能性があります。
プリンシパル アクセス境界ポリシーに関連するエラーを解決するには、次のいずれかを行います。
リソースをプリンシパル アクセス境界ポリシーに追加する
ユーザーが対象となるプリンシパル アクセス境界ポリシーにリソースが含まれている場合、そのユーザーはそのリソースにアクセスできます。
プリンシパル アクセス境界ポリシーにリソースを追加するには、次のいずれかを行います。
新しいプリンシパル アクセス境界ポリシーを作成します。
- リソースを含む新しいプリンシパル アクセス境界ポリシーを作成します。
ユーザーが属するプリンシパル セットにポリシーをバインドします。
プリンシパル セットの詳細については、サポートされているプリンシパル セットをご覧ください。
既存のプリンシパル アクセス境界ポリシーを更新します。
- ユーザーが属するプリンシパル セットのプリンシパル アクセス境界ポリシー バインディングを一覧表示します。各バインディングは、プリンシパル セットにバインドされているプリンシパル アクセス境界ポリシーを表します。
- バインディングのリストから、変更するプリンシパル アクセス境界ポリシーを特定します。
- 省略可: ポリシーにバインドされているプリンシパル セットを確認するには、ポリシーのプリンシパル アクセス境界ポリシー バインディングを一覧表示します。ポリシーを更新すると、ポリシーがバインドされているすべてのプリンシパル セットのアクセス権に影響します。
- リソースが含まれるようにプリンシパル アクセス境界ポリシーを編集します。
特定のプリンシパルを除外する条件を追加する
プリンシパル アクセス境界ポリシー バインディングの条件を使用して、プリンシパル アクセス境界ポリシーが適用されるプリンシパルを絞り込むことができます。
ユーザーにプリンシパル アクセス境界ポリシーを適用しない場合は、プリンシパル アクセス境界ポリシー バインディングの条件を使用して、ユーザーをプリンシパル アクセス境界ポリシーから除外します。
この方法でエラーを解決するには、ユーザーを対象とするすべてのプリンシパル アクセス境界ポリシーからユーザーを除外する必要があります。これにより、ユーザーは任意の Google Cloud リソースにアクセスできるようになります。
この方法はおすすめしません。代わりに、リソースをプリンシパル アクセス境界ポリシーに追加することを検討してください。
ユーザーが適用されるプリンシパル アクセス境界ポリシーを表示するには、ユーザーが属するプリンシパル セットのポリシー バインディングを一覧表示します。各バインディングは、プリンシパル セットにバインドされているプリンシパル アクセス境界ポリシーを表します。
プリンシパル アクセス境界ポリシー バインディングに条件を追加する方法については、プリンシパル アクセス境界ポリシーの既存のポリシー バインディングを編集するをご覧ください。