Administración de asignaciones de atributos de seguridad personalizados

Los atributos de seguridad personalizados de Microsoft Entra ID son atributos específicos de la empresa (pares clave-valor) que puede definir y asignar a Microsoft Entra objetos. Estos atributos se pueden usar para almacenar información, clasificar objetos o aplicar un control de acceso específico sobre recursos específicos de Azure mediante el control de acceso basado en atributos de Azure (ABAC de Azure).

Los atributos de seguridad personalizados solo se admiten para usuarios y entidades de servicio. En este artículo se proporcionan ejemplos de cómo asignar, actualizar, enumerar o quitar diferentes tipos de atributos de seguridad personalizados para usuarios y aplicaciones mediante Microsoft Graph.

Requisitos previos

Asignación de atributos de seguridad personalizados

Ejemplo 1: Asignación de un atributo de seguridad personalizado con un valor de cadena a un usuario

En el ejemplo siguiente se muestra cómo usar update user API para asignar un atributo de seguridad personalizado con un valor de cadena a un usuario.

  • Conjunto de atributos: Engineering
  • Atributo: ProjectDate
  • Tipo de datos de atributo: Cadena
  • Valor de atributo: "2022-10-01"

Solicitud

PATCH https://graph.microsoft.com/v1.0/users/{id}
Content-type: application/json

{
    "customSecurityAttributes":
    {
        "Engineering":
        {
            "@odata.type":"#Microsoft.DirectoryServices.CustomSecurityAttributeValue",
            "ProjectDate":"2022-10-01"
        }
    }
}

Respuesta

HTTP/1.1 204 No Content

Ejemplo 2: Asignar un atributo de seguridad personalizado con un valor de cadena a una entidad de servicio

En el ejemplo siguiente se muestra cómo usar update servicePrincipal API para asignar un atributo de seguridad personalizado con un valor de cadena a una entidad de servicio.

  • Conjunto de atributos: Engineering
  • Atributo: ProjectDate
  • Tipo de datos de atributo: Cadena
  • Valor de atributo: "2022-10-01"

Solicitud

PATCH https://graph.microsoft.com/v1.0/servicePrincipals/{id}
Content-type: application/json

{
    "customSecurityAttributes":
    {
        "Engineering":
        {
            "@odata.type":"#Microsoft.DirectoryServices.CustomSecurityAttributeValue",
            "ProjectDate":"2022-10-01"
        }
    }
}

Respuesta

HTTP/1.1 204 No Content

Ejemplo 3: Asignación de un atributo de seguridad personalizado con un valor de cadena múltiple a un usuario

En el ejemplo siguiente se muestra cómo usar update user API para asignar un atributo de seguridad personalizado con un valor de cadena múltiple a un usuario.

  • Conjunto de atributos: Engineering
  • Atributo: Project
  • Tipo de datos de atributo: colección de cadenas
  • Valor de atributo: ["Baker","Cascade"]

Solicitud

PATCH https://graph.microsoft.com/v1.0/users/{id}
Content-type: application/json

{
    "customSecurityAttributes":
    {
        "Engineering":
        {
            "@odata.type":"#Microsoft.DirectoryServices.CustomSecurityAttributeValue",
            "Project@odata.type":"#Collection(String)",
            "Project":["Baker","Cascade"]
        }
    }
}

Respuesta

HTTP/1.1 204 No Content

Ejemplo 4: Asignación de un atributo de seguridad personalizado con un valor entero a un usuario

En el ejemplo siguiente se muestra cómo usar update user API para asignar un atributo de seguridad personalizado con un valor entero a un usuario.

  • Conjunto de atributos: Engineering
  • Atributo: NumVendors
  • Tipo de datos de atributo: Integer
  • Valor de atributo: 4

Solicitud

PATCH https://graph.microsoft.com/v1.0/users/{id}
Content-type: application/json

{
    "customSecurityAttributes":
    {
        "Engineering":
        {
            "@odata.type":"#Microsoft.DirectoryServices.CustomSecurityAttributeValue",
            "NumVendors@odata.type":"#Int32",
            "NumVendors":4
        }
    }
}

Respuesta

HTTP/1.1 204 No Content

Ejemplo 5: Asignación de un atributo de seguridad personalizado con un valor de varios enteros a un usuario

En el ejemplo siguiente se muestra cómo usar update user API para asignar un atributo de seguridad personalizado con un valor de varios enteros a un usuario.

  • Conjunto de atributos: Engineering
  • Atributo: CostCenter
  • Tipo de datos de atributo: colección de enteros
  • Valor de atributo: [1001,1003]

Solicitud

PATCH https://graph.microsoft.com/v1.0/users/{id}
Content-type: application/json

{
    "customSecurityAttributes":
    {
        "Engineering":
        {
            "@odata.type":"#Microsoft.DirectoryServices.CustomSecurityAttributeValue",
            "CostCenter@odata.type":"#Collection(Int32)",
            "CostCenter":[1001,1003]
        }
    }
}

Respuesta

HTTP/1.1 204 No Content

Ejemplo 6: Asignación de un atributo de seguridad personalizado con un valor booleano a un usuario

En el ejemplo siguiente se muestra cómo usar update user API para asignar un atributo de seguridad personalizado con un valor booleano a un usuario.

  • Conjunto de atributos: Engineering
  • Atributo: Certification
  • Tipo de datos de atributo: boolean
  • Valor de atributo: true

Solicitud

PATCH https://graph.microsoft.com/v1.0/users/{id}
Content-type: application/json

{
    "customSecurityAttributes":
    {
        "Engineering":
        {
            "@odata.type":"#Microsoft.DirectoryServices.CustomSecurityAttributeValue",
            "Certification":true
        }
    }
}

Respuesta

HTTP/1.1 204 No Content

Actualización de asignaciones de atributos de seguridad personalizados

Ejemplo 1: Actualización de una asignación de atributo de seguridad personalizada con un valor entero para un usuario

En el ejemplo siguiente se muestra cómo usar update user API para actualizar una asignación de atributos de seguridad personalizada con un valor entero para un usuario.

  • Conjunto de atributos: Engineering
  • Atributo: NumVendors
  • Tipo de datos de atributo: Integer
  • Valor de atributo: 8

Solicitud

PATCH https://graph.microsoft.com/v1.0/users/{id}
Content-type: application/json

{
    "customSecurityAttributes":
    {
        "Engineering":
        {
            "@odata.type":"#Microsoft.DirectoryServices.CustomSecurityAttributeValue",
            "NumVendors@odata.type":"#Int32",
            "NumVendors":8
        }
    }
}

Respuesta

HTTP/1.1 204 No Content

Ejemplo 2: Actualización de una asignación de atributo de seguridad personalizada con un valor booleano para un usuario

En el ejemplo siguiente se muestra cómo usar update user API para actualizar una asignación de atributos de seguridad personalizada con un valor booleano para un usuario.

  • Conjunto de atributos: Engineering
  • Atributo: Certification
  • Tipo de datos de atributo: boolean
  • Valor de atributo: false

Solicitud

PATCH https://graph.microsoft.com/v1.0/users/{id}
Content-type: application/json

{
    "customSecurityAttributes":
    {
        "Engineering":
        {
            "@odata.type":"#Microsoft.DirectoryServices.CustomSecurityAttributeValue",
            "Certification":false
        }
    }
}

Respuesta

HTTP/1.1 204 No Content

Enumeración de asignaciones de atributos de seguridad personalizados

Ejemplo 1: Obtención de las asignaciones de atributos de seguridad personalizados para un usuario

En el ejemplo siguiente se muestra cómo usar la API Get user para obtener las asignaciones de atributos de seguridad personalizadas para un usuario.

Atributo n.º 1

  • Conjunto de atributos: Engineering
  • Atributo: Project
  • Tipo de datos de atributo: colección de cadenas
  • Valor de atributo: ["Baker","Cascade"]

Atributo n.º 2

  • Conjunto de atributos: Engineering
  • Atributo: CostCenter
  • Tipo de datos de atributo: colección de enteros
  • Valor de atributo: [1001]

Atributo n.º 3

  • Conjunto de atributos: Engineering
  • Atributo: Certification
  • Tipo de datos de atributo: boolean
  • Valor de atributo: true

Atributo n.º 4

  • Conjunto de atributos: Marketing
  • Atributo: EmployeeId
  • Tipo de datos de atributo: Cadena
  • Valor de atributo: "QN26904"

Solicitud

GET https://graph.microsoft.com/v1.0/users/{id}?$select=customSecurityAttributes

Respuesta

HTTP/1.1 200 OK

{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users(customSecurityAttributes)/$entity",
    "customSecurityAttributes": {
        "Marketing": {
            "@odata.type": "#microsoft.graph.customSecurityAttributeValue",
            "EmployeeId": "QN26904"
        },
        "Engineering": {
            "@odata.type": "#microsoft.graph.customSecurityAttributeValue",
            "Project@odata.type": "#Collection(String)",
            "Project": [
                "Baker",
                "Cascade"
            ],
            "CostCenter@odata.type": "#Collection(Int32)",
            "CostCenter": [
                1001
            ],
            "Certification": true
        }
    }
}

Si no hay atributos de seguridad personalizados asignados al usuario o si la entidad de seguridad de llamada no tiene acceso, recibirá la siguiente respuesta:

HTTP/1.1 200 OK
Content-type: application/json

{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users(customSecurityAttributes)/$entity",
    "customSecurityAttributes": null
}

Ejemplo 2: Enumeración de todos los usuarios con una asignación de atributo de seguridad personalizada que es igual a un valor

En el ejemplo siguiente se muestra cómo usar list users API para enumerar todos los usuarios con una asignación de atributos de seguridad personalizada que es igual a un valor. En el ejemplo se recuperan los usuarios con un atributo de seguridad personalizado denominado AppCountry con un valor que es Canadaigual a . El valor del filtro distingue mayúsculas de minúsculas. Debe agregar ConsistencyLevel=eventual en la solicitud o el encabezado . También debe incluir $count=true para asegurarse de que la solicitud se enrute correctamente.

Usuario 1

  • Conjunto de atributos: Marketing
  • Atributo: AppCountry
  • Tipo de datos de atributo: colección de cadenas
  • Valor de atributo: ["India","Canada"]

Usuario 2

  • Conjunto de atributos: Marketing
  • Atributo: AppCountry
  • Tipo de datos de atributo: colección de cadenas
  • Valor de atributo: ["Canada","Mexico"]

Solicitud

GET https://graph.microsoft.com/v1.0/users?$count=true&$select=id,displayName,customSecurityAttributes&$filter=customSecurityAttributes/Marketing/AppCountry eq 'Canada'
ConsistencyLevel: eventual

Respuesta

HTTP/1.1 200 OK

{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users(id,displayName,customSecurityAttributes)",
    "@odata.count": 2,
    "value": [
        {
            "id": "dbaf3778-4f81-4ea0-ac1c-502a293c12ac",
            "displayName": "Jiya",
            "customSecurityAttributes": {
                "Engineering": {
                    "@odata.type": "#microsoft.graph.customSecurityAttributeValue",
                    "Datacenter@odata.type": "#Collection(String)",
                    "Datacenter": [
                        "India"
                    ]
                },
                "Marketing": {
                    "@odata.type": "#microsoft.graph.customSecurityAttributeValue",
                    "AppCountry@odata.type": "#Collection(String)",
                    "AppCountry": [
                        "India",
                        "Canada"
                    ],
                    "EmployeeId": "KX19476"
                }
            }
        },
        {
            "id": "6bac433c-48c6-4213-a316-1428de32701b",
            "displayName": "Jana",
            "customSecurityAttributes": {
                "Marketing": {
                    "@odata.type": "#microsoft.graph.customSecurityAttributeValue",
                    "AppCountry@odata.type": "#Collection(String)",
                    "AppCountry": [
                        "Canada",
                        "Mexico"
                    ],
                    "EmployeeId": "GS46982"
                }
            }
        }
    ]
}

Ejemplo 3: Enumeración de todos los usuarios con una asignación de atributos de seguridad personalizada que comienza con un valor

En el ejemplo siguiente se muestra cómo usar list users API para enumerar todos los usuarios con una asignación de atributos de seguridad personalizada que comienza con un valor. En el ejemplo se recuperan los usuarios con un atributo de seguridad personalizado denominado EmployeeId con un valor que comienza por GS. El valor del filtro distingue mayúsculas de minúsculas. Debe agregar ConsistencyLevel=eventual en la solicitud o el encabezado . También debe incluir $count=true para asegurarse de que la solicitud se enrute correctamente.

Usuario 1

  • Conjunto de atributos: Marketing
  • Atributo: EmployeeId
  • Tipo de datos de atributo: Cadena
  • Valor de atributo: "KX19476"

Usuario 2

  • Conjunto de atributos: Marketing
  • Atributo: EmployeeId
  • Tipo de datos de atributo: Cadena
  • Valor de atributo: "GS46982"

Solicitud

GET https://graph.microsoft.com/v1.0/users?$count=true&$select=id,displayName,customSecurityAttributes&$filter=startsWith(customSecurityAttributes/Marketing/EmployeeId,'GS')
ConsistencyLevel: eventual

Respuesta

HTTP/1.1 200 OK

{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users(id,displayName,customSecurityAttributes)",
    "@odata.count": 1,
    "value": [
        {
            "id": "6bac433c-48c6-4213-a316-1428de32701b",
            "displayName": "Jana",
            "customSecurityAttributes": {
                "Marketing": {
                    "@odata.type": "#microsoft.graph.customSecurityAttributeValue",
                    "AppCountry@odata.type": "#Collection(String)",
                    "AppCountry": [
                        "Canada",
                        "Mexico"
                    ],
                    "EmployeeId": "GS46982"
                }
            }
        }
    ]
}

Ejemplo 4: Enumeración de todos los usuarios con una asignación de atributo de seguridad personalizada que no es igual a un valor

En el ejemplo siguiente se muestra cómo usar list users API para enumerar todos los usuarios con una asignación de atributos de seguridad personalizada que no es igual a un valor. En el ejemplo se recuperan los usuarios con un atributo de seguridad personalizado denominado AppCountry con un valor que no es igual Canadaa . El valor del filtro distingue mayúsculas de minúsculas. Debe agregar ConsistencyLevel=eventual en la solicitud o el encabezado . También debe incluir $count=true para asegurarse de que la solicitud se enrute correctamente.

Usuario 1

  • Conjunto de atributos: Marketing
  • Atributo: AppCountry
  • Tipo de datos de atributo: colección de cadenas
  • Valor de atributo: ["France"]

Todos los demás usuarios

  • AppCountry atributo no agregado

Solicitud

GET https://graph.microsoft.com/v1.0/users?$count=true&$select=id,displayName,customSecurityAttributes&$filter=customSecurityAttributes/Marketing/AppCountry ne 'Canada'
ConsistencyLevel: eventual

Respuesta

HTTP/1.1 200 OK

{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users(id,displayName,customSecurityAttributes)",
    "@odata.count": 32,
    "value": [
        {
            "id": "c4f9ecd3-d3c1-4544-b49a-bc9bb62beb67",
            "displayName": "Alain",
            "customSecurityAttributes": null
        },
        {
            "id": "de4f1218-b0fb-4449-b3a0-1e1dd193e6e7",
            "displayName": "Joe",
            "customSecurityAttributes": {
                "Engineering": {
                    "@odata.type": "#microsoft.graph.customSecurityAttributeValue",
                    "Project3@odata.type": "#Collection(String)",
                    "Project3": [
                        "Baker",
                        "Cascade"
                    ],
                    "CostCenter@odata.type": "#Collection(Int32)",
                    "CostCenter": [
                        1001
                    ],
                    "Certification": true
                },
                "Marketing": {
                    "@odata.type": "#microsoft.graph.customSecurityAttributeValue",
                    "EmployeeId": "QN26904"
                }
            }
        },
        {
            "id": "f24d1474-ded5-432d-be08-8abd39921aac",
            "displayName": "Isabella",
            "customSecurityAttributes": {
                "Marketing": {
                    "@odata.type": "#microsoft.graph.customSecurityAttributeValue",
                    "AppCountry@odata.type": "#Collection(String)",
                    "AppCountry": [
                        "France"
                    ]
                }
            }
        },
        {
            "id": "849e81fe-1109-4d57-9536-a25d537eec1f",
            "displayName": "Dara",
            "customSecurityAttributes": {
                "Engineering": {
                    "@odata.type": "#microsoft.graph.customSecurityAttributeValue",
                    "ProjectDate": "2023-04-12"
                }
            }
        },
        {
            "id": "42c88239-db99-45f0-85af-cbb6c8acb2a3",
            "displayName": "Chandra",
            "customSecurityAttributes": null
        }
    ]
}

Eliminación de asignaciones de atributos de seguridad personalizados

Ejemplo 1: Eliminación de una asignación de atributos de seguridad personalizado de un solo valor de un usuario

En el ejemplo siguiente se muestra cómo usar update user API para quitar una asignación de atributos de seguridad personalizada que admite un único valor de un usuario.

  • Conjunto de atributos: Engineering
  • Atributo: ProjectDate
  • Valor de atributo: null

Solicitud

PATCH https://graph.microsoft.com/v1.0/users/{id}
Content-type: application/json

{
    "customSecurityAttributes":
    {
        "Engineering":
        {
            "@odata.type":"#Microsoft.DirectoryServices.CustomSecurityAttributeValue",
            "ProjectDate":null
        }
    }
}

Respuesta

HTTP/1.1 204 No Content

Ejemplo 2: Quitar una asignación de atributos de seguridad personalizados de varios valores de un usuario

En el ejemplo siguiente se muestra cómo usar update user API para quitar una asignación de atributos de seguridad personalizada que admite varios valores de un usuario.

  • Conjunto de atributos: Engineering
  • Atributo: Project
  • Valor de atributo: []

Solicitud

PATCH https://graph.microsoft.com/v1.0/users/{id}
Content-type: application/json

{
    "customSecurityAttributes":
    {
        "Engineering":
        {
            "@odata.type":"#Microsoft.DirectoryServices.CustomSecurityAttributeValue",
            "Project":[]
        }
    }
}

Respuesta

HTTP/1.1 204 No Content

Paso siguiente