En esta página, se proporcionan consultas de muestra para mostrarte cómo usar los métodos AnalyzeIamPolicy
y AnalyzeIamPolicyLongrunning
para analizar políticas.
Antes de comenzar
AnalyzeIamPolicy
Debes habilitar la API de Cloud Asset para tu proyecto.
Si usas la API para ejecutar estas consultas, debes configurar tu entorno y
gcurl
.
Para configurar un alias
gcurl
, sigue estos pasos:Si usas una instancia de Compute Engine, ejecuta el siguiente comando.
alias gcurl='curl -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/json" -X POST -H "X-HTTP-Method-Override: GET"'
Si no usas una instancia de Compute Engine, ejecuta el siguiente comando.
alias gcurl='curl -H "$(oauth2l header --json CREDENTIALS cloud-platform)" \ -H "Content-Type: application/json" -X POST -H "X-HTTP-Method-Override: GET"'
En este ejemplo, CREDENTIALS es la ruta del archivo de credenciales, como
~/credentials.json
.
AnalyzeIamPolicyLongrunning
Debes habilitar la API de Cloud Asset para tu proyecto.
Si usas la API para ejecutar estas consultas, debes configurar tu entorno y
gcurl
.
Para configurar un alias
gcurl
, sigue estos pasos:Si usas una instancia de Compute Engine, ejecuta el siguiente comando.
alias gcurl='curl -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/json" -X POST'
Si no usas una instancia de Compute Engine, ejecuta el siguiente comando.
alias gcurl='curl -H "$(oauth2l header --json CREDENTIALS cloud-platform)" \ -H "Content-Type: application/json" -X POST'
En este ejemplo, CREDENTIALS es la ruta del archivo de credenciales, como
~/credentials.json
.
Encuentra identidades con funciones o permisos específicos en un recurso específico
Para encontrar identidades a las que se les otorgó el permiso iam.serviceAccounts.actAs
o iam.serviceAccounts.get
en una cuenta de servicio específica, ejecuta el siguiente comando.
gcloud
gcloud asset GCLOUD_METHOD_NAME \ --organization="ORG_ID" \ --full-resource-name="FULL_RESOURCE_NAME" \ --permissions="COMMA_SEPARATED_PERMISSIONS" \ --expand-groups \ --output-group-edges \ --show-response
Por ejemplo:
gcloud asset analyze-iam-policy --organization="123456789" \ --full-resource-name="//iam.googleapis.com/projects/project1/serviceAccounts/sa1@project1.iam.gserviceaccount.com" \ --permissions="iam.serviceAccounts.actAs,iam.serviceAccounts.get" \ --expand-groups \ --output-group-edges \ --show-response
REST
Crea un archivo
request.json
para el cuerpo de la solicitud y configura su contenido como la solicitud de análisis en formato JSON.{ "analysisQuery":{ "scope":"organizations/ORG_ID", "resourceSelector":{ "fullResourceName":"FULL_RESOURCE_NAME" }, "accessSelector":{ "permissions":[ "iam.serviceAccounts.actAs", "iam.serviceAccounts.get" ] }, "options":{ "expandGroups":EXPAND_GROUPS, "outputGroupEdges":OUTPUT_GROUP_EDGES, "outputResourceEdges":OUTPUT_RESOURCE_EDGES, "analyzeServiceAccountImpersonation":ANALYZE_SERVICE_ACCOUNT_IMPERSONATION } } }
Por ejemplo:
{ "analysisQuery":{ "scope":"organizations/123456789", "resourceSelector":{ "fullResourceName":"//iam.googleapis.com/projects/project1/serviceAccounts/sa1@project1.iam.gserviceaccount.com" }, "accessSelector":{ "permissions":[ "iam.serviceAccounts.actAs", "iam.serviceAccounts.get" ] }, "options":{ "expandGroups":true, "outputGroupEdges":true, "outputResourceEdges":false, "analyzeServiceAccountImpersonation":false } } }
Después de crear el archivo
request.json
, puedes ejecutar la solicitud con el siguiente comando mediante el aliasgcurl
.gcurl -d @request.json \ "https://cloudasset.googleapis.com/v1/organizations/ORG_ID:REST_ANALYZE_METHOD"
Aquí:
- ORG_ID es el ID de la organización, como
1234567890
. - REST_ANALYZE_METHOD es el método de análisis, ya sea
analyzeIamPolicy
oanalyzeIamPolicyLongrunning
.
- ORG_ID es el ID de la organización, como
Este método muestra las identidades que aparecen en la política y las que obtienen permisos a través de la membresía del grupo. Para mostrar solo las identidades que aparecen en la política, inhabilita las opciones --expand-groups
y --output-group-edges
.
Puedes habilitar la opción --output-resource-edges
si deseas saber cómo el recurso especificado hereda la política del recurso adjunto de la política. Por ejemplo, supongamos que la política se establece en una carpeta f1. Verás los bordes de recursos f1-to-project1 y project1-to-sa1.
Puedes habilitar la opción --analyze-service-account-impersonation
si deseas buscar identidades que puedan acceder indirectamente al recurso especificado mediante el robo de identidad de la cuenta de servicio.
Encuentra identidades con cualquier función o permiso en un recurso específico
Para encontrar identidades a las que se les otorgan funciones o permisos en una cuenta de servicio especificada, ejecuta el siguiente comando.
gcloud
gcloud asset GCLOUD_METHOD_NAME \ --organization="ORG_ID" \ --full-resource-name="FULL_RESOURCE_NAME" \ --expand-roles
Por ejemplo:
gcloud asset analyze-iam-policy --organization="123456789" \ --full-resource-name="//iam.googleapis.com/projects/project1/serviceAccounts/sa1@project1.iam.gserviceaccount.com" \ --expand-roles
REST
Crea un archivo
request.json
para el cuerpo de la solicitud y configura su contenido como la solicitud de análisis en formato JSON.{ "analysisQuery":{ "scope":"organizations/ORG_ID", "resourceSelector":{ "fullResourceName":"FULL_RESOURCE_NAME" }, "options":{ "expandRoles":EXPAND_ROLES, "expandGroups":EXPAND_GROUPS, "outputGroupEdges":OUTPUT_GROUP_EDGES, "outputResourceEdges":OUTPUT_RESOURCE_EDGES, "analyzeServiceAccountImpersonation":ANALYZE_SERVICE_ACCOUNT_IMPERSONATION } } }
Por ejemplo:
{ "analysisQuery":{ "scope":"organizations/123456789", "resourceSelector":{ "fullResourceName":"//iam.googleapis.com/projects/project1/serviceAccounts/sa1@project1.iam.gserviceaccount.com" }, "options":{ "expandRoles":true, "expandGroups":false, "outputGroupEdges":false, "outputResourceEdges":false, "analyzeServiceAccountImpersonation":false } } }
Después de crear el archivo
request.json
, puedes ejecutar la solicitud con el siguiente comando mediante el aliasgcurl
.gcurl -d @request.json \ "https://cloudasset.googleapis.com/v1/organizations/ORG_ID:REST_ANALYZE_METHOD"
Aquí:
- ORG_ID es el ID de la organización, como
1234567890
. - REST_ANALYZE_METHOD es el método de análisis, ya sea
analyzeIamPolicy
oanalyzeIamPolicyLongrunning
.
- ORG_ID es el ID de la organización, como
Este método muestra las funciones que aparecen en las políticas y los permisos incluidos en la función adjunta a la política. Para mostrar solo las funciones que aparecen en las políticas, inhabilita la opción --expand-roles
.
Puedes habilitar las opciones --expand-groups
y --output-group-edges
para ver en el resultado las identidades que obtienen permisos mediante la membresía del grupo.
Puedes habilitar la opción --output-resource-edges
si deseas saber cómo el recurso especificado hereda la política del recurso adjunto de la política. Por ejemplo, supongamos que la política se establece en una carpeta f1. Verás los bordes de recursos f1-to-project1 y project1-to-sa1.
Puedes habilitar la opción --analyze-service-account-impersonation
si deseas buscar identidades que puedan acceder indirectamente al recurso especificado mediante el robo de identidad de la cuenta de servicio.
Encuentra identidades con funciones o permisos específicos en un proyecto
Para encontrar identidades a las que se les otorgó el permiso iam.serviceAccounts.actAs
o iam.serviceAccounts.get
en alguna cuenta de servicio de un proyecto, ejecuta el siguiente comando.
gcloud
gcloud asset GCLOUD_METHOD_NAME \ --organization="ORG_ID" \ --full-resource-name="FULL_RESOURCE_NAME" \ --permissions="COMMA_SEPARATED_PERMISSIONS" \ --expand-resources
Por ejemplo:
gcloud asset analyze-iam-policy --organization="123456789" \ --full-resource-name="//cloudresourcemanager.googleapis.com/projects/project1" \ --permissions="iam.serviceAccounts.actAs" \ --expand-resources
REST
Crea un archivo
request.json
para el cuerpo de la solicitud y configura su contenido como la solicitud de análisis en formato JSON.{ "analysisQuery":{ "scope":"organizations/ORG_ID", "resourceSelector":{ "fullResourceName":"FULL_RESOURCE_NAME" }, "accessSelector":{ "permissions":[ "iam.serviceAccounts.actAs" ] }, "options":{ "expandResources":EXPAND_RESOURCES } } }
Por ejemplo:
{ "analysisQuery":{ "scope":"organizations/123456789", "resourceSelector":{ "fullResourceName":"//cloudresourcemanager.googleapis.com/projects/project1" }, "accessSelector":{ "permissions":[ "iam.serviceAccounts.actAs" ] }, "options":{ "expandResources":true } } }
Después de crear el archivo
request.json
, puedes ejecutar la solicitud con el siguiente comando mediante el aliasgcurl
.gcurl -d @request.json \ "https://cloudasset.googleapis.com/v1/organizations/ORG_ID:REST_ANALYZE_METHOD"
Aquí:
- ORG_ID es el ID de la organización, como
1234567890
. - REST_ANALYZE_METHOD es el método de análisis, ya sea
analyzeIamPolicy
oanalyzeIamPolicyLongrunning
.
- ORG_ID es el ID de la organización, como
Encuentra recursos con funciones o permisos específicos en una identidad específica
Para encontrar recursos a los que se les otorgó el permiso iam.serviceAccounts.actAs
o iam.serviceAccounts.get
para un usuario específico, ejecuta el siguiente comando.
gcloud
gcloud asset GCLOUD_METHOD_NAME \ --organization="ORG_ID" \ --identity="IDENTITY" \ --permissions="COMMA_SEPARATED_PERMISSIONS"
Por ejemplo:
gcloud asset analyze-iam-policy --organization="123456789" \ --identity="user:user1@example.com" \ --permissions="iam.serviceAccounts.actAs,iam.serviceAccounts.get"
REST
Crea un archivo
request.json
para el cuerpo de la solicitud y configura su contenido como la solicitud de análisis en formato JSON.{ "analysisQuery":{ "scope":"organizations/ORG_ID", "identitySelector":{ "identity":"IDENTITY" }, "accessSelector":{ "permissions":[ "iam.serviceAccounts.actAs", "iam.serviceAccounts.get" ] }, "options":{ "outputGroupEdges":OUTPUT_GROUP_EDGES, "expandResources":EXPAND_RESOURCES, "outputResourceEdges":OUTPUT_RESOURCE_EDGES, "analyzeServiceAccountImpersonation":ANALYZE_SERVICE_ACCOUNT_IMPERSONATION } } }
Por ejemplo:
{ "analysisQuery":{ "scope":"organizations/123456789", "identitySelector":{ "identity":"user:user1@example.com" }, "accessSelector":{ "permissions":[ "iam.serviceAccounts.actAs", "iam.serviceAccounts.get" ] }, "options":{ "outputGroupEdges":false, "expandResources":false, "outputResourceEdges":false, "analyzeServiceAccountImpersonation":false } } }
Después de crear el archivo
request.json
, puedes ejecutar la solicitud con el siguiente comando mediante el aliasgcurl
.gcurl -d @request.json \ "https://cloudasset.googleapis.com/v1/organizations/ORG_ID:REST_ANALYZE_METHOD"
Aquí:
- ORG_ID es el ID de la organización, como
1234567890
. - REST_ANALYZE_METHOD es el método de análisis, ya sea
analyzeIamPolicy
oanalyzeIamPolicyLongrunning
.
- ORG_ID es el ID de la organización, como
Puedes habilitar las opciones --expand-resources
y --output-resource-edges
para ver los recursos heredados que tienen el acceso especificado a la identidad especificada.
Puedes habilitar la opción --output-group-edges
si deseas saber cómo la identidad especificada hereda el acceso a través de la membresía del grupo. Por ejemplo, supongamos que la política tiene un grupo de miembros g1 con user1 como su miembro; verás el perímetro edge-user1.
Puedes habilitar la opción --analyze-service-account-impersonation
si deseas buscar recursos a los que podría acceder de manera indirecta la identidad especificada mediante el robo de identidad de cuentas de servicio.
Encuentra recursos con cualquier función/permiso para una identidad especificada
Para buscar recursos a los que se les otorga una función o permiso para un usuario específico, ejecuta el siguiente comando.
gcloud
gcloud asset GCLOUD_METHOD_NAME \ --organization="ORG_ID" \ --identity="IDENTITY" \ --expand-roles \ --expand-resources \ --output-resource-edges \ --show-response
Por ejemplo:
gcloud asset analyze-iam-policy --organization="123456789" \ --identity="user:user1@example.com" \ --expand-roles \ --expand-resources \ --output-resource-edges \ --show-response
REST
Crea un archivo
request.json
para el cuerpo de la solicitud y configura su contenido como la solicitud de análisis en formato JSON.{ "analysisQuery":{ "scope":"organizations/123456789", "identitySelector":{ "identity":"user:user1@example.com" }, "options":{ "expandRoles":EXPAND_ROLES, "outputGroupEdges":OUTPUT_GROUP_EDGES, "expandResources":EXPAND_RESOURCES, "outputResourceEdges":OUTPUT_RESOURCE_EDGES, "analyzeServiceAccountImpersonation":ANALYZE_SERVICE_ACCOUNT_IMPERSONATION } } }
Por ejemplo:
{ "analysisQuery":{ "scope":"organizations/123456789", "identitySelector":{ "identity":"user:user1@example.com" }, "options":{ "expandRoles":true, "outputGroupEdges":false, "expandResources":true, "outputResourceEdges":true, "analyzeServiceAccountImpersonation":false } } }
Después de crear el archivo
request.json
, puedes ejecutar la solicitud con el siguiente comando mediante el aliasgcurl
.gcurl -d @request.json \ "https://cloudasset.googleapis.com/v1/organizations/ORG_ID:REST_ANALYZE_METHOD"
Aquí:
- ORG_ID es el ID de la organización, como
1234567890
. - REST_ANALYZE_METHOD es el método de análisis, ya sea
analyzeIamPolicy
oanalyzeIamPolicyLongrunning
.
- ORG_ID es el ID de la organización, como
Este método muestra las funciones que aparecen en las políticas y los permisos incluidos en la función adjunta a la política. Para mostrar solo las funciones que aparecen en las políticas, inhabilita la opción --expand-roles
.
Este comando muestra los recursos que aparecen en las políticas y los recursos heredados a los que se les otorga acceso a la identidad especificada. Para mostrar solo los recursos que aparecen en las políticas, inhabilita las opciones --expand-resources
y --output-resource-edges
.
Puedes habilitar la opción --output-group-edges
si deseas saber cómo la identidad especificada hereda el acceso a través de la membresía del grupo. Por ejemplo, supongamos que la política tiene un grupo de miembros g1 con user1 como su miembro; verás el perímetro edge-user1.
Puedes habilitar la opción --analyze-service-account-impersonation
si deseas buscar recursos a los que podría acceder de manera indirecta la identidad especificada mediante el robo de identidad de cuentas de servicio.
Encuentra funciones o permisos en un recurso específico para una identidad específica
Para encontrar funciones o permisos que se otorgan a un usuario específico en una cuenta de servicio especificada, ejecuta el siguiente comando.
gcloud
gcloud asset GCLOUD_METHOD_NAME \ --organization="ORG_ID" \ --full-resource-name="FULL_RESOURCE_NAME" \ --identity="IDENTITY" \ --expand-roles
Por ejemplo:
gcloud asset analyze-iam-policy --organization="123456789" \ --full-resource-name="//iam.googleapis.com/projects/project1/serviceAccounts/sa1@project1.iam.gserviceaccount.com" \ --identity="user:user1@example.com" \ --expand-roles
REST
Crea un archivo
request.json
para el cuerpo de la solicitud y configura su contenido como la solicitud de análisis en formato JSON.{ "analysisQuery":{ "scope":"organizations/123456789", "resourceSelector":{ "fullResourceName":"FULL_RESOURCE_NAME" }, "identitySelector":{ "identity":"IDENTITY" }, "options":{ "expandRoles":EXPAND_ROLES, "outputGroupEdges":OUTPUT_GROUP_EDGES, "outputResourceEdges":OUTPUT_RESOURCE_EDGES } } }
Por ejemplo:
{ "analysisQuery":{ "scope":"organizations/123456789", "resourceSelector":{ "fullResourceName":"//iam.googleapis.com/projects/project1/serviceAccounts/sa1@project1.iam.gserviceaccount.com" }, "identitySelector":{ "identity":"user:user1@example.com" }, "options":{ "expandRoles":true, "outputGroupEdges":false, "outputResourceEdges":false } } }
Después de crear el archivo
request.json
, puedes ejecutar la solicitud con el siguiente comando mediante el aliasgcurl
.gcurl -d @request.json \ "https://cloudasset.googleapis.com/v1/organizations/ORG_ID:REST_ANALYZE_METHOD"
Aquí:
- ORG_ID es el ID de la organización, como
1234567890
. - REST_ANALYZE_METHOD es el método de análisis, ya sea
analyzeIamPolicy
oanalyzeIamPolicyLongrunning
.
- ORG_ID es el ID de la organización, como
Este comando muestra las funciones que aparecen en las políticas y los permisos incluidos en la función adjunta a la política. Para mostrar solo las funciones que aparecen en las políticas, inhabilita la opción --expand-roles
.
Puedes habilitar la opción --output-group-edges
si deseas saber cómo la identidad especificada hereda el acceso a través de la membresía del grupo. Por ejemplo, supongamos que la política tiene un grupo de miembros g1 con user1 como su miembro; verás el perímetro edge-user1.
Puedes habilitar la opción --output-resource-edges
si deseas saber cómo el recurso especificado hereda la política del recurso adjunto de la política. Por ejemplo, supongamos que la política se establece en una carpeta f1. Verás los bordes de recursos f1-to-project1 y project1-to-sa1.
Encuentra identidades y recursos con funciones o permisos específicos
Para encontrar identidades y recursos a los que se les otorgó el permiso iam.serviceAccounts.actAs
, ejecuta el siguiente comando.
gcloud
gcloud asset GCLOUD_METHOD_NAME \ --organization="ORG_ID" \ --permissions="COMMA_SEPARATED_PERMISSIONS"
Por ejemplo:
gcloud asset analyze-iam-policy --organization="123456789" \ --permissions="iam.serviceAccounts.actAs"
REST
Crea un archivo
request.json
para el cuerpo de la solicitud y configura su contenido como la solicitud de análisis en formato JSON.{ "analysisQuery":{ "scope":"organizations/123456789", "resourceSelector":{ "fullResourceName":"FULL_RESOURCE_NAME" }, "identitySelector":{ "identity":"IDENTITY" }, "options":{ "expandGroups":EXPAND_GROUPS, "outputGroupEdges":OUTPUT_GROUP_EDGES, "expandResources":EXPAND_RESOURCES, "outputResourceEdges":OUTPUT_RESOURCE_EDGES } } }
Por ejemplo:
{ "analysisQuery":{ "scope":"organizations/123456789", "accessSelector":{ "permissions":[ "iam.serviceAccounts.actAs" ] }, "options":{ "expandGroups":false, "outputGroupEdges":false, "expandResources":false, "outputResourceEdges":false } } }
Después de crear el archivo
request.json
, puedes ejecutar la solicitud con el siguiente comando mediante el aliasgcurl
.gcurl -d @request.json \ "https://cloudasset.googleapis.com/v1/organizations/ORG_ID:REST_ANALYZE_METHOD"
Aquí:
- ORG_ID es el ID de la organización, como
1234567890
. - REST_ANALYZE_METHOD es el método de análisis, ya sea
analyzeIamPolicy
oanalyzeIamPolicyLongrunning
.
- ORG_ID es el ID de la organización, como
Puedes habilitar las opciones --expand-groups
y --output-group-edges
para ver en el resultado las identidades que obtienen permisos mediante la membresía del grupo.
Puedes habilitar las opciones --expand-resources
y --output-resource-edges
para ver los recursos heredados que tienen cualquier tipo de acceso a la identidad especificada.