Arquivo YAML de postura de segurança

Nesta página, você terá uma visão geral dos pares de chave-valor no arquivo posture.yaml criado para definir as políticas da sua postura de segurança. Para criar um arquivo YAML de postura e implantá-lo no seu ambiente, consulte Gerenciar uma postura de segurança.

Estrutura de arquivos YAML de postura

As posturas são arquivos YAML com a seguinte estrutura:

name: posture_name
state: posture_state
description: posture_description
policy_sets:
- policy_set_id: policy_set_ID
  - description: policy_set_description
  policies:
  - policy_id: policy_id
    compliance_standards:
      - standard: policy_standards
      - control: policy_control
          - description: policy_description
    # Definition for a organization policy
    constraint:
      org_policy_constraint:
        canned_constraint_id: constraint_ID
        policy_rules:
          - org_policy_kind: org_policy_kind_value
          - condition:
              expression: org_policy_expression
              title: org_policy_title
              description: org_policy_description
              location: org_policy_location
    # Definition for a custom organization policy constraint
    constraint:
      org_policy_constraint_custom:
        custom_constraint:
          name: custom_org_constraint_name
          resource_types: custom_org_resource_type
          method_types: custom_org_method_type
          condition: custom_org_condition
          action_type: custom_org_action_type
          display_name: custom_org_constraint_display_name
          description: custom_org_constraint_description
        policy_rules:
          - org_policy_kind: org_policy_kind_value
          - condition:
              expression: org_policy_expression
              title: org_policy_title
              description: org_policy_description
              location: org_policy_location
      # Definition for a Security Health Analytics detector
      constraint:
        security_health_analytics_module:
            module_name: sha_detector_name
            module_enablement_state: sha_detector_enabled
      # Definition for a custom Security Health Analytics detector
      constraint:
        security_health_analytics_custom_module:
            display_name: sha_custom_detector_name
            config:
                predicate:
                    expression: sha_custom_detector_expression
                    title: sha_custom_detector_predicate_title
                    description: sha_custom_detector_predicate_description
                    location: sha_custom_detector_predicate_location
                - custom_output:
                    - property:
                        name: sha_custom_detector_output_name
                        value_expression:
                            expression: sha_custom_detector_output_expression
                            title: sha_custom_detector_output_title
                            description: sha_custom_detector_output_description
                            location: sha_custom_detector_output_location
                resource_selector:
                    - resource_types: sha_custom_detector_resource
            severity: sha_custom_severity_level
              description: sha_custom_detector_description
              recommendation: sha_custom_detector_recommendation
            module_enablement_state: sha_detector_enabled

Descrição dos pares de chave-valor

A tabela a seguir fornece uma descrição dos pares de chave-valor no arquivo posture.yaml.

Par de chave-valor Descrição
name: posture_name O nome da postura, começando com uma letra. Esse valor é opcional porque você especifica o nome da postura ao executar o comando gcloud scc postures create.
state: posture_state Um ENUM que você pode definir como ACTIVE, DRAFT ou DEPRECATED. Para saber mais sobre os estados, consulte Mudar o estado de uma postura.
description: posture_description Uma descrição da política. Este valor é opcional.
policy_set_id: policy_set_ID Um identificador exclusivo para a política definida no arquivo de postura. Um arquivo de postura pode incluir vários conjuntos de políticas.
description: policy_set_description Uma descrição do conjunto de políticas. Este valor é opcional.
policy_id: policy_id Um identificador exclusivo da política no conjunto. Um conjunto de políticas pode incluir várias delas.
standard: policy_compliance_standard O nome do padrão de compliance compatível com esta política.
control: policy_compliance_control Os controles específicos dentro do padrão de compliance que esta política suporta.
description: policy_compliance_description Uma descrição do padrão de compliance compatível com esta política.
canned_constraint_id: constraint_ID O nome da restrição da política da organização. Por exemplo, cloudbuild.allowedWorkerPools Não inclua o prefixo constraints/ em constraint_ID.
org_policy_kind Os valores das políticas da organização de lista são allow_all, deny_all, allowed_values, denied_values. O valor das políticas booleanas da organização é enforce.
org_policy_kind_value Os valores para o tipo allow_all, deny_all e enforce são true ou false. O valor dos tipos allowed_values e denied_values é uma lista de valores permitidos ou negados, respectivamente.
condition: Uma condição que determina se a regra é usada na avaliação da política. Quando definido, o campo expression em Expr precisa incluir de 1 a 10 subexpressões, unidas pelos operadores || ou && . Cada subexpressão precisa estar no formato resource.matchTag('ORG_ID/tag_key_short_name, 'tag_value_short_name') ou resource.matchTagId('tagKeys/key_id', 'tagValues/value_id'), em que key_name e value_name são os nomes de recursos de chaves e valores de rótulo. Esses nomes estão disponíveis no serviço do Gerenciador de tags. Um exemplo de expressão é: resource.matchTag('123456789/environment, 'prod') ou resource.matchTagId('tagKeys/123', 'tagValues/456').
expression: org_policy_expression A representação textual de uma expressão na sintaxe de Common Expression Language. Este valor é opcional.
title: org_policy_title A descrição da finalidade da expressão. Este valor é opcional.
description: org_policy_description A descrição da expressão. Este valor é opcional.
location: org_policy_location Uma string que indica o local da expressão para relatar erros. Por exemplo, um nome de arquivo e uma posição no arquivo. Este valor é opcional.
name: custom_org_constraint_name O nome da restrição personalizada, no formato organizations/ORGANIZATION_ID/customConstraints/CONSTRAINT_NAME. Por exemplo, organizations/3589215982/customConstraints/custom.disableGkeAutoUpgrade. O CONSTRAINT_NAME não pode ter mais de 62 caracteres. O prefixo organizations/{organization_id}/customConstraints/custom não é contado. Definir uma restrição personalizada no arquivo de postura cria uma nova restrição personalizada.
resource_types: custom_org_resource_type O nome totalmente qualificado do recurso REST do Google Cloud que contém o objeto e o campo que você quer restringir. Há um máximo de 20 restrições personalizadas por tipo de recurso.
method_types: custom_org_method_type A lista de métodos RESTful para aplicar a restrição.
condition: custom_org_condition A condição CEL que se refere ao recurso de serviço com suporte. Esse campo tem um comprimento máximo de 1000 caracteres.
action_type: custom_org_action_type A ação a ser realizada se a condição for atendida.
display_name: custom_org_constraint_display_name Um nome legível para a restrição. Esse campo tem um comprimento máximo de 200 caracteres.
description: custom_org_constraint_description A descrição da restrição a ser exibida como uma mensagem de erro quando a política é violada. Esse campo tem um comprimento máximo de 2000 caracteres.
module_name: sha_detector_name O nome de um detector da Análise de integridade da segurança. Por exemplo, BIGQUERY_TABLE_CMEK_DISABLED
module_enablement_state: sha_detector_enabled Se o detector da Análise de integridade da segurança está ativado. ENABLED ou DISABLED.
display_name: sha_custom_detector_name O nome do módulo personalizado da Análise de integridade da segurança. O nome precisa ter entre 1 e 128 caracteres, começar com letra minúscula e conter apenas caracteres alfanuméricos ou sublinhados.
expression: sha_custom_detector_expression As expressões CEL que verificam as propriedades dos tipos de recursos que serão verificados.
title: sha_custom_detector_predicate_title O nome da propriedade do predicado do módulo personalizado da Análise de integridade da segurança.
description: sha_custom_detector_predicate_description A descrição da propriedade do predicado do módulo personalizado da Análise de integridade da segurança.
location: sha_custom_detector_predicate_location O local ao qual a propriedade do predicado se aplica.
name: sha_custom_detector_output_name O nome da propriedade custom_output.
expression: sha_custom_detector_output_expression Qual expressão será retornada na saída.
title: sha_custom_detector_output_title O título da saída.
description: sha_custom_detector_output_description A descrição da saída do módulo personalizado da Análise de integridade da segurança.
location: sha_custom_detector_output_location O local ao qual a saída se aplica.
resource_types: sha_custom_detector_resource Os tipos de recursos que o módulo personalizado verifica.
severity: sha_custom_severity_level A gravidade das descobertas criadas por este módulo.
description: sha_custom_detector_description A vulnerabilidade ou configuração incorreta que o módulo personalizado detecta.
recommendation: sha_custom_detector_recommendation Uma descrição de como corrigir o problema detectado.

Exemplo de posture.yaml

createTime: '2024-04-01T15:27:27.188366349Z'
etag: h5ulCqzUqOcaIjKjxHFrOrrZpmneG8A0K1mdO-uHsLM
name: organizations/123/locations/global/postures/mixedcasposture
policySets:
- policies:
  - constraint:
      securityHealthAnalyticsModule:
        moduleEnablementState: ENABLED
        moduleName: BIGQUERY_TABLE_CMEK_DISABLED
    description: enable BIGQUERY_TABLE_CMEK_DISABLED
    policyId: SHA module BIGQUERY_TABLE_CMEK_DISABLED
  - constraint:
      orgPolicyConstraint:
        cannedConstraintId: iam.allowServiceAccountCredentialLifetimeExtension
        policyRules:
        - allowAll: true
        - condition:
            expression: resource.matchTag("123/location", "us-east3")
            title: policy for us-east3
            description: apply policy to us-east3
    policyId: test/123/policies/iam.allowServiceAccountCredentialLifetimeExtension
  - constraint:
      orgPolicyConstraintCustom:
        customConstraint:
          actionType: ALLOW
          condition: resource.management.autoUpgrade == false
          description: Only allow GKE NodePool resource to be created or updated if
            AutoUpgrade is not enabled where this custom constraint is enforced.
          displayName: Disable GKE auto upgrade
          methodTypes:
          - CREATE
          name: organizations/123/customConstraints/custom.gke123
          resourceTypes:
          - container.googleapis.com/NodePool
        policyRules:
        - enforce: true
    policyId: orgPolicycustomconstraint
  - constraint:
      securityHealthAnalyticsModule:
        moduleEnablementState: DISABLED
        moduleName: PUBLIC_BUCKET_ACL
    description: PUBLIC_BUCKET_ACL disabled
    policyId: sha module PUBLIC_BUCKET_ACL
  - constraint:
      securityHealthAnalyticsCustomModule:
        config:
          customOutput: {}
          description: Test Custom Module
          predicate:
            expression: resource.rotationPeriod > duration('2592000s')
          recommendation: Testing custom modules
          resourceSelector:
            resourceTypes:
            - cloudkms.googleapis.com/CryptoKey
          severity: CRITICAL
        displayName: customSHA
        moduleEnablementState: ENABLED
    policyId: sha_custom_module
  - constraint:
      securityHealthAnalyticsCustomModule:
        config:
          customOutput: {}
          description: Test Custom Module
          predicate:
            expression: resource.rotationPeriod > duration('2592000s')
          recommendation: Testing custom modules
          resourceSelector:
            resourceTypes:
            - cloudkms.googleapis.com/CryptoKey
          severity: CRITICAL
        displayName: customSHA2
        moduleEnablementState: ENABLED
    policyId: sha_custom_module_2
  policySetId: PolicySetmix
- policy_set_id: BigQuery detective policy set
  description: SHA module that new customers can automatically enable.
  policies:
  - policy_id: Public dataset
    constraint:
      securityHealthAnalyticsModule:
        moduleEnablementState: ENABLED
        moduleName: PUBLIC_DATASET
state: ACTIVE

Examples

Para ver exemplos, consulte os modelos de postura predefinida.

Confira a seguir um arquivo de postura que inclui detectores da Análise de integridade da segurança para a AWS e o Google Cloud:

description: Posture to help make storage workloads more secure across Google Cloud and AWS.
state: ACTIVE
policy_sets:
- policy_set_id: Google Cloud policy set
  description: Policy set containing organization policies and Security Health Analytics modules for securing Cloud Storage.
  policies:
  - policy_id: Enforce Public Access Prevention
    compliance_standards:
    - standard: NIST SP 800-53
      control: AC-3
    - standard: NIST SP 800-53
      control: AC-17
    - standard: NIST SP 800-53
      control: AC-20
    constraint:
      org_policy_constraint:
        canned_constraint_id: storage.publicAccessPrevention
        policy_rules:
        - enforce: true
    description: This policy prevents access to existing and future resources via the public internet by disabling and blocking access control lists (ACLs) and IAM permissions that grant access to allUsers and allAuthenticatedUsers.
  - policy_id: Bucket IAM not monitored
    compliance_standards:
    - standard: NIST 800-53 R5
      control: AC-12
    - standard: NIST 800-53 R5
      control: AC-2
    - standard: NIST 800-53 R5
      control: AC-7
    constraint:
      securityHealthAnalyticsModule:
        moduleEnablementState: ENABLED
        moduleName: BUCKET_IAM_NOT_MONITORED
    description: This detector logs metric filter and creates alerts for Cloud Storage IAM permission changes. By monitoring changes to Cloud Storage bucket permissions, this detector can help you identify over-privileged users or suspicious activity at early stages.

- policy_set_id: AWS policy set
  description:  Policy set containing AWS built-in Security Health Analytics modules for securing S3 buckets.
  policies:
  - policy_id: S3 bucket replication enabled
    compliance_standards:
    - standard: NIST 800-53 R5
      control: SI-13(5)
    constraint:
      securityHealthAnalyticsModule:
        moduleEnablementState: ENABLED
        moduleName: S3_BUCKET_REPLICATION_ENABLED
    description: This control checks whether an Amazon S3 bucket has cross-region replication enabled. The control fails if the bucket doesn't have cross-region replication enabled or if same-region replication is also enabled.

  - policy_id: S3 bucket logging enabled
    compliance_standards:
    - standard: NIST 800-53 R5
      control: SI-13(5)
    - standard: PCI DSS 3.2.1
      control: 10.3.1
    constraint:
      securityHealthAnalyticsModule:
        moduleEnablementState: ENABLED
        moduleName: S3_BUCKET_LOGGING_ENABLED
    description: AWS S3 Server Access Logging feature records access requests to storage buckets which is useful for security audits. By default, server access logging is not enabled for S3 buckets.

A seguir