Los recursos se refieren a los Google Cloud de una organización, como las instancias de Compute Engine o los buckets de Cloud Storage.
En esta guía, se muestra cómo usar las bibliotecas cliente de Security Command Center y acceder a los registros obsoletos que se mantienen para los recursos de un proyecto o una organización.
Security Command Center solo mantiene registros de un subconjunto de los recursos en Cloud Asset Inventory. Para obtener la lista más completa de recursos en tu entorno, usa Cloud Asset Inventory y enumera los recursos.
Para obtener más información, consulta lo siguiente:
- Servicio de lista de recursos de Cloud Asset Inventory
- Tipos de recursos admitidos en Security Command Center
Niveles de otorgamiento de roles de IAM
Los roles de IAM para Security Command Center se pueden otorgar a nivel de organización, carpeta o proyecto. Tu capacidad para ver, editar, crear o actualizar hallazgos, recursos y fuentes de seguridad depende del nivel al que se te otorga acceso. Para obtener más información sobre los roles de Security Command Center, consulta Control de acceso.
Antes de comenzar
Antes de configurar una fuente, debes completar lo siguiente:
Tamaño de la página
Todas las APIs de listas de Security Command Center están paginadas. Cada respuesta muestra una página de resultados y un token para mostrar la página siguiente. El tamaño de la página se puede configurar. El valor predeterminado de pageSize es 10 y se puede establecer en un mínimo de 1 y un máximo de 1,000.
Tipos de recursos
El atributo resourceType en Security Command Center usa una convención de nombres
diferente a la de Cloud Asset Inventory. Para
obtener una lista de los formatos de tipos de recursos, consulta Tipos de recursos compatibles en
Security Command Center.
Enumera todos los recursos
En estos ejemplos, se muestra cómo enumerar todos los recursos:
gcloud
Para enumerar todos los recursos de un proyecto, una carpeta o una organización, ejecuta el siguiente comando:
gcloud scc assets list PARENT_ID
Reemplaza PARENT_ID por uno de los siguientes valores:
- Un ID de organización con el siguiente formato:
ORGANIZATION_ID(solo el ID numérico) - Un ID de carpeta en el siguiente formato:
folders/FOLDER_ID - Un ID de proyecto con el siguiente formato:
projects/PROJECT_ID
Para ver más ejemplos, ejecuta lo siguiente:
gcloud scc assets list --help
Para ver ejemplos en la documentación, consulta Lista de recursos de gcloud scc.
Python
Java
Go
Node.js
El resultado de cada recurso es un objeto JSON similar al siguiente:
asset:
createTime: '2020-10-05T17:55:14.823Z'
iamPolicy:
policyBlob: '{"bindings":[{"role":"roles/owner","members":["serviceAccount:SERVICE_ACCOUNT@PROJECT_ID.iam.gserviceaccount.com","user:USER_EMAIL@gmail.com"]}]}'
name: organizations/ORGANIZATION_ID/assets/ASSET_ID
resourceProperties:
createTime: '2020-10-05T17:36:17.915Z'
lifecycleState: ACTIVE
name: PROJECT_ID
parent: '{"id":"ORGANIZATION_ID","type":"organization"}'
projectId: PROJECT_ID
projectNumber: 'PROJECT_NUMBER'
securityCenterProperties:
resourceDisplayName: PROJECT_ID
resourceName: //cloudresourcemanager.googleapis.com/projects/PROJECT_NUMBER
resourceOwners:
- serviceAccount:SERVICE_ACCOUNT@PROJECT_ID.iam.gserviceaccount.com
- user:USER_EMAIL@gmail.com
resourceParent: //cloudresourcemanager.googleapis.com/organizations/ORGANIZATION_ID
resourceParentDisplayName: ORGANIZATION_NAME
resourceProject: //cloudresourcemanager.googleapis.com/projects/PROJECT_NUMBER
resourceProjectDisplayName: PROJECT_ID
resourceType: google.cloud.resourcemanager.Project
securityMarks:
name: organizations/ORGANIZATION_ID/assets/ASSET_ID/securityMarks
updateTime: '2020-10-05T17:55:14.823Z'
Filtrar recursos
Un proyecto, una carpeta o una organización pueden tener varios recursos. En el ejemplo anterior, no se usan filtros, por lo que se muestran todos los recursos. Security Command Center te permite usar filtros de recursos para obtener información sobre recursos específicos. Los filtros son como cláusulas "where" en las sentencias de SQL, excepto que, en lugar de aplicarse a columnas, se aplican a los objetos que muestra la API.
El resultado de muestra del ejemplo anterior presenta algunos campos y subcampos, y sus propiedades, que se pueden usar en filtros de recursos. Security Command Center también admite arrays y objetos JSON completos como posibles tipos de propiedades. Puedes aplicar los siguientes filtros:
- Elementos de array
- Objetos JSON completos con coincidencia parcial de cadenas
- Subcampos de objetos JSON
Los subcampos deben ser números, cadenas o valores booleanos, y las expresiones de filtro deben usar los siguientes operadores de comparación:
- Cadenas:
- Igualdad completa
= - Coincidencia parcial de cadenas
:
- Igualdad completa
- Números:
- Desigualdades
<,>,<=,>= - Igualdad
=
- Desigualdades
- Valores booleanos:
- Igualdad
=
- Igualdad
En los siguientes ejemplos, se filtran recursos:
gcloud
Usa el siguiente comando para filtrar recursos:
gcloud scc assets list PARENT_ID --filter="FILTER"
Reemplaza lo siguiente:
FILTERpor el filtro que necesitas usar. Por ejemplo, el siguiente filtro solo muestra los recursos del proyecto:--filter="security_center_properties.resource_type=\"google.cloud.resourcemanager.Project\""
PARENT_IDpor uno de los siguientes valores:- Un ID de organización con el siguiente formato:
ORGANIZATION_ID(solo el ID numérico) - Un ID de carpeta en el siguiente formato:
folders/FOLDER_ID - Un ID de proyecto con el siguiente formato:
projects/PROJECT_ID
- Un ID de organización con el siguiente formato:
Para ver más ejemplos, ejecuta lo siguiente:
gcloud scc assets list --help
Para ver ejemplos en la documentación, consulta Lista de recursos de gcloud scc.
Python
Java
Go
Node.js
Crea una lista en un momento determinado
En los ejemplos anteriores, se muestra cómo enumerar un conjunto actual de recursos. Security Command Center también te permite ver una instantánea histórica de los recursos. En los siguientes ejemplos, se muestra el estado de todos los recursos en un momento específico. Security Command Center admite resoluciones de tiempo en milisegundos.
gcloud
Usa el siguiente comando para enumerar los recursos en un momento específico:
gcloud scc assets list PARENT_ID --read-time="READ_TIME"
Reemplaza lo siguiente:
READ_TIMEcon la fecha y hora en la que se deben mostrar los recursos. Usa el siguiente formato:YYYY-MM-DDThh:mm:ss.ffffffZ. Por ejemplo:--read-time="2022-12-21T07:00:06.861Z"
PARENT_IDpor uno de los siguientes valores:- Un ID de organización con el siguiente formato:
ORGANIZATION_ID(solo el ID numérico) - Un ID de proyecto con el siguiente formato:
projects/PROJECT_ID - Un ID de carpeta en el siguiente formato:
folders/FOLDER_ID
- Un ID de organización con el siguiente formato:
Para ver más ejemplos, ejecuta lo siguiente:
gcloud scc assets list --help
Para ver ejemplos en la documentación, consulta Lista de recursos de gcloud scc.
Python
Java
Go
Node.js
Enumera recursos con cambios de estado
Security Command Center te permite comparar un recurso en dos momentos diferentes para identificar
si se agregó, quitó o estuvo presente durante el período especificado. En
los siguientes ejemplos, se comparan proyectos que existen en READ_TIME con un momento anterior
especificado por COMPARE_DURATION. COMPARE_DURATION se proporciona en
segundos.
Cuando se configura COMPARE_DURATION, el atributo stateChange en los resultados de la lista de recursos
se actualiza con uno de los siguientes valores:
ADDED: El recurso no estaba presente al comienzo decompareDuration, pero sí enreadTime.REMOVED: El recurso estaba presente al comienzo decompareDuration, pero no enreadTime.ACTIVE: El recurso estaba presente al comienzo y al final del período definido porcompareDurationyreadTime.
gcloud
Usa el siguiente comando para comparar el estado de los recursos en dos momentos diferentes:
gcloud scc assets list PARENT_ID \ --filter="FILTER" \ --read-time=READ_TIME \ --compare-duration=COMPARE_DURATION
Reemplaza lo siguiente:
COMPARE_DURATIONpor una cantidad de segundos que define un punto en el tiempo anterior al especificado en la marca--read-time. Por ejemplo:--compare-duration=84600sFILTERpor el filtro que necesitas usar. Por ejemplo, el siguiente filtro solo muestra los recursos del proyecto:--filter="security_center_properties.resource_type=\"google.cloud.resourcemanager.Project\""
PARENT_IDpor uno de los siguientes valores:- Un ID de organización con el siguiente formato:
ORGANIZATION_ID(solo el ID numérico) - Un ID de proyecto con el siguiente formato:
projects/PROJECT_ID - Un ID de carpeta en el siguiente formato:
folders/FOLDER_ID
- Un ID de organización con el siguiente formato:
READ_TIMEcon la fecha y hora en la que se deben mostrar los recursos. Usa el siguiente formato:YYYY-MM-DDThh:mm:ss.ffffffZ. Por ejemplo: Para ver más ejemplos, ejecuta lo siguiente:--read-time="2022-12-21T07:00:06.861Z"
gcloud scc assets list --help
Para ver ejemplos en la documentación, consulta Lista de recursos de gcloud scc.
Python
Java
Go
Node.js
Ejemplos de filtros
A continuación, se muestran otros filtros de recursos útiles. Puedes usar AND y OR en
los filtros para combinar parámetros y expandir o definir mejor los resultados.
Busca un recurso del proyecto con un propietario específico
"security_center_properties.resource_type = \"google.cloud.resourcemanager.Project\" AND security_center_properties.resource_owners : \"$USER\""
Por lo general, $USER tiene el formato user:someone@domain.com. La comparación
para user usa el operador de subcadena : y no es necesaria una concordancia exacta.
Reglas de firewall que tienen puertos HTTP abiertos
"security_center_properties.resource_type = \"google.compute.Firewall\" AND resource_properties.name =\"default-allow-http\""
Recursos que pertenecen a proyectos específicos
"security_center_properties.resource_parent = \"$PROJECT_1_NAME\" OR security_center_properties.resource_parent = \"$PROJECT_2_NAME\""
$PROJECT_1_NAME y $PROJECT_2_NAME son identificadores de recursos con el formato
//cloudresourcemanager.googleapis.com/projects/$PROJECT_ID, en el que
$PROJECT_ID es el número del proyecto. Un ejemplo completo sería el siguiente:
//cloudresourcemanager.googleapis.com/projects/100090906
Busca imágenes de Compute Engine cuyos nombres contengan una cadena específica
En este filtro, se muestran imágenes de Compute Engine que contienen la subcadena "Debia":
"security_center_properties.resource_type = \"google.compute.Image\" AND resource_properties.name : \"Debia\""
Recursos cuyas propiedades contienen pares clave-valor
Este filtro muestra buckets de Cloud Storage en los que bucketPolicyOnly
está inhabilitado. El valor de resourceProperties.iamConfiguration se codifica como una
cadena. Usa el carácter \ para escapar los caracteres especiales en las cadenas,
incluido el operador : entre el nombre de la clave y el valor.
"resourceProperties.iamConfiguration:"\"bucketPolicyOnly\"\:{\"enabled\"\:false""
Busca recursos del proyecto creados a una hora específica o antes
Estos filtros de ejemplo coinciden con los recursos creados antes o a partir del 18 de julio de 2019
a las 8:26:21 p.m. GMT. Con el filtro create_time, puedes expresar la hora con los
siguientes formatos y tipos:
Tiempo Unix (en milisegundos) como literal de número entero
"create_time <= 1563481581000"RFC 3339 como literal de cadena
"create_time <= \"2019-07-18T20:26:21+00:00\""
Excluye recursos de los resultados
Para excluir un recurso de los resultados, coloca un carácter - delante de un parámetro
y usa la negación. La operación es similar a usar el operador NOT en una
sentencia de SQL.
Este filtro muestra todos los recursos del proyecto, excepto Debia:
"security_center_properties.resource_type = \"google.cloud.resourcemanager.Project\" AND -resource_properties.projectId = \"Debia\""
¿Qué sigue?
Obtén más información para acceder a Security Command Center con una biblioteca cliente.