Sample Response and JSON Structure

Prev Next

Following is an example of the Policy Resolution JSON response for the “accounts” table. The full table being queried, as accessed by an admin (no restriction on the table) appears:

The resulting access for an employee located in the US, for the “account” table outlined above, will look as follows when the full table is queried, and the policy outlined above is in place:

The restricted columns are displayed as NULL, and only the records with the value LOB=”Sales” are displayed.

Add the policyDataMapping Section to the config.json. For each table on which we want to enforce Access Policies, we need to add the table information to the mapping configuration in the PDP config.json:

Sample Response

{
  tokenValidity: 0,
  response: [
    {
      access: [
        {
          path: 14,
          attributes: {
            tablename: [
              accounts
            ],
            level_access: [
              2
            ],
            classification: [
              public
            ],
            columnname: [
              lob
            ],
            uid: [
              14
            ],
            databasename: [
              testing
            ]
          },
          resourceType: Columns_Denodo,
          actions: [
            {
              action: View
            }
          ]
        },
        {
          path: 7,
          attributes: {
            tablename : [
              accounts
            ],
            level_access: [
              1
            ],
            classification: [
              public
            ],
            columnname : [
              id
            ],
            uid: [
              7
            ],
            databasename : [
              testing
            ]
          },
          resourceType: Columns_Denodo,
          actions: [
            {
              action: View
            }
          ]
        },
        {
          path: 8,
          attributes: {
            tablename : [
              accounts
            ],
            level_access: [
              2
            ],
            classification: [
              public
            ],
            columnname : [
              account_name
            ],
            uid: [
              8
            ],
            databasename: [
              testing
            ]
          },
          resourceType: Columns_Denodo,
          actions: [
            {
              action: View
            }
          ]
        },
        {
          path: 9,
          attributes: {
            tablename : [
              accounts
            ],
            level_access: [
              1
            ],
            classification: [
              public
            ],
            columnname : [
              branch
            ],
            uid: [
              9
            ],
            databasename: [
              testing
            ]
          },
          resourceType: Columns_Denodo,
          actions: [
            {
              action: View
            }
          ]
        }
      ],
      privileges: {
        allowed: [
          {
            resourceType: testing.accounts,
            actions: [
              {
                action: View,
                asset-attributes-filter: {
                  OR: [
                    {
                      OR: [
                        {
                          AND: [
                            {
                              attribute: lob,
                              type: STRING,
                              operator: EQUALS,
                              values: [
                                Sales
                              ],
                              match: any
                            }
                          ]
                        }
                      ]
                    }
                  ]
                }
              }
            ]
          }
        ],
        denied: []
      }
    }
  ]
}

The full table being queried, as accessed by an admin (no restriction on the table):

The resulting access for an employee located in the US, for the “account” table outlined above, will look as follows when the full table is queried, and the policy outlined above is in place:

The restricted columns are displayed as NULL, and only the records with the value LOB=”Sales” are displayed.

Add the policyDataMapping Section to the config.json. For each table on which we want to enforce Access Policies, we need to add the table information to the mapping configuration in the PDP config.json:

JSON Structure


{
   "policyDataMapping":[
      {
         "resourceTypeId":"d98231b9-43e3-4f8d-bea0-e375f0bf803d",
         "mapping":[
            {
               "resourceFullPath":"admin.accounts_private",
               "attributes":[
                  {
                     "attributeName":"account_owner",
                     "resourceAttributeName":"account_owner"
                  },
                  {
                     "attributeName":"account_type",
                     "resourceAttributeName":"acct_type"
                  },
                  {
                     "attributeName":"balance",
                     "resourceAttributeName":"acct_balance"
                  }
               ]
            }
         ]
      }
   ]
}
Attribute Description Notes
resourceTypeId The Asset Template GID (see details below for obtaining the GID) Required
resourceFullPath The full path to the table {database}.{table_name}. this is dependent of the vendor type.

The full path may differ between different vendors/authorizers (e.g. Google BigQuery, Denodo, Trino, etc.).
Required
attributeName The name of the Attribute in the Platform. Optional
resourceAttributeName The name of the actual column in the table. Optional

NOTE: The attributeName and resourceAttributeName are optional in case where there is a full match between the Asset Template Attributes and the physical table column names. So, when specifying just the resourceFullPath the Attributes that are defined in the Asset Template will be used for filtering.

Sample Request

{
  "entityId": "xB724129",
  "clientId": "P5SUL3MHBHBHB5C0VFD9J",
  "clientSecret": "cOtZbPLaHUUHKHKJHKJHgeV02avpkYWvonlG4j",
  "environment": {
    "database": [
      "admin"
    ],
    "table": [
      "accounts_private"
    ],
    "resourceFullPath": [
      "admin.accounts_private"
    ]
  }
}

Sample Response

{
  "tokenValidity": 0,
  "response": [
    {
      "access": [],
      "privileges": {
        "allowed": [
          {
            "resourceType": "admin.accounts_private",
            "actions": [
              {
                "action": "View",
                "asset-attributes-filter": {
                  "OR": [
                    {
                      "OR": [
                        {
                          "AND": [
                            {
                              "attribute": "account_type",
                              "type": "STRING",
                              "operator": "EQUALS",
                              "values": [
                                "basic"
                              ],
                              "match": "any"
                            }
                          ]
                        }
                      ]
                    }
                  ]
                }
              }
            ]
          }
        ],
        "denied": []
      }
    }
  ]
}