En esta página se explica cómo ver, entender y aplicar recomendaciones de roles de gestión de identidades y accesos para conjuntos de datos de BigQuery. Las recomendaciones de roles te ayudan a aplicar el principio de mínimos accesos, ya que garantizan que las entidades de seguridad solo tengan los permisos que realmente necesitan.
Antes de empezar
Enable the IAM and Recommender APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles.Asegúrate de que tienes activado el nivel Premium o Enterprise de Security Command Center a nivel de organización o de proyecto. Para obtener más información, consulta las preguntas sobre la facturación.
Consulta qué son las recomendaciones de roles.
Configura la autenticación.
Select the tab for how you plan to use the samples on this page:
gcloud
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
REST
Para usar las muestras de la API REST de esta página en un entorno de desarrollo local, debes usar las credenciales que proporciones a la CLI de gcloud.
Instala Google Cloud CLI. Después de la instalación, inicializa la CLI de Google Cloud ejecutando el siguiente comando:
gcloud init
Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.
Para obtener más información, consulta el artículo Autenticarse para usar REST de la documentación sobre autenticación de Google Cloud .
Roles de gestión de identidades y accesos necesarios
Para obtener los permisos que necesitas para gestionar las recomendaciones de roles a nivel de conjunto de datos, pide a tu administrador que te conceda los siguientes roles de gestión de identidades y accesos:
-
Lector de roles (
roles/iam.roleViewer
) en tu proyecto -
Administrador del recomendador de gestión de identidades y accesos (
roles/recommender.iamAdmin
) en tu proyecto -
Propietario de datos de BigQuery (
roles/bigquery.dataOwner
) en tu conjunto de datos
Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.
Estos roles predefinidos contienen los permisos necesarios para gestionar las recomendaciones de roles a nivel de conjunto de datos. Para ver los permisos exactos que se necesitan, despliega la sección Permisos necesarios:
Permisos obligatorios
Para gestionar las recomendaciones de roles a nivel de conjunto de datos, se necesitan los siguientes permisos:
-
Para ver las recomendaciones, siga estos pasos:
-
iam.roles.get
en tu proyecto -
iam.roles.list
en tu proyecto -
recommender.iamPolicyRecommendations.get
en tu proyecto -
recommender.iamPolicyRecommendations.list
en tu proyecto -
recommender.iamPolicyInsights.get
en tu proyecto -
recommender.iamPolicyInsights.list
en tu proyecto -
bigquery.datasets.getIamPolicy
en el conjunto de datos
-
-
Para aplicar y rechazar recomendaciones, sigue estos pasos:
-
recommender.iamPolicyRecommendations.update
en tu proyecto -
bigquery.datasets.setIamPolicy
en el conjunto de datos
-
También puedes obtener estos permisos con roles personalizados u otros roles predefinidos.
Revisar y aplicar recomendaciones
Puedes consultar y aplicar recomendaciones de roles a nivel de conjunto de datos con la CLI de Google Cloud y la API Recommender.
gcloud
Revisa tus recomendaciones:
Para ver las recomendaciones a nivel de conjunto de datos, ejecuta el comando
gcloud recommender recommendations list
y filtra solo las recomendaciones de conjuntos de datos de BigQuery:gcloud recommender recommendations list \ --location=LOCATION \ --recommender=google.iam.policy.Recommender \ --project=PROJECT_ID \ --format=json \ --filter="recommenderSubtype:REMOVE_ROLE_BIGQUERY_DATASET OR recommenderSubtype:REPLACE_ROLE_BIGQUERY_DATASET"
Sustituye los siguientes valores:
LOCATION
: la región en la que se encuentran tus conjuntos de datos de Cloud Storage (por ejemplo,us
ous-central1
).PROJECT_ID
: el ID del Google Cloud proyecto que contiene tus conjuntos de datos de BigQuery. Los IDs de proyecto son cadenas alfanuméricas, comomy-project
.
La respuesta es similar al siguiente ejemplo. En este ejemplo, todos los usuarios con el rol Editor en el proyecto
my-project
(projectEditor:my-project
) tienen el rol Editor de datos de BigQuery (roles/bigquery.dataEditor
) en el conjunto de datosdataset-1
. Sin embargo, este rol no se ha usado en los últimos 90 días. Por lo tanto, la recomendación de rol sugiere que revoques el rol:[ { "associatedInsights": [ { "insight": "projects/1069248613794/locations/us/insightTypes/google.iam.policy.Insight/insights/984eccca-0241-472f-baab-2557dd0d7282" } ], "content": { "operationGroups": [ { "operations": [ { "action": "remove", "path": "/iamPolicy/bindings/*/members/*", "pathFilters": { "/iamPolicy/bindings/*/condition/expression": "", "/iamPolicy/bindings/*/members/*": "projectEditor:my-project", "/iamPolicy/bindings/*/role": "roles/bigquery.dataEditor" }, "resource": "//bigquery.googleapis.com/projects/my-project/datasets/dataset-1", "resourceType": "bigquery.googleapis.com/Dataset" } ] } ], "overview": { "addedRoles": [], "member": "projectEditor:my-project", "minimumObservationPeriodInDays": "0", "removedRole": "roles/bigquery.dataEditor", "resource": "//bigquery.googleapis.com/projects/my-project/datasets/dataset-1" } }, "description": "This role has not been used during the observation window.", "etag": "\"3b123bc08d028128\"", "lastRefreshTime": "2024-02-04T08:00:00Z", "name": "projects/1069248613794/locations/us/recommenders/google.iam.policy.Recommender/recommendations/0e9831fe-6810-476b-b14d-2b64bda17288", "primaryImpact": { "category": "SECURITY", "securityProjection": { "details": { "revokedIamPermissionsCount": 37 } } }, "priority": "P4", "recommenderSubtype": "REMOVE_ROLE_BIGQUERY_DATASET", "stateInfo": { "state": "ACTIVE" }, "targetResources": [ "//bigquery.googleapis.com/projects/my-project/datasets/dataset-1" ] }, { "associatedInsights": [ { "insight": "projects/1069248613794/locations/us/insightTypes/google.iam.policy.Insight/insights/9d11057e-9c71-410f-ad55-fc82d87761d0" } ], "content": { "operationGroups": [ { "operations": [ { "action": "remove", "path": "/iamPolicy/bindings/*/members/*", "pathFilters": { "/iamPolicy/bindings/*/condition/expression": "", "/iamPolicy/bindings/*/members/*": "user:alicexz@google.com", "/iamPolicy/bindings/*/role": "roles/bigquery.dataOwner" }, "resource": "//bigquery.googleapis.com/projects/my-project/datasets/dataset-1", "resourceType": "bigquery.googleapis.com/Dataset" } ] } ], "overview": { "addedRoles": [], "member": "user:alicexz@google.com", "minimumObservationPeriodInDays": "0", "removedRole": "roles/bigquery.dataOwner", "resource": "//bigquery.googleapis.com/projects/my-project/datasets/dataset-1" } }, "description": "This role has not been used during the observation window.", "etag": "\"1da285f7aa6438f1\"", "lastRefreshTime": "2024-02-04T08:00:00Z", "name": "projects/1069248613794/locations/us/recommenders/google.iam.policy.Recommender/recommendations/56013294-cf81-402a-8cde-25489545777c", "primaryImpact": { "category": "SECURITY", "securityProjection": { "details": { "revokedIamPermissionsCount": 64 } } }, "priority": "P4", "recommenderSubtype": "REMOVE_ROLE_BIGQUERY_DATASET", "stateInfo": { "state": "ACTIVE" }, "targetResources": [ "//bigquery.googleapis.com/projects/my-project/datasets/dataset-1" ] } ]
Revisa detenidamente cada recomendación y piensa cómo cambiará el acceso del principal a los recursos de Google Cloud . Para saber cómo revisar las recomendaciones desde la CLI de gcloud, consulta la sección Revisar recomendaciones de esta página.
Para aplicar una recomendación, sigue estos pasos:
Usa el comando
gcloud recommender recommendations mark-claimed
para cambiar el estado de la recomendación aCLAIMED,
, lo que impide que la recomendación cambie mientras la aplicas:gcloud recommender recommendations mark-claimed \ RECOMMENDATION_ID \ --location=LOCATION \ --recommender=google.iam.policy.Recommender \ --project=PROJECT_ID \ --format=FORMAT \ --etag=ETAG \ --state-metadata=STATE_METADATA
Sustituye los siguientes valores:
-
RECOMMENDATION_ID
: identificador único de la recomendación. Este valor aparece al final del camponame
de la recomendación. Por ejemplo, si el camponame
esprojects/example-project/locations/global/recommenders/google.iam.policy.Recommender/recommendations/fb927dc1-9695-4436-0000-f0f285007c0f
, el ID de recomendación esfb927dc1-9695-4436-0000-f0f285007c0f
. -
LOCATION
: la región en la que se encuentra tu conjunto de datos de BigQuery (por ejemplo,us
ous-central1
). -
PROJECT_ID
: ID del Google Cloud proyecto que contiene tus conjuntos de datos de BigQuery. Los IDs de proyecto son cadenas alfanuméricas, comomy-project
. -
FORMAT
: el formato de la respuesta. Usajson
oyaml
. -
ETAG
: valor del campoetag
de la recomendación, como"dd0686e7136a4cbb"
. Ten en cuenta que este valor puede incluir comillas. -
STATE_METADATA
: opcional. Pares clave-valor separados por comas que contienen los metadatos que elijas sobre la recomendación. Por ejemplo,--state-metadata=reviewedBy=alice,priority=high
. Los metadatos sustituyen al campostateInfo.stateMetadata
de la recomendación.
Si el comando se ejecuta correctamente, la respuesta muestra la recomendación en estado
CLAIMED
, como se muestra en el siguiente ejemplo. Para mayor claridad, en el ejemplo se omiten la mayoría de los campos:... "priority": "P1", "recommenderSubtype": "REMOVE_ROLE_BIGQUERY_DATASET", "stateInfo": { "state": "CLAIMED" } ...
-
Obtén la política de permiso del conjunto de datos y, a continuación, modifica y define la política de permiso para que refleje la recomendación.
Actualiza el estado de la recomendación a
SUCCEEDED
si has podido aplicarla o aFAILED
si no has podido hacerlo:gcloud recommender recommendations COMMAND \ RECOMMENDATION_ID \ --location=LOCATION \ --recommender=google.iam.policy.Recommender \ --project=PROJECT_ID \ --format=FORMAT \ --etag=ETAG \ --state-metadata=STATE_METADATA
Sustituye los siguientes valores:
-
COMMAND
: usamark-succeeded
si has podido aplicar la recomendación omark-failed
si no has podido aplicarla. -
RECOMMENDATION_ID
: identificador único de la recomendación. Este valor aparece al final del camponame
de la recomendación. Por ejemplo, si el camponame
esprojects/example-project/locations/global/recommenders/google.iam.policy.Recommender/recommendations/fb927dc1-9695-4436-0000-f0f285007c0f
, el ID de recomendación esfb927dc1-9695-4436-0000-f0f285007c0f
. -
LOCATION
: la región en la que se encuentra tu conjunto de datos de BigQuery (por ejemplo,us
ous-central1
). -
PROJECT_ID
: ID del Google Cloud proyecto que contiene tus conjuntos de datos de BigQuery. Los IDs de proyecto son cadenas alfanuméricas, comomy-project
. -
FORMAT
: el formato de la respuesta. Usajson
oyaml
. -
ETAG
: valor del campoetag
de la recomendación, como"dd0686e7136a4cbb"
. Ten en cuenta que este valor puede incluir comillas. -
STATE_METADATA
: opcional. Pares clave-valor separados por comas que contienen los metadatos que elijas sobre la recomendación. Por ejemplo,--state-metadata=reviewedBy=alice,priority=high
. Los metadatos sustituyen al campostateInfo.stateMetadata
de la recomendación.
Por ejemplo, si has marcado la recomendación como aplicada correctamente, la respuesta mostrará la recomendación en el estado
SUCCEEDED
. Para mayor claridad, en este ejemplo se omiten la mayoría de los campos:... "priority": "P1", "recommenderSubtype": "REMOVE_ROLE_BIGQUERY_DATASET", "stateInfo": { "state": "SUCCEEDED" } ...
-
REST
Revisa tus recomendaciones:
Para ver todas las recomendaciones disponibles para tus conjuntos de datos de BigQuery, usa el método
recommendations.list
de la API Recommender.Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
PROJECT_ID
: ID del proyectoGoogle Cloud que contiene tus conjuntos de datos de BigQuery. Los IDs de proyecto son cadenas alfanuméricas, comomy-project
.LOCATION
: la región en la que se encuentran sus conjuntos de datos de BigQuery (por ejemplo,us
ous-central1
).-
PAGE_SIZE
: opcional. Número máximo de resultados que se devolverán en esta solicitud. Si no se especifica, el servidor determinará el número de resultados que se devolverán. Si el número de recomendaciones es superior al tamaño de la página, la respuesta contiene un token de paginación que puedes usar para obtener la siguiente página de resultados. -
PAGE_TOKEN
: opcional. El token de paginación devuelto en una respuesta anterior de este método. Si se especifica, la lista de recomendaciones empezará donde terminó la solicitud anterior. PROJECT_ID
: tu ID de proyecto. Google Cloud Los IDs de proyecto son cadenas alfanuméricas, comomy-project
.
Método HTTP y URL:
GET https://recommender.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/recommenders/google.iam.policy.Recommender/recommendations?filter=recommenderSubtype%20%3D%20REMOVE_ROLE_BIGQUERY_DATASET%20OR%20recommenderSubtype%20%3D%20REPLACE_ROLE_BIGQUERY_DATASET&pageSize=PAGE_SIZE&pageToken=PAGE_TOKEN
Para enviar tu solicitud, despliega una de estas opciones:
La respuesta es similar al siguiente ejemplo. En este ejemplo, todos los usuarios con el rol Editor en el proyecto `my-project` (
projectEditor:my-project
) tienen el rol Editor de datos de BigQuery (roles/bigquery.dataEditor
) en el conjunto de datosdataset-1
. Sin embargo, este rol no se ha usado en los últimos 90 días. Por lo tanto, la recomendación de rol sugiere que revoques el rol:{ "recommendations": [ { "name": "projects/1069248613794/locations/us/recommenders/google.iam.policy.Recommender/recommendations/0e9831fe-6810-476b-b14d-2b64bda17288", "description": "This role has not been used during the observation window.", "lastRefreshTime": "2024-02-02T08:00:00Z", "primaryImpact": { "category": "SECURITY", "securityProjection": { "details": { "revokedIamPermissionsCount": 37 } } }, "content": { "operationGroups": [ { "operations": [ { "action": "remove", "resourceType": "bigquery.googleapis.com/Dataset", "resource": "//bigquery.googleapis.com/projects/my-project/datasets/dataset-1", "path": "/iamPolicy/bindings/*/members/*", "pathFilters": { "/iamPolicy/bindings/*/condition/expression": "", "/iamPolicy/bindings/*/members/*": "projectEditor:my-project", "/iamPolicy/bindings/*/role": "roles/bigquery.dataEditor" } } ] } ], "overview": { "resource": "//bigquery.googleapis.com/projects/my-project/datasets/dataset-1", "member": "projectEditor:my-project", "removedRole": "roles/bigquery.dataEditor", "addedRoles": [], "minimumObservationPeriodInDays": "0" } }, "stateInfo": { "state": "ACTIVE" }, "etag": "\"d008ad3780bad5e0\"", "recommenderSubtype": "REMOVE_ROLE_BIGQUERY_DATASET", "associatedInsights": [ { "insight": "projects/1069248613794/locations/us/insightTypes/google.iam.policy.Insight/insights/984eccca-0241-472f-baab-2557dd0d7282" } ], "priority": "P4", "targetResources": [ "//bigquery.googleapis.com/projects/my-project/datasets/dataset-1" ] } ] }
Revisa detenidamente cada recomendación y piensa cómo cambiará el acceso del principal a los recursos de Google Cloud . Para saber cómo revisar las recomendaciones de la API REST, consulta la sección Revisar recomendaciones de esta página.
Para aplicar una recomendación, sigue estos pasos:
Marca la recomendación como
CLAIMED
:Para marcar una recomendación como
CLAIMED
, lo que impide que cambie mientras la aplicas, usa el métodorecommendations.markClaimed
de la API Recommender.Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
PROJECT_ID
: ID del proyectoGoogle Cloud que contiene tus conjuntos de datos de BigQuery. Los IDs de proyecto son cadenas alfanuméricas, comomy-project
.LOCATION
: la región en la que se encuentra el conjunto de datos de BigQuery (por ejemplo,us
ous-central1
).RECOMMENDATION_ID
: identificador único de la recomendación. Este valor aparece al final del camponame
de la recomendación. Por ejemplo, si el camponame
esprojects/example-project/locations/global/recommenders/google.iam.policy.Recommender/recommendations/fb927dc1-9695-4436-0000-f0f285007c0f
, el ID de recomendación esfb927dc1-9695-4436-0000-f0f285007c0f
.ETAG
: valor del campoetag
de la recomendación, como"dd0686e7136a4cbb"
. Usa barras invertidas para escapar las comillas. Por ejemplo,"\"df7308cca9719dcc\""
.STATE_METADATA
: opcional. Objeto que contiene pares clave-valor con los metadatos que elijas sobre la recomendación. Por ejemplo,{"reviewedBy": "alice", "priority": "high"}
. Los metadatos sustituyen al campostateInfo.stateMetadata
de la recomendación.
Método HTTP y URL:
POST https://recommender.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/recommenders/google.iam.policy.Recommender/recommendations/RECOMMENDATION_ID:markClaimed
Cuerpo JSON de la solicitud:
{ "etag": "ETAG", "stateMetadata": { "STATE_METADATA" } }
Para enviar tu solicitud, despliega una de estas opciones:
La respuesta muestra la recomendación en estado
CLAIMED
, como se muestra en el siguiente ejemplo. Para mayor claridad, en este ejemplo se omiten la mayoría de los campos:... "stateInfo": { "state": "CLAIMED" }, "etag": "\"7caf4103d7669e12\"", "recommenderSubtype": "REMOVE_ROLE_BIGQUERY_DATASET", ...
Obtén la política de permiso del proyecto y, a continuación, modifica la política de permiso para que refleje la recomendación.
Actualiza el estado de la recomendación a
SUCCEEDED
si has podido aplicarla o aFAILED
si no has podido hacerlo:SUCCEEDED
Para marcar una recomendación como
SUCCEEDED
, lo que indica que has podido aplicarla, usa el métodorecommendations.markSucceeded
SUCCEEDED
de la API Recommender.Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
PROJECT_ID
: ID del proyectoGoogle Cloud que contiene tus conjuntos de datos de BigQuery. Los IDs de proyecto son cadenas alfanuméricas, comomy-project
.LOCATION
: la región en la que se encuentra el conjunto de datos de BigQuery (por ejemplo,us
ous-central1
).RECOMMENDATION_ID
: identificador único de la recomendación. Este valor aparece al final del camponame
de la recomendación. Por ejemplo, si el camponame
esprojects/example-project/locations/global/recommenders/google.iam.policy.Recommender/recommendations/fb927dc1-9695-4436-0000-f0f285007c0f
, el ID de recomendación esfb927dc1-9695-4436-0000-f0f285007c0f
.ETAG
: valor del campoetag
de la recomendación, como"dd0686e7136a4cbb"
. Usa barras invertidas para escapar las comillas. Por ejemplo,"\"df7308cca9719dcc\""
.STATE_METADATA
: opcional. Objeto que contiene pares clave-valor con los metadatos que elijas sobre la recomendación. Por ejemplo,{"reviewedBy": "alice", "priority": "high"}
. Los metadatos sustituyen al campostateInfo.stateMetadata
de la recomendación.
Método HTTP y URL:
POST https://recommender.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/recommenders/google.iam.policy.Recommender/recommendations/RECOMMENDATION_ID:markSucceeded
Cuerpo JSON de la solicitud:
{ "etag": "ETAG", "stateMetadata": { "STATE_METADATA" } }
Para enviar tu solicitud, despliega una de estas opciones:
La respuesta muestra la recomendación en estado
SUCCEEDED
, como se muestra en el siguiente ejemplo. Para mayor claridad, en este ejemplo se omiten la mayoría de los campos:... "stateInfo": { "state": "SUCCEEDED" }, "etag": "\"7caf4103d7669e12\"", "recommenderSubtype": "REMOVE_ROLE_BIGQUERY_DATASET", ...
FAILED
Para marcar una recomendación como
FAILED
, lo que indica que no has podido aplicarla, usa el métodorecommendations.markFailed
de la API Recommender.Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
PROJECT_ID
: ID del proyectoGoogle Cloud que contiene tus conjuntos de datos de BigQuery. Los IDs de proyecto son cadenas alfanuméricas, comomy-project
.LOCATION
: la región en la que se encuentra el conjunto de datos de BigQuery (por ejemplo,us
ous-central1
).RECOMMENDATION_ID
: identificador único de la recomendación. Este valor aparece al final del camponame
de la recomendación. Por ejemplo, si el camponame
esprojects/example-project/locations/global/recommenders/google.iam.policy.Recommender/recommendations/fb927dc1-9695-4436-0000-f0f285007c0f
, el ID de recomendación esfb927dc1-9695-4436-0000-f0f285007c0f
.ETAG
: valor del campoetag
de la recomendación, como"dd0686e7136a4cbb"
. Usa barras invertidas para escapar las comillas. Por ejemplo,"\"df7308cca9719dcc\""
.STATE_METADATA
: opcional. Objeto que contiene pares clave-valor con los metadatos que elijas sobre la recomendación. Por ejemplo,{"reviewedBy": "alice", "priority": "high"}
. Los metadatos sustituyen al campostateInfo.stateMetadata
de la recomendación.
Método HTTP y URL:
POST https://recommender.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/recommenders/google.iam.policy.Recommender/recommendations/RECOMMENDATION_ID:markFailed
Cuerpo JSON de la solicitud:
{ "etag": "ETAG", "stateMetadata": { "STATE_METADATA" } }
Para enviar tu solicitud, despliega una de estas opciones:
La respuesta muestra la recomendación en estado
FAILED
, como se muestra en el siguiente ejemplo. Para mayor claridad, en este ejemplo se omiten la mayoría de los campos:... "stateInfo": { "state": "FAILED" }, "etag": "\"7caf4103d7669e12\"", "recommenderSubtype": "REMOVE_ROLE_BIGQUERY_DATASET", ...
Información sobre las recomendaciones
Cada recomendación incluye información que te ayudará a entender por qué se ha hecho.
Para obtener información sobre los campos de una recomendación, consulta la referencia de
Recommendation
.Para ver el uso de permisos en el que se basa esta recomendación, consulta los estadísticas de la política asociadas a la recomendación. Estas estadísticas se muestran en el campo
associatedInsights
. Para ver una estadística de la política asociada a la recomendación, haz lo siguiente:- Copia el ID de la estadística asociada. El ID es todo lo que hay después de
insights/
en el campoinsight
. Por ejemplo, si en el campoinsight
se leeprojects/123456789012/locations/us/insightTypes/google.iam.policy.Insight/insights/7849add9-73c0-419e-b169-42b3671173fb
, el ID de la estadística es7849add9-73c0-419e-b169-42b3671173fb
. - Sigue las instrucciones para obtener una estadística de la política con el ID de la estadística que has copiado.
Siguientes pasos
- Consulta más información sobre Recommender.
- Consulta cómo usar estadísticas de políticas de permisos para conjuntos de datos de BigQuery.
A menos que se indique lo contrario, el contenido de esta página está sujeto a la licencia Reconocimiento 4.0 de Creative Commons y las muestras de código están sujetas a la licencia Apache 2.0. Para obtener más información, consulta las políticas del sitio web de Google Developers. Java es una marca registrada de Oracle o sus afiliados.
Última actualización: 2025-09-11 (UTC).
-
Lector de roles (