En esta página, se explica cómo configurar la destrucción retrasada de versiones de secretos, actualizar o quitar la duración de la demora en la destrucción, y restablecer las versiones de secretos programadas para su destrucción.
De forma predeterminada, cuando un usuario elige destruir una versión del secreto en Secret Manager, el material del secreto se destruye de inmediato y de forma permanente. Sin embargo, los usuarios con el rol de administrador de Secret Manager pueden configurar la destrucción retrasada de versiones de secretos, lo que garantiza que la versión del secreto no se destruya inmediatamente después de la solicitud y siga siendo recuperable durante un período configurable.
Cuando la destrucción retrasada está habilitada en el secreto y destruyes una versión del secreto, ocurre lo siguiente:
-
La versión está inhabilitada, lo que impide su uso.
-
El sistema programa la versión para su destrucción permanente al final del período de demora.
-
Una vez que vence el período de demora, la versión del secreto se destruye de forma permanente e irrevocable.
Beneficios
Esta función proporciona los siguientes beneficios:
-
Una capa adicional de protección contra la destrucción accidental o maliciosa de material secreto crítico. Cualquier usuario con el rol de administrador de versiones de Secret de Secret Manager puede destruir una versión de un secreto. Esta acción es irreversible. Si configuras la destrucción retrasada, puedes evitar la destrucción inmediata de las versiones de secretos. Puedes otorgar a los usuarios el acceso mínimo requerido para administrar el ciclo de vida de las versiones de secretos, de modo que puedas supervisar y evitar la destrucción accidental de datos sensibles.
-
La destrucción de una versión del secreto activa una
SECRET_VERSION_DESTROY_SCHEDULED
notificación a los temas de Pub/Sub configurados en el secreto. Los usuarios con el rol de administrador de Secret Manager pueden cancelar la destrucción programada y restablecer la versión del secreto habilitándola o inhabilitándola.
Antes de comenzar
-
Enable the Secret Manager API.
-
Configura la autenticación.
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
En la consola de Google Cloud , ve a la página Secret Manager.
-
En la página de Secret Manager, haz clic en Crear secreto.
-
En la página Crear secreto, ingresa un nombre para el secreto en el campo Nombre.
-
Ingresa un valor para el secreto (por ejemplo,
abcd1234
). También puedes subir un archivo de texto que contenga el valor del secreto con la opción Subir archivo. Esta acción crea automáticamente la versión del secreto. -
Ve a la sección Demorar la destrucción de la versión del secreto y, luego, selecciona la casilla de verificación Establecer la duración de la destrucción demorada.
-
En el campo Duración del retraso de la destrucción, ingresa la duración en días. El valor mínimo que puedes ingresar es 1 día, y el valor máximo es 1,000 días.
-
Haz clic en Crear secreto.
Para habilitar esta función en un secreto existente, ve a la página Editar secreto y, luego, configura la duración del retraso de destrucción.
- SECRET_ID: Es el ID del secreto o el identificador completamente calificado del secreto.
- TTL_DURATION: Es la duración de la demora en la destrucción de las versiones del secreto. Puedes ingresar la duración en cualquier formato, por ejemplo, días, horas o segundos. La duración mínima requerida es de 1 día, mientras que la duración máxima se puede establecer en 1,000 días.
- PROJECT_ID: El ID del proyecto de Google Cloud .
- SECRET_ID: Es el ID del secreto o el identificador completamente calificado del secreto.
- TTL_DURATION: Es la duración de la demora en la destrucción de las versiones del secreto. Ingresa la duración en segundos. Ten en cuenta que la duración mínima requerida es de 1 día, mientras que la duración máxima se puede establecer en 1,000 días.
-
Cuando se borra un secreto, se borran de inmediato todo el material secreto y las versiones de secretos relacionadas.
-
Cuando se establece una fecha de vencimiento en el secreto y este vence, todas las versiones del secreto se destruyen de inmediato, incluso si la destrucción retrasada está habilitada en el secreto.
-
En la consola de Google Cloud , ve a la página Secret Manager.
-
Para editar un secreto, usa uno de los siguientes métodos:
-
Haz clic en
Acciones en el secreto que deseas editar y, luego, en Editar. -
Haz clic en el nombre del secreto para ir a la página de detalles. En la página de detalles del secreto, haz clic en
Editar secreto.
-
-
En la página Editar secreto, ve a la sección Retrasar la destrucción de la versión del secreto. Actualiza la duración de la demora según sea necesario y, luego, haz clic en Actualizar secreto.
- SECRET_ID: ID del secreto o identificador completamente calificado del secreto
- TTL_DURATION: Es la duración de la demora en la destrucción de las versiones del secreto.
- PROJECT_ID: El Google Cloud ID del proyecto
- SECRET_ID: ID del secreto o identificador completamente calificado del secreto
- TTL_DURATION: Es la duración de la demora en la destrucción de las versiones del secreto.
-
Cuando se establece la destrucción retrasada por primera vez en el secreto, la duración del retraso en la destrucción afecta a todas las versiones activas (habilitadas y deshabilitadas) del secreto.
-
Cuando se actualiza o quita la duración del retraso de destrucción, los cambios se reflejan solo en las versiones nuevas del secreto en las que se intenta la acción de destrucción. Las versiones del Secret que ya están programadas para su destrucción se seguirán destruyendo en el momento programado.
-
En la consola de Google Cloud , ve a la página Secret Manager.
-
Para editar un secreto, usa uno de los siguientes métodos:
-
Haz clic en
Acciones en el secreto que deseas editar y, luego, en Editar. -
Haz clic en el nombre del secreto para ir a la página de detalles. En la página de detalles del secreto, haz clic en
Editar secreto.
-
-
En la página Editar secreto, ve a la sección Retrasar la destrucción de la versión del secreto. Desmarca la casilla de verificación Establecer la duración de la destrucción demorada y, luego, haz clic en Actualizar secreto.
- SECRET_ID: ID del secreto o identificador completamente calificado del secreto
- PROJECT_ID: El Google Cloud ID del proyecto
- SECRET_ID: ID del secreto o identificador completamente calificado del secreto
-
En la consola de Google Cloud , ve a la página Secret Manager.
-
En la página de Secret Manager, haz clic en un secreto para acceder a sus versiones. Se debe configurar la destrucción demorada de versiones en este Secret.
-
En la página de detalles del secreto, en la pestaña Versiones, selecciona la versión del secreto que deseas destruir.
-
Haz clic en
Acciones y, luego, en Destruir. -
En el cuadro de diálogo de confirmación que aparece, ingresa el ID del Secret para confirmar y, luego, haz clic en Programar la destrucción de las versiones seleccionadas.
- SECRET_VERSION_ID: ID de la versión o identificador completamente calificado de la versión
- SECRET_ID: ID del secreto o identificador completamente calificado del secreto
- PROJECT_ID: El Google Cloud ID del proyecto
- SECRET_ID: ID del secreto o identificador completamente calificado del secreto
- VERSION_ID: ID de la versión o identificador completamente calificado de la versión
-
En la consola de Google Cloud , ve a la página Secret Manager.
-
En la página de Secret Manager, haz clic en un secreto para acceder a sus versiones.
-
En la página de detalles del secreto, en la pestaña Versiones, selecciona la versión del secreto que está programada para su destrucción.
-
Haz clic en
Acciones y, luego, en Habilitar. -
En el diálogo de confirmación que aparece, haz clic en Habilitar las versiones seleccionadas.
- SECRET_VERSION_ID: ID de la versión o identificador completamente calificado de la versión
- SECRET_ID: ID del secreto o identificador completamente calificado del secreto
- PROJECT_ID: El Google Cloud ID del proyecto
- SECRET_ID: ID del secreto o identificador completamente calificado del secreto
- VERSION_ID: ID de la versión o identificador completamente calificado de la versión
-
En la consola de Google Cloud , ve a la página Secret Manager.
-
En la página de Secret Manager, haz clic en un secreto para acceder a sus versiones.
-
En la página de detalles del secreto, en la pestaña Versiones, selecciona la versión del secreto que está programada para su destrucción.
-
Haz clic en
Acciones y, luego, en Inhabilitar. -
En el diálogo de confirmación que aparece, haz clic en Inhabilitar las versiones seleccionadas.
- SECRET_VERSION_ID: ID de la versión o identificador completamente calificado de la versión
- SECRET_ID: ID del secreto o identificador completamente calificado del secreto
- PROJECT_ID: El Google Cloud ID del proyecto
- SECRET_ID: ID del secreto o identificador completamente calificado del secreto
- VERSION_ID: ID de la versión o identificador completamente calificado de la versión
- Obtén más información para garantizar la integridad de los datos.
- Obtén más información sobre las prácticas recomendadas.
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 de REST en esta página en un entorno de desarrollo local, debes usar las credenciales que proporcionas a la CLI de gcloud.
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
Si deseas obtener más información, consulta Autentica para usar REST en la Google Cloud documentación de autenticación.
Roles obligatorios
Para obtener los permisos que necesitas para configurar la destrucción retrasada de versiones de secretos, pídele a tu administrador que te otorgue el rol de IAM de administrador de Secret Manager (
roles/secretmanager.admin
) en un secreto. Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.También puedes obtener los permisos necesarios mediante roles personalizados o cualquier otro rol predefinido.
Cómo configurar la destrucción demorada
Puedes habilitar la destrucción retrasada de una versión del secreto cuando creas el secreto o cuando lo actualizas. Para configurar la destrucción retrasada, usa uno de los siguientes métodos:
Console
gcloud
Antes de usar cualquiera de los datos de comando a continuación, realiza los siguientes reemplazos:
Ejecuta el siguiente comando:
Linux, macOS o Cloud Shell
gcloud secrets create SECRET_ID --version-destroy-ttl=TTL_DURATION
Windows (PowerShell)
gcloud secrets create SECRET_ID --version-destroy-ttl=TTL_DURATION
Windows (cmd.exe)
gcloud secrets create SECRET_ID --version-destroy-ttl=TTL_DURATION
La respuesta contiene el secreto recién creado.
REST
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
Método HTTP y URL:
POST https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets?secretId=SECRET_ID
Cuerpo JSON de la solicitud:
{"replication": {"automatic": {}}, "version_destroy_ttl":"TTL_DURATION"}
Para enviar tu solicitud, elige una de estas opciones:
curl
Guarda el cuerpo de la solicitud en un archivo llamado
request.json
y ejecuta el siguiente comando:curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets?secretId=SECRET_ID"PowerShell
Guarda el cuerpo de la solicitud en un archivo llamado
request.json
y ejecuta el siguiente comando:$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets?secretId=SECRET_ID" | Select-Object -Expand ContentDeberías recibir una respuesta JSON similar a la que se muestra a continuación:
{ "name":"projects/PROJECT_ID/secrets/SECRET_ID", "replication":{ "automatic":{ } }, "createTime":"2023-10-16T17:10:16.345401Z", "etag":"\"1607d90ee3d84c\"", "versionDestroyTtl":"TTL_DURATION" }
La destrucción retrasada no se aplica en los siguientes casos:
Actualiza la duración del retraso de la destrucción
Para actualizar la duración del retraso de destrucción, usa uno de los siguientes métodos:
Console
gcloud
Antes de usar cualquiera de los datos de comando a continuación, realiza los siguientes reemplazos:
Ejecuta el siguiente comando:
Linux, macOS o Cloud Shell
gcloud secrets update SECRET_ID --version-destroy-ttl=TTL_DURATION
Windows (PowerShell)
gcloud secrets update SECRET_ID --version-destroy-ttl=TTL_DURATION
Windows (cmd.exe)
gcloud secrets update SECRET_ID --version-destroy-ttl=TTL_DURATION
La respuesta contiene el secreto recién creado.
REST
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
Método HTTP y URL:
PATCH https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID?updateMask=version_destroy_ttl
Cuerpo JSON de la solicitud:
{ "version_destroy_ttl":"TTL_DURATION" }
Para enviar tu solicitud, elige una de estas opciones:
curl
Guarda el cuerpo de la solicitud en un archivo llamado
request.json
y ejecuta el siguiente comando:curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID?updateMask=version_destroy_ttl"PowerShell
Guarda el cuerpo de la solicitud en un archivo llamado
request.json
y ejecuta el siguiente comando:$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID?updateMask=version_destroy_ttl" | Select-Object -Expand ContentDeberías recibir una respuesta JSON similar a la que se muestra a continuación:
{ "name":"projects/PROJECT_ID/secrets/SECRET_ID", "replication":{ "automatic":{ } }, "createTime":"2023-10-16T17:10:16.345401Z", "etag":"\"1607d90ee3d84c\"", "versionDestroyTtl":"TTL_DURATION" }
Las versiones de secretos afectadas por la duración de la demora en la destrucción dependen de lo siguiente:
Cómo inhabilitar la demora en la destrucción
Para inhabilitar la destrucción retrasada de versiones, usa uno de los siguientes métodos:
Console
gcloud
Antes de usar cualquiera de los datos de comando a continuación, realiza los siguientes reemplazos:
Ejecuta el siguiente comando:
Linux, macOS o Cloud Shell
gcloud secrets update SECRET_ID --remove-version-destroy-ttl
Windows (PowerShell)
gcloud secrets update SECRET_ID --remove-version-destroy-ttl
Windows (cmd.exe)
gcloud secrets update SECRET_ID --remove-version-destroy-ttl
REST
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
Método HTTP y URL:
PATCH https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID?updateMask=version_destroy_ttl
Cuerpo JSON de la solicitud:
{}
Para enviar tu solicitud, elige una de estas opciones:
curl
Guarda el cuerpo de la solicitud en un archivo llamado
request.json
y ejecuta el siguiente comando:curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID?updateMask=version_destroy_ttl"PowerShell
Guarda el cuerpo de la solicitud en un archivo llamado
request.json
y ejecuta el siguiente comando:$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID?updateMask=version_destroy_ttl" | Select-Object -Expand ContentDeberías recibir una respuesta JSON similar a la que se muestra a continuación:
{ "name":"projects/PROJECT_ID/secrets/SECRET_ID", "replication":{ "automatic":{ } }, "createTime":"2023-10-16T17:10:16.345401Z", "etag":"\"1607d90ee3d84c\"" }
Programa versiones del secreto para su destrucción demorada
Para programar la destrucción demorada de una versión del secreto, usa uno de los siguientes métodos:
Console
gcloud
Antes de usar cualquiera de los datos de comando a continuación, realiza los siguientes reemplazos:
Ejecuta el siguiente comando:
Linux, macOS o Cloud Shell
gcloud secrets versions destroy SECRET_VERSION_ID --secret=SECRET_ID
Windows (PowerShell)
gcloud secrets versions destroy SECRET_VERSION_ID --secret=SECRET_ID
Windows (cmd.exe)
gcloud secrets versions destroy SECRET_VERSION_ID --secret=SECRET_ID
REST
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
Método HTTP y URL:
POST https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION_ID:destroy
Cuerpo JSON de la solicitud:
{}
Para enviar tu solicitud, elige una de estas opciones:
curl
Guarda el cuerpo de la solicitud en un archivo llamado
request.json
y ejecuta el siguiente comando:curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION_ID:destroy"PowerShell
Guarda el cuerpo de la solicitud en un archivo llamado
request.json
y ejecuta el siguiente comando:$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION_ID:destroy" | Select-Object -Expand ContentDeberías recibir una respuesta JSON similar a la que se muestra a continuación:
{ "name":"projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION_ID", "createTime":"2023-10-16T17:21:55.920036Z", "state":"DISABLED", "replicationStatus":{ "automatic":{ } }, "etag":"\"1607d8b2fc1cf4\"", "scheduledDestroyTime":"2023-10-16T17:26:57.459395960Z" }
La versión del secreto se inhabilita de inmediato y se programa para su destrucción después de que vence el período de demora en la destrucción. Puedes ver la fecha y la hora exactas en las que se destruirá la versión en la columna Programada para su destrucción el de la tabla Versiones.
Restablece versiones de secretos
Puedes restablecer una versión del secreto que está programada para su destrucción habilitando o inhabilitando la versión del secreto.
Habilita una versión del Secret programada para su destrucción
Para habilitar una versión secreta programada para su destrucción, usa uno de los siguientes métodos:
Console
gcloud
Antes de usar cualquiera de los datos de comando a continuación, realiza los siguientes reemplazos:
Ejecuta el siguiente comando:
Linux, macOS o Cloud Shell
gcloud secrets versions enable SECRET_VERSION_ID --secret=SECRET_ID
Windows (PowerShell)
gcloud secrets versions enable SECRET_VERSION_ID --secret=SECRET_ID
Windows (cmd.exe)
gcloud secrets versions enable SECRET_VERSION_ID --secret=SECRET_ID
REST
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
Método HTTP y URL:
POST https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION_ID:enable
Cuerpo JSON de la solicitud:
{}
Para enviar tu solicitud, elige una de estas opciones:
curl
Guarda el cuerpo de la solicitud en un archivo llamado
request.json
y ejecuta el siguiente comando:curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION_ID:enable"PowerShell
Guarda el cuerpo de la solicitud en un archivo llamado
request.json
y ejecuta el siguiente comando:$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION_ID:enable" | Select-Object -Expand ContentDeberías recibir una respuesta JSON similar a la que se muestra a continuación:
{ "name":"projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION_ID", "createTime":"2023-10-16T17:21:55.920036Z", "state":"ENABLED", "replicationStatus":{ "automatic":{ } }, "etag":"\"1607d8b3e8e1bc\"" }
Inhabilita una versión del Secret programada para su destrucción
Para inhabilitar una versión de un secreto que está programada para su destrucción, usa uno de los siguientes métodos:
Console
gcloud
Antes de usar cualquiera de los datos de comando a continuación, realiza los siguientes reemplazos:
Ejecuta el siguiente comando:
Linux, macOS o Cloud Shell
gcloud secrets versions disable SECRET_VERSION_ID --secret=SECRET_ID
Windows (PowerShell)
gcloud secrets versions disable SECRET_VERSION_ID --secret=SECRET_ID
Windows (cmd.exe)
gcloud secrets versions disable SECRET_VERSION_ID --secret=SECRET_ID
La respuesta contiene la versión inhabilitada del secreto.
REST
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
Método HTTP y URL:
POST https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION_ID:disable
Cuerpo JSON de la solicitud:
{}
Para enviar tu solicitud, elige una de estas opciones:
curl
Guarda el cuerpo de la solicitud en un archivo llamado
request.json
y ejecuta el siguiente comando:curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION_ID:disable"PowerShell
Guarda el cuerpo de la solicitud en un archivo llamado
request.json
y ejecuta el siguiente comando:$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION_ID:disable" | Select-Object -Expand ContentDeberías recibir una respuesta JSON similar a la que se muestra a continuación:
{ "name":"projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION_ID", "createTime":"2023-10-16T17:21:55.920036Z", "state":"DISABLED", "replicationStatus":{ "automatic":{ } }, "etag":"\"1607d8b3e8e1bc\"" }
¿Qué sigue?
Salvo que se indique lo contrario, el contenido de esta página está sujeto a la licencia Atribución 4.0 de Creative Commons, y los ejemplos de código están sujetos a la licencia Apache 2.0. Para obtener más información, consulta las políticas del sitio de Google Developers. Java es una marca registrada de Oracle o sus afiliados.
Última actualización: 2025-07-14 (UTC)
-