PATCH | Atualizar parcialmente a política de acesso por [id]

Prev Next

Descrição

Atualize configurações específicas de uma política de acesso no PAM Core. Apenas os campos enviados no corpo da requisição são alterados — todos os demais mantêm seus valores atuais, inclusive os campos do mesmo namespace. Os próprios namespaces podem ser enviados parcialmente.

Este é o endpoint indicado para alterações pontuais. Para atualizar todas as configurações em uma única requisição, acesse PUT | Atualizar política de acesso por [id], que redefine todo campo não enviado.

Para alterar apenas se a política está ativa, utilize POST | Ativar política de acesso ou POST | Desativar política de acesso. O campo active não pode ser modificado por este endpoint.


Pré-requisitos

Info

Um token de acesso carrega apenas as autorizações que existiam no momento em que foi gerado. Depois que o administrador habilitar a autorização Access Policy (V2), gere um novo token para a aplicação — um token existente não passa a ter a nova autorização.


Requisição

PATCH /api/v2/pam/access-policies/{id}

Parâmetros de caminho

Campo Tipo Obrigatório Descrição
id integer Sim Código de identificação único da política de acesso. Nota: este valor é atribuído pelo Segura® em POST | Criar política de acesso.

Cabeçalhos

Cabeçalho Obrigatório Descrição
Content-Type Sim Deve ser application/merge-patch+json. Difere dos demais endpoints, que utilizam application/json.
If-Match Sim Valor do ETag da versão da política que está sendo atualizada. A requisição é rejeitada com 412 quando o valor não corresponde à versão atual da política.

Corpo da requisição

Envie apenas os namespaces e campos que deseja alterar. O corpo utiliza os mesmos nomes e tipos de campo de POST | Criar política de acesso — acesse esse artigo para consultar as tabelas completas de campos dos namespaces password, session, approvers_config, criteria e access_limitation.

Campos que não podem ser modificados

Campo Motivo
id Atribuído pelo Segura® na criação da política e permanente.
active Controlado por POST | Ativar política de acesso e POST | Desativar política de acesso.

O envio de qualquer um desses campos retorna 422 com o código patch.field.not.allowed.


Exemplo de requisição

PATCH {{url}}/api/v2/pam/access-policies/3001

Cabeçalhos

Content-Type: application/merge-patch+json
If-Match: "v2"

Corpo

{
    "password": {
        "require_approval": false,
        "approvals_required": 0
    }
}

Esta requisição altera dois campos do namespace password. Todos os demais campos de password — e todos os demais namespaces — mantêm seus valores atuais.


Resposta

HTTP/1.1 200 OK
ETag: "v3"

O cabeçalho ETag contém a nova versão da política. Utilize esse valor no cabeçalho If-Match da próxima operação de escrita.

Exemplo de corpo da resposta

A resposta retorna a política de acesso completa, e não apenas os campos alterados.

{
    "data": {
        "id": 3001,
        "access_policy": {
            "name": "PAM Administrators - Updated",
            "active": true,
            "description": "Updated description."
        },
        "password": {
            "allow_view": true,
            "view_mode": "complete",
            "require_reason": true,
            "require_approval": false,
            "approvals_required": 0,
            "disapprovals_to_cancel": 1,
            "approval_in_levels": true,
            "allow_emergency_access": false,
            "allow_change_expiration": true,
            "change_expiration_minutes": 60,
            "require_approval_days": false,
            "approval_days": [],
            "approval_times": [],
            "approval_custom_times": []
        },
        "session": {
            "allow_start": true,
            "block_during_freezing": true,
            "require_reason": true,
            "require_approval": true,
            "approvals_required": 2,
            "disapprovals_to_cancel": 1,
            "approval_in_levels": true,
            "allow_emergency_access": false,
            "require_change_id": true,
            "require_approval_days": false,
            "approval_days": [],
            "approval_times": [],
            "approval_custom_times": []
        },
        "approvers_config": {
            "governance_id_required": true,
            "always_add_user_manager": false
        },
        "criteria": {
            "site_ids": [1, 2],
            "device_type_ids": [3],
            "credential_type_ids": [5],
            "devices": [],
            "products": [],
            "usernames": [],
            "additional_information": [],
            "device_tags": ["prod", "staging"],
            "credential_tags": []
        },
        "access_limitation": {
            "days": ["monday", "tuesday", "wednesday", "thursday", "friday"],
            "times": ["08:00-18:00"],
            "custom_times": [],
            "period_start": null,
            "period_end": null
        }
    },
    "meta": {
        "links": { "self": "/api/v2/pam/access-policies/3001" },
        "actions": {
            "deactivate": "/api/v2/pam/access-policies/3001/deactivate"
        }
    }
}

Campos do corpo da resposta

A resposta retorna a política de acesso completa, com os mesmos campos de GET | Listar uma política de acesso por [id]. Acesse esse artigo para consultar as tabelas completas de campos.

Campo Tipo Descrição
data object A política de acesso atualizada.
data.id integer Código de identificação único da política de acesso.
data.access_policy object Atributos principais da política de acesso.
data.password object Regras de acesso a senhas após a atualização.
data.session object Regras de acesso a sessões após a atualização.
data.approvers_config object Comportamento dos aprovadores após a atualização.
data.criteria object Regras abrangidas pela política após a atualização.
data.access_limitation object Restrições de horário aplicadas à política após a atualização.
meta object Metadados do recurso.
meta.links.self string Caminho da política de acesso.
meta.actions object Ações disponíveis para a política em seu estado atual.

Erros

Código HTTP Mensagem Causa possível Solução
400 api.request.malformed O corpo da requisição não é um JSON válido. Verifique a sintaxe do corpo e reenvie a requisição.
401 api.auth.token.invalid O token de acesso está ausente ou expirou. Solicite um novo token de acesso.
403 api.permission.denied A autorização não tem permissão para atualizar políticas de acesso. Peça ao administrador para verificar a autorização Access Policy (V2) e a Permissão do recurso PAM no A2A e gere um novo token.
404 api.resource.not_found A política de acesso não existe ou está fora do escopo da autorização. Verifique o código de identificação enviado no caminho.
409 api.resource.inactive A requisição tentou escrever em uma política de acesso inativa. Ative a política com POST | Ativar política de acesso antes de atualizá-la.
412 api.precondition.failed O valor de If-Match não corresponde à versão atual da política, o que significa que a política foi alterada depois de ser lida. Obtenha a política novamente com GET | Listar uma política de acesso por [id], revise as alterações e reenvie a requisição com o novo ETag.
422 patch.field.not.allowed O corpo da requisição contém um campo que não pode ser modificado por este endpoint. Remova o campo do corpo. Para alterar o estado de ativação, utilize as ações de ativar e desativar.
422 api.validation.invalid_reference Um site, tipo de dispositivo ou tipo de credencial referenciado não existe. Verifique os códigos de identificação enviados em criteria.
422 api.enum.invalid_value Um campo recebeu um valor fora da lista de valores permitidos. Verifique os valores permitidos para o campo e reenvie a requisição.
429 rate_limit_exceeded O limite de requisições foi excedido. Reduza a frequência de requisições e tente novamente.
500 api.internal.error Erro interno do servidor. Entre em contato com a equipe de suporte da Segura®.

Exemplos de respostas de erro

412 — o ETag não corresponde à versão atual da política:

{
    "error": {
        "code": "api.precondition.failed",
        "message": "ETag does not match."
    }
}

422 — o corpo da requisição contém um campo que não pode ser modificado:

{
    "error": {
        "code": "patch.field.not.allowed",
        "message": "Field 'type' cannot be modified via PATCH."
    }
}

Para mensagens de erros de autenticação e a política de 403 versus 404, acesse API v2 - Convenções e comportamentos compartilhados.