Coletar registros de auditoria do Azure DevOps

Versão do analisador: 3.0

Compatível com:

Esse analisador processa registros de auditoria do Azure DevOps no formato JSON. Ele extrai campos de estruturas JSON aninhadas e de nível superior, mapeando-os para o UDM. A lógica condicional baseada em valores de campo específicos categoriza os eventos e enriquece a saída com informações de segurança relevantes. O analisador também lida com mensagens que não estão no formato JSON, tentando extrair um payload JSON usando padrões grok.

Antes de começar

Verifique se você atende aos seguintes pré-requisitos:

  • Instância do Google SecOps
  • Uma organização ativa do Azure DevOps
  • Acesso privilegiado à organização do Azure DevOps e ao Azure

Configurar feeds

Há dois pontos de entrada diferentes para configurar feeds na plataforma do Google SecOps:

  • Configurações > Gerenciamento de dados > Feeds > Adicionar novo feed (na plataforma somente SIEM, Configurações > Feeds > Adicionar novo feed)
  • Hub de conteúdo > Pacotes de conteúdo > Comece já

Como configurar o feed de auditoria do Azure DevOps

  1. Clique no pacote Azure Platform.
  2. Localize o tipo de registro Auditoria do Azure DevOps e clique em Adicionar novo feed.
  3. Especifique valores para os seguintes campos:

    • Tipo de origem: Armazenamento de Blobs do Microsoft Azure V2.
    • URI do Azure: o URL do endpoint do blob.
      • ENDPOINT_URL/BLOB_NAME
        • Substitua:
          • ENDPOINT_URL: o URL do endpoint do blob (https://<storageaccountname>.blob.core.windows.net)
          • BLOB_NAME: o nome do blob (como insights-logs-<logname>)
    • Opções de exclusão da origem: selecione a opção de exclusão de acordo com suas preferências de ingestão.

    • Idade máxima do arquivo: inclui arquivos modificados nos últimos dias. O padrão é 180 dias.

    • Chave compartilhada: a chave compartilhada (uma string aleatória de 512 bits na codificação base-64) usada para acessar os recursos do Azure.

    Opções avançadas

    • Nome do feed: um valor predefinido que identifica o feed.
    • Namespace do recurso: o namespace do recurso.
    • Rótulos de ingestão: o rótulo aplicado aos eventos desse feed.
  4. Clique em Criar feed.

Para mais informações sobre como configurar vários feeds para diferentes tipos de registro nessa família de produtos, consulte Configurar feeds por produto.

Criar uma chave de API para o feed de webhook

  1. Acesse o console doGoogle Cloud > Credenciais.

    Ir para Credenciais

  2. Clique em Criar credenciais e, em seguida, selecione Chave de API.

  3. Restrinja o acesso da chave de API à API Google Security Operations.

Especificar o URL do endpoint

  1. No aplicativo cliente, especifique o URL do endpoint HTTPS fornecido no feed do webhook.
  2. Ative a autenticação especificando a chave de API e a chave secreta como parte do cabeçalho personalizado no seguinte formato:

    X-goog-api-key = API_KEY
    X-Webhook-Access-Key = SECRET
    

    Recomendação: especifique a chave de API como um cabeçalho em vez de especificá-la no URL. Se o cliente do webhook não for compatível com cabeçalhos personalizados, especifique a chave de API e a chave secreta usando parâmetros de consulta no seguinte formato:

    ENDPOINT_URL?key=API_KEY&secret=SECRET
    

Substitua:

  • ENDPOINT_URL: o URL do endpoint do feed.
  • API_KEY: a chave de API para autenticação no Google Security Operations.
  • SECRET: a chave secreta que você gerou para autenticar o feed.

Configurar o recurso de auditoria no Azure DevOps

  1. Faça login na sua organização (https://dev.azure.com/{yourorganization}).
  2. Selecione o ícone de engrenagem para Configurações da organização.
  3. Selecione Políticas em Segurança.
  4. Ative o botão Registrar eventos de auditoria.

Configurar um tópico da Grade de Eventos no Azure

  1. Faça login no portal do Azure.
  2. Pesquise e acesse a Grade de Eventos.
  3. Localize Temas em Eventos personalizados.
  4. Clique em + Criar.
  5. Selecione sua Assinatura e seu Grupo de recursos. Dê um nome (por exemplo, DevopsAuditLog) e selecione a região. Clique em Revisar e criar.
  6. Acesse o novo Tópico e copie o URL do endpoint do tópico.
  7. Acesse Configurações > Chaves de acesso e copie a Chave 1.

Configurar o fluxo de registros do Azure DevOps para a Grade de Eventos

  1. Faça login na sua organização (https://dev.azure.com/{yourorganization}).
  2. Selecione o ícone de engrenagem para Configurações da organização.
  3. Selecione Auditoria.
  4. Acesse a guia Streams e selecione New stream > Event Grid.
  5. Insira o endpoint do tópico e a chave de acesso criados em Configurar um tópico da Grade de Eventos no Azure.

Configurar um webhook no Azure DevOps para o Google SecOps

  1. No portal do Azure, pesquise e acesse Event Grid.
  2. Selecione o Tópico criado anteriormente.
  3. Acesse Entidades > Inscrição em eventos.
  4. Clique em + Event Subscription.
  5. Dê um nome descritivo (por exemplo, *Google SecOps Integration).
  6. Selecione Webhook e clique em Configurar um endpoint.
  7. Configure o endpoint:
    1. Endpoint do assinante: insira o URL do endpoint de API do Google SecOps.
    2. Na seção Cabeçalhos HTTP, adicione os seguintes cabeçalhos:
    3. Defina o cabeçalho Content-Type como application/json.
  8. Clique em Criar.

Exemplos de registros de auditoria do Azure DevOps compatíveis

  • JSON de auditoria padrão

    {
      "ActivityId": "aeec0738-ebbf-4e62-9a44-83dd7b704e75",
      "ActorCUID": "e0729319-5632-78c1-9625-b53fe559bcd7",
      "ActorDisplayName": "User Name",
      "ActorUPN": "user@example.com",
      "ActorUserId": "e0729319-5632-68c1-9625-b53fe559bcd7",
      "Area": "Group",
      "AuthenticationMechanism": "SessionToken_Unscoped authorizationId: f5729c3d-951b-4a52-88d9-a",
      "Category": "Modify",
      "CategoryDisplayName": "Modify",
      "CorrelationId": "a26a652e-1596-4c83-bb0f-946ff3ccc91c",
      "Data": {
        "CallerProcedure": "prc_UpdateGroupMembership",
        "EventAuthor": "b33f1e32-f5e3-4210-9fde-6e61f7a761b3",
        "Idempotent": "True",
        "Incremental": "True",
        "InsertInactiveUpdates": "False",
        "ScopeId": "1b713128-b6f0-4fd7-91af-94ed1f69c464",
        "Updates": [
          {
            "GroupId": "BE656E6C-7C01-47DB-BC03-CD7E82610AFE",
            "MemberId": "9D4E1A54-8B4C-42E2-BECC-94BEDC6E2F4B",
            "Active": true
          }
        ],
        "GroupId": "be656e6c-7c01-47db-bc03-cd7e82610afe",
        "GroupName": "[Project_Alpha]\\Project Administrators",
        "MemberId": "9d4e1a54-8b4c-42e2-becc-94bedc6e2f4b",
        "MemberDisplayName": "Member Name"
      },
      "Details": "Member Name was added as a member of group [Project_Alpha]\\Project Administrators",
      "Id": "0b11aadb-0bcc-47ef-9038-b091140dcbe5",
      "IpAddress": "192.168.1.10",
      "OperationName": "Group.UpdateGroupMembership.Add",
      "ProjectId": "00000000-0000-0000-0000-000000000000",
      "ScopeDisplayName": "Organization_X",
      "ScopeId": "1b713128-b6f0-4fd7-91af-94ed1f69c464",
      "ScopeType": "Enterprise",
      "SourceSystem": "Azure",
      "TenantId": "5ca654a4-807f-4676-9c9f-0b7335cea18e",
      "TimeGenerated": "2022-06-20T00:43:35.7370000Z",
      "Type": "AzureDevOpsAuditing",
      "UserAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36",
      "_Internal_WorkspaceResourceId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/rg-event-grid/providers/microsoft.operationalinsights/workspaces/logging-workspace"
    }
    
  • JSON encapsulado da Grade de Eventos

    {
      "id": "9362f75d-b450-47e0-a54b-4fd51d08798e",
      "subject": "AzureDevOps/Auditing",
      "data": {
        "Id": "9362f75d-b450-47e0-a54b-4fd51d08798e",
        "CorrelationId": "848f8abd-9f91-479e-857b-454efa0bf393",
        "ActivityId": "0b7078f1-87bb-441d-8dcc-780c6d0a0511",
        "ActorCUID": "00000000-0000-0000-0000-000000000000",
        "ActorUserId": "0000000d-0000-8888-8000-000000000000",
        "ActorClientId": "00000000-0000-0000-0000-000000000000",
        "ActorUPN": "Azure DevOps Service",
        "Timestamp": "2023-08-03T23:34:31.037Z",
        "ScopeType": 4,
        "ScopeDisplayName": "Organization_X",
        "ScopeId": "1bf2d4d0-3f60-4f08-b217-ce48cebc6816",
        "ProjectId": "b87f0d76-bb83-4274-a865-5ebdc6fe0500",
        "ProjectName": "IT_Project",
        "UserAgent": "TFS JobAgent(TfsJobAgent.exe, 19.224.33927.8)",
        "ActionId": "Release.DeploymentCompleted",
        "Data": {
          "CallerProcedure": "Release.prc_OnDeploymentCompleted",
          "DeploymentResult": "Succeeded",
          "PipelineId": "18",
          "PipelineName": "digital-client-app-dvlp",
          "ReleaseName": "23.07.38",
          "RequesterId": "0000000D-0000-8888-8000-000000000000",
          "StageName": "Build browser"
        },
        "Details": "Deployment of release \"23.07.38\" on pipeline \"digital-client-app-dvlp\" to \"Build browser\" in Project IT_Project was Succeeded",
        "Area": "Release",
        "Category": 5,
        "CategoryDisplayName": "Execute",
        "ActorDisplayName": "Azure DevOps Service"
      },
      "eventType": "AzureDevOpsAuditEvent",
      "dataVersion": "1.0",
      "metadataVersion": "1",
      "eventTime": "2023-08-03T23:34:31.037Z",
      "topic": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg-prod/providers/Microsoft.EventGrid/topics/audit-topic"
    }
    
  • Matriz JSON da Grade de Eventos

    [
      {
        "id": "14b02dab-67eb-4d9d-acd2-4487aac05b14",
        "subject": "AzureDevOps/Auditing",
        "data": {
          "Id": "14b02dab-67eb-4d9d-acd2-4487aac05b14",
          "CorrelationId": "e0475568-bd77-484b-b065-5170561f0bf5",
          "ActivityId": "a2a70439-18dd-4bbb-be20-2844600feaca",
          "ActorCUID": "712594c0-94c1-779b-af6c-80752141078d",
          "ActorUserId": "712594c0-94c1-679b-af6c-80752141078d",
          "ActorClientId": "00000000-0000-0000-0000-000000000000",
          "ActorUPN": "user@example.com",
          "AuthenticationMechanism": "Basic_AAD",
          "Timestamp": "2023-12-20T18:33:21.9375261Z",
          "ScopeType": 4,
          "ScopeDisplayName": "Organization_X",
          "ScopeId": "021edafa-0760-4e1d-ba33-00b910e811e9",
          "ProjectId": "00000000-0000-0000-0000-000000000000",
          "IpAddress": "10.0.0.50",
          "UserAgent": "python/3.11.5 (Windows-10-10.0.19045-SP0) msrest/0.7.1 azure-devops/5.1.0b4 devOpsCli/0.25.0",
          "ActionId": "Security.ModifyPermission",
          "Data": {
            "NamespaceId": "b7e84409-6553-448a-bbb2-af228e07cbeb",
            "NamespaceName": "Library",
            "Token": "Library/Collection/VariableGroup/4693",
            "Permissions": [
              {
                "baseEntry": {
                  "descriptor": "Microsoft.TeamFoundation.Identity;S-1-9-1551374245...",
                  "allow": 19,
                  "deny": 0,
                  "isEmpty": false
                },
                "inheritedAllow": 0,
                "inheritedDeny": 0,
                "effectiveAllow": 0,
                "effectiveDeny": 0,
                "includesExtendedInfo": false,
                "descriptor": "Microsoft.TeamFoundation.Identity;S-1-9-1551374245...",
                "allow": 19,
                "deny": 0,
                "isEmpty": false
              }
            ],
            "EventSummary": [
              {
                "PermissionNames": "View library item",
                "Change": "allow",
                "SubjectDescriptor": "Microsoft.TeamFoundation.Identity;S-1-9-1551374245...",
                "SubjectDisplayName": "[Team_Project]\\Project Administrators"
              }
            ],
            "EventSummaryType": "ChangedPermission",
            "SubjectDisplayName": "[Team_Project]\\Project Administrators"
          },
          "Details": "3 permissions were modified for [Team_Project]\\Project Administrators",
          "Area": "Permissions",
          "Category": 1,
          "CategoryDisplayName": "Modify",
          "ActorDisplayName": "User Name"
        },
        "eventType": "AzureDevOpsAuditEvent",
        "dataVersion": "1.0",
        "metadataVersion": "1",
        "eventTime": "2023-12-20T18:33:21.9375261Z",
        "topic": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg-prod/providers/Microsoft.EventGrid/topics/audit-topic"
      }
    ]
    

Tabela de mapeamento de UDM

Campo de registro Mapeamento de UDM Lógica
ActivityId metadata.product_log_id Mapeado diretamente do campo Id no registro bruto quando o campo records não está presente ou do campo ActivityId no objeto data quando records está presente.
ActionId metadata.product_event_type Mapeado diretamente do campo ActionId no objeto data.
ActorCUID additional.fields Incluído como um campo extra com a chave "Actor CUID".
ActorDisplayName principal.user.user_display_name Mapeado diretamente do campo ActorDisplayName se não for "Azure DevOps Service". Se for "Azure DevOps Service", ele será adicionado como um rótulo a principal.resource.attribute.labels.
ActorUPN principal.user.email_addresses Mapeado diretamente do campo ActorUPN se ele corresponder a um padrão de endereço de e-mail.
ActorUserId principal.user.userid Mapeado diretamente do campo ActorUserId.
Area target.application Usado para criar o campo target.application adicionando "DevOps " ao valor Area.
AuthenticationMechanism extensions.auth.auth_details, security_result.rule_id Analisado para extrair detalhes de autenticação e o ID da regra. Os detalhes de autenticação são mapeados para extensions.auth.auth_details. O ID da regra extraída é mapeado para security_result.rule_id.
CategoryDisplayName security_result.action_details Mapeado diretamente para security_result.action_details.
City principal.location.city Mapeado diretamente do campo City.
Conditions additional.fields Adicionado como um campo extra com a chave "Condições".
Country principal.location.country_or_region Mapeado diretamente do campo Country.
Data.* Vários Os campos no objeto Data são mapeados para diferentes campos do UDM com base nos nomes e no contexto. Confira abaixo alguns exemplos específicos.
Data.AccessLevel target.resource.attribute.labels Adicionado como um rótulo com a chave "AccessLevel".
Data.AgentId target.resource.product_object_id Mapeado para target.resource.product_object_id se PipelineId e AuthorizationId não estiverem presentes.
Data.AgentName target.resource.name Mapeado para target.resource.name se PipelineName, NamespaceName e DisplayName não estiverem presentes.
Data.AuthorizationId target.resource.product_object_id Mapeado para target.resource.product_object_id se PipelineId não estiver presente.
Data.CallerProcedure additional.fields Adicionado como um campo extra com a chave "CallerProcedure".
Data.CheckSuiteId additional.fields Adicionado como um campo extra com a chave "CheckSuiteId".
Data.CheckSuiteStatus additional.fields Adicionado como um campo extra com a chave "CheckSuiteStatus".
Data.ConnectionId additional.fields Adicionado como um campo extra com a chave "ConnectionId".
Data.ConnectionName additional.fields Adicionado como um campo extra com a chave "ConnectionName".
Data.ConnectionType additional.fields Adicionado como um campo extra com a chave "ConnectionType".
Data.DefinitionId additional.fields Adicionado como um campo extra com a chave "DefinitionId".
Data.DeploymentResult additional.fields Adicionado como um campo extra com a chave "DeploymentResult".
Data.DisplayName target.resource.name Mapeado para target.resource.name se PipelineName e NamespaceName não estiverem presentes.
Data.EndpointIdList additional.fields Adicionado como um campo extra com a chave "EndpointIdList".
Data.EnvironmentName additional.fields Adicionado como um campo extra com a chave "EnvironmentName".
Data.Filter.continuationToken target.resource.attribute.labels Adicionado como um rótulo com a chave "continuation_token".
Data.Filter.endTime target.resource.attribute.labels Adicionado como um rótulo com a chave "filter_end_time".
Data.Filter.startTime target.resource.attribute.labels Adicionado como um rótulo com a chave "filter_start_time".
Data.FinishTime additional.fields Adicionado como um campo extra com a chave "FinishTime".
Data.GroupId target.group.product_object_id Mapeado diretamente para target.group.product_object_id quando Data.Updates.0.GroupId não está presente.
Data.GroupName target.group.group_display_name Mapeado diretamente para target.group.group_display_name.
Data.JobName additional.fields Adicionado como um campo extra com a chave "JobName".
Data.MemberId target.user.userid Mapeado diretamente para target.user.userid quando Data.Updates.0.MemberId não está presente.
Data.MemberDisplayName target.user.user_display_name Mapeado diretamente para target.user.user_display_name.
Data.NamespaceId target.resource.product_object_id Mapeado para target.resource.product_object_id se PipelineId, AuthorizationId e AgentId não estiverem presentes.
Data.NamespaceName target.resource.name Mapeado para target.resource.name se PipelineName não estiver presente.
Data.ownerDetails additional.fields Adicionado como um campo extra com a chave "OwnerDetails".
Data.OwnerId additional.fields Adicionado como um campo extra com a chave "OwnerId".
Data.PipelineId target.resource.product_object_id Mapeado diretamente para target.resource.product_object_id.
Data.PipelineName target.resource.name Mapeado diretamente para target.resource.name.
Data.PipelineRevision target.resource.attribute.labels Adicionado como um rótulo com a chave "PipelineRevision".
Data.PipelineScope target.resource.attribute.labels Adicionado como um rótulo com a chave "PipelineScope".
Data.PlanType additional.fields Adicionado como um campo extra com a chave "PlanType".
Data.PreviousAccessLevel target.resource.attribute.labels Adicionado como um rótulo com a chave "PreviousAccessLevel".
Data.PublisherName target.resource.attribute.labels Adicionado como um rótulo com a chave "PublisherName".
Data.Reason additional.fields Adicionado como um campo extra com a chave "Reason".
Data.ReleaseId additional.fields Adicionado como um campo extra com a chave "ReleaseId".
Data.ReleaseName additional.fields Adicionado como um campo extra com a chave "ReleaseName".
Data.RequesterId additional.fields Adicionado como um campo extra com a chave "RequesterId".
Data.RetentionLeaseId additional.fields Adicionado como um campo extra com a chave "RetentionLeaseId".
Data.RetentionOwnerId additional.fields Adicionado como um campo extra com a chave "RetentionOwnerId".
Data.RunName additional.fields Adicionado como um campo extra com a chave "RunName".
Data.Scopes target.resource.attribute.labels Adicionado como rótulos com a chave "Escopo".
Data.StageName additional.fields Adicionado como um campo extra com a chave "StageName".
Data.StartTime additional.fields Adicionado como um campo extra com a chave "StartTime".
Data.TargetUser target.user.userid Mapeado diretamente para target.user.userid.
Data.Timestamp metadata.event_timestamp Analisado e mapeado para metadata.event_timestamp.
Data.TokenType target.resource.attribute.labels Adicionado como um rótulo com a chave "TokenType".
Data.Updates.0.GroupId target.group.product_object_id Mapeado diretamente para target.group.product_object_id.
Data.Updates.0.MemberId target.user.userid Mapeado diretamente para target.user.userid.
Data.ValidFrom target.resource.attribute.labels Adicionado como um rótulo com a chave "ValidFrom".
Data.ValidTo target.resource.attribute.labels Adicionado como um rótulo com a chave "ValidTo".
DewPoint additional.fields Adicionado como um campo extra com a chave "DewPoint".
Details metadata.description Mapeado diretamente para metadata.description.
Humidity additional.fields Adicionado como um campo extra com a chave "Humidity".
Icon additional.fields Adicionado como um campo extra com a chave "Ícone".
Id metadata.product_log_id Mapeado diretamente para metadata.product_log_id.
IpAddress principal.ip Mapeado diretamente para principal.ip.
MoonPhase additional.fields Adicionado como um campo extra com a chave "MoonPhase".
Moonrise additional.fields Adicionado como um campo extra com a chave "Moonrise".
Moonset additional.fields Adicionado como um campo extra com a chave "Moonset".
OperationName metadata.product_event_type Mapeado diretamente para metadata.product_event_type.
Precipitation additional.fields Adicionado como um campo extra com a chave "Precipitation".
Pressure additional.fields Adicionado como um campo extra com a chave "Pressure".
ProjectId target.resource_ancestors.product_object_id Usado para preencher o campo product_object_id em target.resource_ancestors quando o ancestral é do tipo CLOUD_PROJECT.
ProjectName target.resource_ancestors.name, target.resource.attribute.labels Usado para preencher o campo name em target.resource_ancestors quando o ancestral é do tipo CLOUD_PROJECT. Também adicionado como um rótulo a target.resource.attribute.labels com a chave "ProjectName".
RoleLocation target.location.name Mapeado diretamente para target.location.name.
ScopeDisplayName target.resource_ancestors.name Usado para preencher o campo name em target.resource_ancestors quando o ancestral é do tipo CLOUD_ORGANIZATION.
ScopeId target.resource_ancestors.product_object_id Usado para preencher o campo product_object_id em target.resource_ancestors quando o ancestral é do tipo CLOUD_ORGANIZATION.
ScopeType additional.fields Adicionado como um campo extra com a chave "ScopeType".
Sunrise additional.fields Adicionado como um campo extra com a chave "Sunrise".
Sunset additional.fields Adicionado como um campo extra com a chave "Sunset".
Temperature additional.fields Adicionado como um campo extra com a chave "Temperature".
TenantId metadata.product_deployment_id, additional.fields Mapeado diretamente para metadata.product_deployment_id. Também adicionado como um campo extra com a chave "TenantId".
TimeGenerated metadata.event_timestamp Analisado e mapeado para metadata.event_timestamp.
UserAgent network.http.user_agent, network.http.parsed_user_agent Mapeado diretamente para network.http.user_agent. Também analisado e mapeado para network.http.parsed_user_agent.
UVIndex additional.fields Adicionado como um campo extra com a chave "UVIndex".
Visibility additional.fields Adicionado como um campo extra com a chave "Visibility".
WindDirection additional.fields Adicionado como um campo extra com a chave "WindDirection".
WindSpeed additional.fields Adicionado como um campo extra com a chave "WindSpeed".
_Internal_WorkspaceResourceId additional.fields Adicionado como um campo extra com a chave "workspace_resource_id".
N/A metadata.event_type Determinado pela lógica com base no OperationName e em outros campos. O padrão será "GENERIC_EVENT" se nenhum tipo de evento específico for correspondente. Os valores possíveis incluem "STATUS_SHUTDOWN", "RESOURCE_CREATION", "STATUS_UPDATE", "USER_RESOURCE_DELETION", "RESOURCE_READ", "RESOURCE_WRITTEN", "RESOURCE_DELETION" e "GROUP_MODIFICATION".
N/A metadata.vendor_name Defina como "Microsoft".
N/A metadata.product_name Defina como "Azure DevOps".
N/A metadata.log_type Defina como "AZURE_DEVOPS".
N/A principal.user.account_type Defina como "SERVICE_ACCOUNT_TYPE" se AuthenticationMechanism contiver "ServicePrincipal". Caso contrário, defina como "CLOUD_ACCOUNT_TYPE".
N/A target.asset.attribute.cloud.environment Defina como MICROSOFT_AZURE.
N/A security_result.action Defina como "ALLOW" para operações bem-sucedidas (Succeeded, Created, Modified, executed, updated, removed) e "BLOCK" para operações com falha (Failed, TimedOut).
N/A extensions.auth.mechanism Defina como "USERNAME_PASSWORD" se summary for "UserAuthToken".
N/A target.resource.resource_type Defina como "SETTING" se pipeline_id estiver presente, "CREDENTIAL" se authorization_id estiver presente, "DEVICE" se agent_id estiver presente ou "DATABASE" se namespace_id estiver presente. Caso contrário, ele será definido como "STORAGE_BUCKET" em alguns casos com base em operationName.
N/A target.resource.resource_subtype Defina como "Pipeline" se pipeline_id estiver presente, "Token" se authorization_id estiver presente, "Agent" se agent_id estiver presente ou "Namespace" se namespace_id estiver presente.

Registro de alterações

Confira o registro de alterações deste analisador

Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.