Tool: troubleshoot_iam_error_id
Checks the access request associated with the error identifier and explains why the access is blocked by IAM policies.
If the error ID is not found by the backend, retry using an exponential backoff strategy. Start with an initial delay of 1m, then retry. If the error ID is not found, double the delay time for each retry attempt (for example, 2m, 4m, 8m, etc.). If the total duration from the first attempt exceeds 60 minutes, terminate the process. Assume that the backend will not be able to provide an explanation for the error. It is possible that troubleshooting for this specific error ID is not supported or there is an issue on the backend.
If you are an agent that does not have the capability to wait or understand time, do not retry. Instead, return an error stating that waiting is required to retry finding the error ID, but your environment does not support waiting or tracking time.
The following sample demonstrate how to use curl to invoke the troubleshoot_iam_error_id MCP tool.
| Curl Request |
|---|
curl --location 'https://policytroubleshooter.googleapis.com/mcp' \ --header 'content-type: application/json' \ --header 'accept: application/json, text/event-stream' \ --data '{ "method": "tools/call", "params": { "name": "troubleshoot_iam_error_id", "arguments": { // provide these details according to the tool's MCP specification } }, "jsonrpc": "2.0", "id": 1 }' |
Input Schema
Request to troubleshoot access denial with the IAM error identifier.
TroubleshootIamPolicyErrorRequest
| JSON representation |
|---|
{ // Union field |
| Fields | |
|---|---|
Union field kind. The unique identifier for the access denied request. kind can be only one of the following: |
|
errorInfoId |
This identifier is returned in the |
Output Schema
Response for troubleshoot access denial with the IAM error identifier.
TroubleshootIamPolicyErrorResponse
| JSON representation |
|---|
{ "overallAccessState": enum ( |
| Fields | |
|---|---|
overallAccessState |
Indicates whether the principal has the permission to access the resource, based on evaluating all types of the applicable IAM policies. |
accessContext |
The access context associated with the ErrorInfoId. |
allowPolicyExplanation |
An explanation of how the applicable IAM allow policies affect the final access state. |
denyPolicyExplanation |
An explanation of how the applicable IAM deny policies affect the final access state. |
pabPolicyExplanation |
An explanation of how the applicable principal access boundary policies affect the final access state. |
AccessContext
| JSON representation |
|---|
{ "principal": string, "permission": string, // Union field |
| Fields | |
|---|---|
principal |
The email address of the principal who requested access. For example, The principal must be a Google Account or a service account. Other types of principals are not supported. |
permission |
Required. The IAM permission name provided by the user in the access denied request. |
Union field resource. The resource for which access was requested or its parent. resource can be only one of the following: |
|
name |
The relative resource name, not including the / prefix. For example, |
parent |
The full resource name of the parent where IAM policy is configured. For example, |
AllowPolicyExplanation
| JSON representation |
|---|
{ "allowAccessState": enum ( |
| Fields | |
|---|---|
allowAccessState |
Indicates whether the principal has the specified permission for the specified resource, based on evaluating all applicable IAM allow policies. |
explainedPolicies[] |
List of IAM allow policies that were evaluated to check the principal's permissions, with annotations to indicate how each policy contributed to the final result. The list of policies includes the policy for the resource itself, as well as allow policies that are inherited from higher levels of the resource hierarchy, including the organization, the folder, and the project. To learn more about the resource hierarchy, see https://cloud.google.com/iam/help/resource-hierarchy. |
relevance |
The relevance of the allow policy type to the overall access state. |
ExplainedAllowPolicy
| JSON representation |
|---|
{ "allowAccessState": enum ( |
| Fields | |
|---|---|
allowAccessState |
Required. Indicates whether this policy provides the specified permission to the specified principal for the specified resource. This field does not indicate whether the principal actually has the permission for the resource. There might be another policy that overrides this policy. To determine whether the principal actually has the permission, use the |
fullResourceName |
The full resource name that identifies the resource. For example, If the sender of the request does not have access to the policy, this field is omitted. For examples of full resource names for Google Cloud services, see https://cloud.google.com/iam/help/troubleshooter/full-resource-names. |
bindingExplanations[] |
Details about how each role binding in the policy affects the principal's ability, or inability, to use the permission for the resource. The order of the role bindings matches the role binding order in the policy. If the sender of the request does not have access to the policy, this field is omitted. |
relevance |
The relevance of this policy to the overall access state in the If the sender of the request does not have access to the policy, this field is omitted. |
policy |
The IAM allow policy attached to the resource. If the sender of the request does not have access to the policy, this field is empty. |
AllowBindingExplanation
| JSON representation |
|---|
{ "allowAccessState": enum ( |
| Fields | |
|---|---|
allowAccessState |
Required. Indicates whether this role binding gives the specified permission to the specified principal on the specified resource. This field does not indicate whether the principal actually has the permission on the resource. There might be another role binding that overrides this role binding. To determine whether the principal actually has the permission, use the |
role |
The role that this role binding grants. For example, For a complete list of predefined IAM roles, as well as the permissions in each role, see https://cloud.google.com/iam/help/roles/reference. |
rolePermission |
Indicates whether the role granted by this role binding contains the specified permission. |
rolePermissionRelevance |
The relevance of the permission's existence, or nonexistence, in the role to the overall determination for the entire policy. |
combinedMembership |
The combined result of all memberships. Indicates if the principal is included in any role binding, either directly or indirectly. |
memberships |
Indicates whether each role binding includes the principal specified in the request, either directly or indirectly. Each key identifies a principal in the role binding, and each value indicates whether the principal in the role binding includes the principal in the request. For example, suppose that a role binding includes the following principals:
You want to troubleshoot access for For the first principal in the role binding, the key is For the second principal in the role binding, the key is An object containing a list of |
relevance |
The relevance of this role binding to the overall determination for the entire policy. |
condition |
A condition expression that specifies when the role binding grants access. To learn about IAM Conditions, see https://cloud.google.com/iam/help/conditions/overview. |
conditionExplanation |
Condition evaluation state for this role binding. |
AnnotatedAllowMembership
| JSON representation |
|---|
{ "membership": enum ( |
| Fields | |
|---|---|
membership |
Indicates whether the role binding includes the principal. |
relevance |
The relevance of the principal's status to the overall determination for the role binding. |
MembershipsEntry
| JSON representation |
|---|
{
"key": string,
"value": {
object ( |
| Fields | |
|---|---|
key |
|
value |
|
Expr
| JSON representation |
|---|
{ "expression": string, "title": string, "description": string, "location": string } |
| Fields | |
|---|---|
expression |
Textual representation of an expression in Common Expression Language syntax. |
title |
Optional. Title for the expression, i.e. a short string describing its purpose. This can be used e.g. in UIs which allow to enter the expression. |
description |
Optional. Description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI. |
location |
Optional. String indicating the location of the expression for error reporting, e.g. a file name and a position in the file. |
ConditionExplanation
| JSON representation |
|---|
{ "value": value, "errors": [ { object ( |
| Fields | |
|---|---|
value |
Value of the condition. |
errors[] |
Any errors that prevented complete evaluation of the condition expression. |
evaluationStates[] |
The value of each statement of the condition expression. The value can be |
Value
| JSON representation |
|---|
{ // Union field |
| Fields | |
|---|---|
Union field kind. The kind of value. kind can be only one of the following: |
|
nullValue |
Represents a JSON |
numberValue |
Represents a JSON number. Must not be |
stringValue |
Represents a JSON string. |
boolValue |
Represents a JSON boolean ( |
structValue |
Represents a JSON object. |
listValue |
Represents a JSON array. |
Struct
| JSON representation |
|---|
{ "fields": { string: value, ... } } |
| Fields | |
|---|---|
fields |
Unordered map of dynamically typed values. An object containing a list of |
FieldsEntry
| JSON representation |
|---|
{ "key": string, "value": value } |
| Fields | |
|---|---|
key |
|
value |
|
ListValue
| JSON representation |
|---|
{ "values": [ value ] } |
| Fields | |
|---|---|
values[] |
Repeated field of dynamically typed values. |
Status
| JSON representation |
|---|
{ "code": integer, "message": string, "details": [ { "@type": string, field1: ..., ... } ] } |
| Fields | |
|---|---|
code |
The status code, which should be an enum value of |
message |
A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the |
details[] |
A list of messages that carry the error details. There is a common set of message types for APIs to use. An object containing fields of an arbitrary type. An additional field |
Any
| JSON representation |
|---|
{ "typeUrl": string, "value": string } |
| Fields | |
|---|---|
typeUrl |
Identifies the type of the serialized Protobuf message with a URI reference consisting of a prefix ending in a slash and the fully-qualified type name. Example: type.googleapis.com/google.protobuf.StringValue This string must contain at least one The prefix is arbitrary and Protobuf implementations are expected to simply strip off everything up to and including the last All type URL strings must be legal URI references with the additional restriction (for the text format) that the content of the reference must consist only of alphanumeric characters, percent-encoded escapes, and characters in the following set (not including the outer backticks): In the original design of |
value |
Holds a Protobuf serialization of the type described by type_url. A base64-encoded string. |
EvaluationState
| JSON representation |
|---|
{
"start": integer,
"end": integer,
"value": value,
"errors": [
{
object ( |
| Fields | |
|---|---|
start |
Start position of an expression in the condition, by character. |
end |
End position of an expression in the condition, by character, end included, for example: the end position of the first part of |
value |
Value of this expression. |
errors[] |
Any errors that prevented complete evaluation of the condition expression. |
Policy
| JSON representation |
|---|
{ "version": integer, "bindings": [ { object ( |
| Fields | |
|---|---|
version |
Specifies the format of the policy. Valid values are Any operation that affects conditional role bindings must specify version
Important: If you use IAM Conditions, you must include the If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the IAM documentation. |
bindings[] |
Associates a list of The |
auditConfigs[] |
Specifies cloud audit logging configuration for this policy. |
etag |
Important: If you use IAM Conditions, you must include the A base64-encoded string. |
Binding
| JSON representation |
|---|
{
"role": string,
"members": [
string
],
"condition": {
object ( |
| Fields | |
|---|---|
role |
Role that is assigned to the list of For an overview of the IAM roles and permissions, see the IAM documentation. For a list of the available pre-defined roles, see here. |
members[] |
Specifies the principals requesting access for a Google Cloud resource.
|
condition |
The condition that is associated with this binding. If the condition evaluates to If the condition evaluates to To learn which resources support conditions in their IAM policies, see the IAM documentation. |
AuditConfig
| JSON representation |
|---|
{
"service": string,
"auditLogConfigs": [
{
object ( |
| Fields | |
|---|---|
service |
Specifies a service that will be enabled for audit logging. For example, |
auditLogConfigs[] |
The configuration for logging of each type of permission. |
AuditLogConfig
| JSON representation |
|---|
{
"logType": enum ( |
| Fields | |
|---|---|
logType |
The log type that this config enables. |
exemptedMembers[] |
Specifies the identities that do not cause logging for this type of permission. Follows the same format of |
DenyPolicyExplanation
| JSON representation |
|---|
{ "denyAccessState": enum ( |
| Fields | |
|---|---|
denyAccessState |
Indicates whether the principal is denied the specified permission for the specified resource, based on evaluating all applicable IAM deny policies. |
explainedResources[] |
List of resources with IAM deny policies that were evaluated to check the principal's denied permissions, with annotations to indicate how each policy contributed to the final result. The list of resources includes the policy for the resource itself, as well as policies that are inherited from higher levels of the resource hierarchy, including the organization, the folder, and the project. The order of the resources starts from the resource and climbs up the resource hierarchy. To learn more about the resource hierarchy, see https://cloud.google.com/iam/help/resource-hierarchy. |
relevance |
The relevance of the deny policy result to the overall access state. |
permissionDeniable |
Indicates whether the permission to troubleshoot is supported in deny policies. |
ExplainedDenyResource
| JSON representation |
|---|
{ "denyAccessState": enum ( |
| Fields | |
|---|---|
denyAccessState |
Required. Indicates whether any policies attached to this resource deny the specific permission to the specified principal for the specified resource. This field does not indicate whether the principal actually has the permission for the resource. There might be another policy that overrides this policy. To determine whether the principal actually has the permission, use the |
fullResourceName |
The full resource name that identifies the resource. For example, If the sender of the request does not have access to the policy, this field is omitted. For examples of full resource names for Google Cloud services, see https://cloud.google.com/iam/help/troubleshooter/full-resource-names. |
explainedPolicies[] |
List of IAM deny policies that were evaluated to check the principal's denied permissions, with annotations to indicate how each policy contributed to the final result. |
relevance |
The relevance of this policy to the overall access state in the If the sender of the request does not have access to the policy, this field is omitted. |
ExplainedDenyPolicy
| JSON representation |
|---|
{ "denyAccessState": enum ( |
| Fields | |
|---|---|
denyAccessState |
Required. Indicates whether this policy denies the specified permission to the specified principal for the specified resource. This field does not indicate whether the principal actually has the permission for the resource. There might be another policy that overrides this policy. To determine whether the principal actually has the permission, use the |
policy |
The IAM deny policy attached to the resource. If the sender of the request does not have access to the policy, this field is omitted. |
ruleExplanations[] |
Details about how each rule in the policy affects the principal's inability to use the permission for the resource. The order of the deny rule matches the order of the rules in the deny policy. If the sender of the request does not have access to the policy, this field is omitted. |
relevance |
The relevance of this policy to the overall access state in the If the sender of the request does not have access to the policy, this field is omitted. |
Policy
| JSON representation |
|---|
{
"name": string,
"uid": string,
"kind": string,
"displayName": string,
"annotations": {
string: string,
...
},
"etag": string,
"createTime": string,
"updateTime": string,
"deleteTime": string,
"rules": [
{
object ( |
| Fields | |
|---|---|
name |
Immutable. The resource name of the The attachment point is identified by its URL-encoded full resource name, which means that the forward-slash character, For organizations and folders, use the numeric ID in the full resource name. For projects, requests can use the alphanumeric or the numeric ID. Responses always contain the numeric ID. |
uid |
Immutable. The globally unique ID of the |
kind |
Output only. The kind of the |
displayName |
A user-specified description of the |
annotations |
A key-value map to store arbitrary metadata for the An object containing a list of |
etag |
An opaque tag that identifies the current version of the If this field is present in a |
createTime |
Output only. The time when the Uses RFC 3339, where generated output will always be Z-normalized and use 0, 3, 6 or 9 fractional digits. Offsets other than "Z" are also accepted. Examples: |
updateTime |
Output only. The time when the Uses RFC 3339, where generated output will always be Z-normalized and use 0, 3, 6 or 9 fractional digits. Offsets other than "Z" are also accepted. Examples: |
deleteTime |
Output only. The time when the Uses RFC 3339, where generated output will always be Z-normalized and use 0, 3, 6 or 9 fractional digits. Offsets other than "Z" are also accepted. Examples: |
rules[] |
A list of rules that specify the behavior of the |
AnnotationsEntry
| JSON representation |
|---|
{ "key": string, "value": string } |
| Fields | |
|---|---|
key |
|
value |
|
Timestamp
| JSON representation |
|---|
{ "seconds": string, "nanos": integer } |
| Fields | |
|---|---|
seconds |
Represents seconds of UTC time since Unix epoch 1970-01-01T00:00:00Z. Must be between -62135596800 and 253402300799 inclusive (which corresponds to 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z). |
nanos |
Non-negative fractions of a second at nanosecond resolution. This field is the nanosecond portion of the duration, not an alternative to seconds. Negative second values with fractions must still have non-negative nanos values that count forward in time. Must be between 0 and 999,999,999 inclusive. |
PolicyRule
| JSON representation |
|---|
{ "description": string, // Union field |
| Fields | |
|---|---|
description |
A user-specified description of the rule. This value can be up to 256 characters. |
Union field
|
|
denyRule |
A rule for a deny policy. |
DenyRule
| JSON representation |
|---|
{
"deniedPrincipals": [
string
],
"exceptionPrincipals": [
string
],
"deniedPermissions": [
string
],
"exceptionPermissions": [
string
],
"denialCondition": {
object ( |
| Fields | |
|---|---|
deniedPrincipals[] |
The identities that are prevented from using one or more permissions on Google Cloud resources. This field can contain the following values:
|
exceptionPrincipals[] |
The identities that are excluded from the deny rule, even if they are listed in the This field can contain the same values as the |
deniedPermissions[] |
The permissions that are explicitly denied by this rule. Each permission uses the format |
exceptionPermissions[] |
Specifies the permissions that this rule excludes from the set of denied permissions given by The excluded permissions can be specified using the same syntax as |
denialCondition |
The condition that determines whether this deny rule applies to a request. If the condition expression evaluates to Each deny rule is evaluated independently. If this deny rule does not apply to a request, other deny rules might still apply. The condition can use CEL functions that evaluate resource tags. Other functions and operators are not supported. |
DenyRuleExplanation
| JSON representation |
|---|
{ "denyAccessState": enum ( |
| Fields | |
|---|---|
denyAccessState |
Required. Indicates whether this rule denies the specified permission to the specified principal for the specified resource. This field does not indicate whether the principal is actually denied on the permission for the resource. There might be another rule that overrides this rule. To determine whether the principal actually has the permission, use the |
combinedDeniedPermission |
Indicates whether the permission in the request is listed as a denied permission in the deny rule. |
deniedPermissions |
Lists all denied permissions in the deny rule and indicates whether each permission matches the permission in the request. Each key identifies a denied permission in the rule, and each value indicates whether the denied permission matches the permission in the request. An object containing a list of |
combinedExceptionPermission |
Indicates whether the permission in the request is listed as an exception permission in the deny rule. |
exceptionPermissions |
Lists all exception permissions in the deny rule and indicates whether each permission matches the permission in the request. Each key identifies a exception permission in the rule, and each value indicates whether the exception permission matches the permission in the request. An object containing a list of |
combinedDeniedPrincipal |
Indicates whether the principal is listed as a denied principal in the deny rule, either directly or through membership in a principal set. |
deniedPrincipals |
Lists all denied principals in the deny rule and indicates whether each principal matches the principal in the request, either directly or through membership in a principal set. Each key identifies a denied principal in the rule, and each value indicates whether the denied principal matches the principal in the request. An object containing a list of |
combinedExceptionPrincipal |
Indicates whether the principal is listed as an exception principal in the deny rule, either directly or through membership in a principal set. |
exceptionPrincipals |
Lists all exception principals in the deny rule and indicates whether each principal matches the principal in the request, either directly or through membership in a principal set. Each key identifies a exception principal in the rule, and each value indicates whether the exception principal matches the principal in the request. An object containing a list of |
relevance |
The relevance of this role binding to the overall determination for the entire policy. |
condition |
A condition expression that specifies when the deny rule denies the principal access. To learn about IAM Conditions, see https://cloud.google.com/iam/help/conditions/overview. |
conditionExplanation |
Condition evaluation state for this role binding. |
AnnotatedPermissionMatching
| JSON representation |
|---|
{ "permissionMatchingState": enum ( |
| Fields | |
|---|---|
permissionMatchingState |
Indicates whether the permission in the request is denied by the deny rule. |
relevance |
The relevance of the permission status to the overall determination for the rule. |
DeniedPermissionsEntry
| JSON representation |
|---|
{
"key": string,
"value": {
object ( |
| Fields | |
|---|---|
key |
|
value |
|
ExceptionPermissionsEntry
| JSON representation |
|---|
{
"key": string,
"value": {
object ( |
| Fields | |
|---|---|
key |
|
value |
|
AnnotatedDenyPrincipalMatching
| JSON representation |
|---|
{ "membership": enum ( |
| Fields | |
|---|---|
membership |
Indicates whether the principal is listed as a denied principal in the deny rule, either directly or through membership in a principal set. |
relevance |
The relevance of the principal's status to the overall determination for the role binding. |
DeniedPrincipalsEntry
| JSON representation |
|---|
{
"key": string,
"value": {
object ( |
| Fields | |
|---|---|
key |
|
value |
|
ExceptionPrincipalsEntry
| JSON representation |
|---|
{
"key": string,
"value": {
object ( |
| Fields | |
|---|---|
key |
|
value |
|
PABPolicyExplanation
| JSON representation |
|---|
{ "principalAccessBoundaryAccessState": enum ( |
| Fields | |
|---|---|
principalAccessBoundaryAccessState |
Output only. Indicates whether the principal is allowed to access specified resource, based on evaluating all applicable principal access boundary bindings and policies. |
explainedBindingsAndPolicies[] |
List of principal access boundary policies and bindings that are applicable to the principal's access state, with annotations to indicate how each binding and policy contributes to the overall access state. |
relevance |
The relevance of the principal access boundary access state to the overall access state. |
ExplainedPABBindingAndPolicy
| JSON representation |
|---|
{ "bindingAndPolicyAccessState": enum ( |
| Fields | |
|---|---|
bindingAndPolicyAccessState |
Output only. Indicates whether the principal is allowed to access the specified resource based on evaluating the binding and policy. |
explainedPolicyBinding |
Details about how this binding contributes to the principal access boundary explanation, with annotations to indicate how the binding contributes to the overall access state. |
explainedPolicy |
Optional. Details about how this policy contributes to the principal access boundary explanation, with annotations to indicate how the policy contributes to the overall access state. If the caller doesn't have permission to view the policy in the binding, this field is omitted. |
relevance |
The relevance of this principal access boundary binding and policy to the overall access state. |
ExplainedPolicyBinding
| JSON representation |
|---|
{ "policyBindingState": enum ( |
| Fields | |
|---|---|
policyBindingState |
Output only. Indicates whether the policy binding takes effect. |
policyBinding |
The policy binding that is explained. |
conditionExplanation |
Optional. Explanation of the condition in the policy binding. If the policy binding doesn't have a condition, this field is omitted. |
relevance |
The relevance of this policy binding to the overall access state. |
PolicyBinding
| JSON representation |
|---|
{ "name": string, "uid": string, "etag": string, "displayName": string, "annotations": { string: string, ... }, "target": { object ( |
| Fields | |
|---|---|
name |
Identifier. The name of the policy binding, in the format Format:
|
uid |
Output only. The globally unique ID of the policy binding. Assigned when the policy binding is created. |
etag |
Optional. The etag for the policy binding. If this is provided on update, it must match the server's etag. |
displayName |
Optional. The description of the policy binding. Must be less than or equal to 63 characters. |
annotations |
Optional. User-defined annotations. See https://google.aip.dev/148#annotations for more details such as format and size limitations An object containing a list of |
target |
Required. Immutable. The full resource name of the resource to which the policy will be bound. Immutable once set. |
policyKind |
Immutable. The kind of the policy to attach in this binding. This field must be one of the following:
|
policy |
Required. Immutable. The resource name of the policy to be bound. The binding parent and policy must belong to the same organization. |
policyUid |
Output only. The globally unique ID of the policy to be bound. |
condition |
Optional. The condition to apply to the policy binding. When set, the The condition is currently only supported when bound to policies of kind principal access boundary. When the bound policy is a principal access boundary policy, the only supported attributes in any subexpression are Allowed operations for
Allowed operations for
Supported principal types are workspace, workforce pool, workload pool, service account, and agent identity. Allowed string must be one of:
|
createTime |
Output only. The time when the policy binding was created. Uses RFC 3339, where generated output will always be Z-normalized and use 0, 3, 6 or 9 fractional digits. Offsets other than "Z" are also accepted. Examples: |
updateTime |
Output only. The time when the policy binding was most recently updated. Uses RFC 3339, where generated output will always be Z-normalized and use 0, 3, 6 or 9 fractional digits. Offsets other than "Z" are also accepted. Examples: |
AnnotationsEntry
| JSON representation |
|---|
{ "key": string, "value": string } |
| Fields | |
|---|---|
key |
|
value |
|
Target
| JSON representation |
|---|
{ // Union field |
| Fields | |
|---|---|
Union field target. The different types of targets that can be bound to a policy. target can be only one of the following: |
|
principalSet |
Immutable. The full resource name that's used for principal access boundary policy bindings. The principal set must be directly parented by the policy binding's parent or same as the parent if the target is a project, folder, or organization. Examples:
|
resource |
Immutable. The full resource name that's used for access policy bindings. Examples:
|
ExplainedPABPolicy
| JSON representation |
|---|
{ "policyAccessState": enum ( |
| Fields | |
|---|---|
policyAccessState |
Output only. Indicates whether the policy allows access to the specified resource. |
policy |
The policy that is explained. |
policyVersion |
Output only. Explanation of the principal access boundary policy's version. |
explainedRules[] |
List of principal access boundary rules that were explained to check the principal's access to specified resource, with annotations to indicate how each rule contributes to the overall access state. |
relevance |
The relevance of this policy to the overall access state. |
PrincipalAccessBoundaryPolicy
| JSON representation |
|---|
{
"name": string,
"uid": string,
"etag": string,
"displayName": string,
"annotations": {
string: string,
...
},
"createTime": string,
"updateTime": string,
"details": {
object ( |
| Fields | |
|---|---|
name |
Identifier. The resource name of the principal access boundary policy. The following format is supported: |
uid |
Output only. The globally unique ID of the principal access boundary policy. |
etag |
Optional. The etag for the principal access boundary. If this is provided on update, it must match the server's etag. |
displayName |
Optional. The description of the principal access boundary policy. Must be less than or equal to 63 characters. |
annotations |
Optional. User defined annotations. See https://google.aip.dev/148#annotations for more details such as format and size limitations An object containing a list of |
createTime |
Output only. The time when the principal access boundary policy was created. Uses RFC 3339, where generated output will always be Z-normalized and use 0, 3, 6 or 9 fractional digits. Offsets other than "Z" are also accepted. Examples: |
updateTime |
Output only. The time when the principal access boundary policy was most recently updated. Uses RFC 3339, where generated output will always be Z-normalized and use 0, 3, 6 or 9 fractional digits. Offsets other than "Z" are also accepted. Examples: |
details |
Optional. The details for the principal access boundary policy. |
AnnotationsEntry
| JSON representation |
|---|
{ "key": string, "value": string } |
| Fields | |
|---|---|
key |
|
value |
|
PrincipalAccessBoundaryPolicyDetails
| JSON representation |
|---|
{
"rules": [
{
object ( |
| Fields | |
|---|---|
rules[] |
Required. A list of principal access boundary policy rules. The number of rules in a policy is limited to 500. |
enforcementVersion |
Optional. The version number (for example, |
PrincipalAccessBoundaryPolicyRule
| JSON representation |
|---|
{ "description": string, "resources": [ string ], "effect": enum ( |
| Fields | |
|---|---|
description |
Optional. The description of the principal access boundary policy rule. Must be less than or equal to 256 characters. |
resources[] |
Required. A list of Resource Manager resources. If a resource is listed in the rule, then the rule applies for that resource and its descendants. The number of resources in a policy is limited to 500 across all rules in the policy. The following resource types are supported:
|
effect |
Required. The access relationship of principals to the resources in this rule. |
operation |
Optional. The operation attributes that determine whether this rule applies to a request. If this field is not specified, the rule applies to all operations. |
excludedResources[] |
Optional. A list of Resource Manager resources. If an excluded resource is listed in the rule, then the rule does not apply for that resource and its descendants. This takes precedence over the The following resource types are supported:
|
Operation
| JSON representation |
|---|
{ "permissions": [ string ], "excludedPermissions": [ string ] } |
| Fields | |
|---|---|
permissions[] |
Optional. The permissions that are explicitly affected by this rule. The number of permission strings in this field is limited to 50 across all rules in the policy. Each permission uses the format The following formats are supported:
For example, Wildcards expand only to the permissions specified in the |
excludedPermissions[] |
Optional. Specifies the permissions that this rule excludes from the set of affected permissions given by If a permission appears in both The excluded permissions can be specified using the same syntax as |
ExplainedPABPolicyVersion
| JSON representation |
|---|
{
"version": integer,
"enforcementState": enum ( |
| Fields | |
|---|---|
version |
Output only. The actual version of the policy. - If the policy uses static version, this field is the chosen static version. - If the policy uses dynamic version, this field is the effective latest version. |
enforcementState |
Output only. Indicates whether the policy is enforced based on its version. |
ExplainedPABRule
| JSON representation |
|---|
{ "ruleAccessState": enum ( |
| Fields | |
|---|---|
ruleAccessState |
Output only. Indicates whether the rule allows access to the specified resource. |
effect |
Required. The effect of the rule which describes the access relationship. |
combinedResourceInclusionState |
Output only. Indicates whether any resource of the rule is the specified resource or includes the specified resource. |
combinedResourceRelevance |
The relevance of the combined resource inclusion state to the overall access state. |
explainedResources[] |
List of resources that were explained to check the principal's access to specified resource, with annotations to indicate how each resource contributes to the overall access state. |
pabUnsupportedFeatures[] |
Output only. Unsupported features detected in this rule. Supported values: * |
relevance |
The relevance of this rule to the overall access state. |
ExplainedResource
| JSON representation |
|---|
{ "resourceInclusionState": enum ( |
| Fields | |
|---|---|
resourceInclusionState |
Output only. Indicates whether the resource is the specified resource or includes the specified resource. |
resource |
The full resource name that identifies the resource that is explained. This can only be a project, a folder, or an organization which is what a PAB rule accepts. |
relevance |
The relevance of this resource to the overall access state. |
OverallAccessState
Whether the principal has the permission to access the resource.
| Enums | |
|---|---|
OVERALL_ACCESS_STATE_UNSPECIFIED |
Not specified. |
OVERALL_ACCESS_STATE_CAN_ACCESS |
The principal has the permission. |
OVERALL_ACCESS_STATE_CANNOT_ACCESS |
The principal doesn't have the permission. |
OVERALL_ACCESS_STATE_UNKNOWN_INFO |
The principal might have the permission, but the sender can't access all of the information needed to fully evaluate the principal's access. |
OVERALL_ACCESS_STATE_UNKNOWN_CONDITIONAL |
The principal might have the permission, but Policy Troubleshooter can't fully evaluate the principal's access because of the missing context to evaluate the condition. |
AllowAccessState
Whether IAM allow policies gives the principal the permission.
| Enums | |
|---|---|
ALLOW_ACCESS_STATE_UNSPECIFIED |
Not specified. |
ALLOW_ACCESS_STATE_GRANTED |
The allow policy gives the principal the permission. |
ALLOW_ACCESS_STATE_NOT_GRANTED |
The allow policy doesn't give the principal the permission. |
ALLOW_ACCESS_STATE_UNKNOWN_CONDITIONAL |
The allow policy gives the principal the permission if a condition expression evaluate to true. However, the sender of the request didn't provide enough context for Policy Troubleshooter to evaluate the condition expression. |
ALLOW_ACCESS_STATE_UNKNOWN_INFO |
The sender of the request doesn't have access to all of the allow policies that Policy Troubleshooter needs to evaluate the principal's access. |
RolePermissionInclusionState
Whether a role includes a specific permission.
| Enums | |
|---|---|
ROLE_PERMISSION_INCLUSION_STATE_UNSPECIFIED |
Not specified. |
ROLE_PERMISSION_INCLUDED |
The permission is included in the role. |
ROLE_PERMISSION_NOT_INCLUDED |
The permission is not included in the role. |
ROLE_PERMISSION_UNKNOWN_INFO |
The sender of the request is not allowed to access the role definition. |
HeuristicRelevance
The extent to which a single data point contributes to an overall determination.
| Enums | |
|---|---|
HEURISTIC_RELEVANCE_UNSPECIFIED |
Not specified. |
HEURISTIC_RELEVANCE_NORMAL |
The data point has a limited effect on the result. Changing the data point is unlikely to affect the overall determination. |
HEURISTIC_RELEVANCE_HIGH |
The data point has a strong effect on the result. Changing the data point is likely to affect the overall determination. |
MembershipMatchingState
Whether the principal in the request matches the principal in the policy.
| Enums | |
|---|---|
MEMBERSHIP_MATCHING_STATE_UNSPECIFIED |
Not specified. |
MEMBERSHIP_MATCHED |
The principal in the request matches the principal in the policy. The principal can be included directly or indirectly:
|
MEMBERSHIP_NOT_MATCHED |
The principal in the request doesn't match the principal in the policy. |
MEMBERSHIP_UNKNOWN_INFO |
The principal in the policy is a group or domain, and the sender of the request doesn't have permission to view whether the principal in the request is a member of the group or domain. |
MEMBERSHIP_UNKNOWN_UNSUPPORTED |
The principal is an unsupported type. |
NullValue
Represents a JSON null.
NullValue is a sentinel, using an enum with only one value to represent the null value for the Value type union.
A field of type NullValue with any value other than 0 is considered invalid. Most ProtoJSON serializers will emit a Value with a null_value set as a JSON null regardless of the integer value, and so will round trip to a 0 value.
| Enums | |
|---|---|
NULL_VALUE |
Null value. |
LogType
The list of valid permission types for which logging can be configured. Admin writes are always logged, and are not configurable.
| Enums | |
|---|---|
LOG_TYPE_UNSPECIFIED |
Default case. Should never be this. |
ADMIN_READ |
Admin reads. Example: CloudIAM getIamPolicy |
DATA_WRITE |
Data writes. Example: CloudSQL Users create |
DATA_READ |
Data reads. Example: CloudSQL Users list |
DenyAccessState
Whether IAM deny policies deny the principal the permission.
| Enums | |
|---|---|
DENY_ACCESS_STATE_UNSPECIFIED |
Not specified. |
DENY_ACCESS_STATE_DENIED |
The deny policy denies the principal the permission. |
DENY_ACCESS_STATE_NOT_DENIED |
The deny policy doesn't deny the principal the permission. |
DENY_ACCESS_STATE_UNKNOWN_CONDITIONAL |
The deny policy denies the principal the permission if a condition expression evaluates to true. However, the sender of the request didn't provide enough context for Policy Troubleshooter to evaluate the condition expression. |
DENY_ACCESS_STATE_UNKNOWN_INFO |
The sender of the request does not have access to all of the deny policies that Policy Troubleshooter needs to evaluate the principal's access. |
PermissionPatternMatchingState
Whether the permission in the request matches the permission in the policy.
| Enums | |
|---|---|
PERMISSION_PATTERN_MATCHING_STATE_UNSPECIFIED |
Not specified. |
PERMISSION_PATTERN_MATCHED |
The permission in the request matches the permission in the policy. |
PERMISSION_PATTERN_NOT_MATCHED |
The permission in the request matches the permission in the policy. |
PABAccessState
Whether a principal access boundary component allows the principal to access the specified resource.
A PAB component refers to a PAB rule, a PAB policy, a PAB policy and binding pair, all PAB policies bound to a target, or PAB overall. This is because this enum is shared across all these messages.
| Enums | |
|---|---|
PAB_ACCESS_STATE_UNSPECIFIED |
Not specified. |
PAB_ACCESS_STATE_ALLOWED |
The PAB component allows the principal's access to the specified resource. |
PAB_ACCESS_STATE_NOT_ALLOWED |
The PAB component doesn't allow the principal's access to the specified resource. |
PAB_ACCESS_STATE_NOT_ENFORCED |
The PAB component is not enforced on the principal, or the specified resource. This state refers to the following scenarios:
|
PAB_ACCESS_STATE_UNKNOWN_INFO |
The sender of the request does not have access to the PAB component, or the relevant data to explain the PAB component. |
PolicyBindingState
Whether the policy binding is enforced.
| Enums | |
|---|---|
POLICY_BINDING_STATE_UNSPECIFIED |
An error occurred when checking whether the policy binding is enforced. |
POLICY_BINDING_STATE_ENFORCED |
The policy binding is enforced. |
POLICY_BINDING_STATE_NOT_ENFORCED |
The policy binding is not enforced. |
PolicyKind
The different policy kinds supported in this binding.
| Enums | |
|---|---|
POLICY_KIND_UNSPECIFIED |
Unspecified policy kind; Not a valid state |
PRINCIPAL_ACCESS_BOUNDARY |
Principal access boundary policy kind |
ACCESS |
Access policy kind. |
Effect
An effect to describe the access relationship.
| Enums | |
|---|---|
EFFECT_UNSPECIFIED |
Effect unspecified. |
ALLOW |
Allows access to the resources in this rule. |
DENY |
Denies access to the resources in this rule. |
PABPolicyEnforcementState
Whether a principal access boundary policy is enforced based on its version.
| Enums | |
|---|---|
PAB_POLICY_ENFORCEMENT_STATE_UNSPECIFIED |
An error occurred when checking whether a principal access boundary policy is enforced based on its version. |
PAB_POLICY_ENFORCEMENT_STATE_ENFORCED |
The principal access boundary policy is enforced based on its version. |
PAB_POLICY_ENFORCEMENT_STATE_NOT_ENFORCED |
The principal access boundary policy is not enforced based on its version. |
ResourceInclusionState
Whether the resource is the specified resource or includes the specified resource.
| Enums | |
|---|---|
RESOURCE_INCLUSION_STATE_UNSPECIFIED |
An error occurred when checking whether the resource includes the specified resource. |
RESOURCE_INCLUSION_STATE_INCLUDED |
The resource includes the specified resource. |
RESOURCE_INCLUSION_STATE_NOT_INCLUDED |
The resource doesn't include the specified resource. |
RESOURCE_INCLUSION_STATE_UNKNOWN_INFO |
The sender of the request does not have access to the relevant data to check whether the resource includes the specified resource. |
RESOURCE_INCLUSION_STATE_UNKNOWN_UNSUPPORTED |
The resource is of an unsupported type, such as non-CRM resources. |
Tool Annotations
Destructive Hint: ❌ | Idempotent Hint: ✅ | Read Only Hint: ✅ | Open World Hint: ❌