conceder acesso

Uso

access_grant: access_grant_name {
user_attribute: user_attribute_name
allowed_values: [ "value_1", "value_2" , ... ]
}
Hierarquia
access_grant
Valor padrão
Nenhuma

Aceita
O nome de um atributo do usuário com o subparâmetro user_attribute e uma lista de valores do atributo do usuário com o subparâmetro allowed_values

Definição

Uma concessão de acesso é uma estrutura LookML que controla o acesso a outras estruturas LookML, especificamente Explorars, mesclagens, visualizações e campos. O parâmetro access_grant define uma concessão de acesso.

O access_grant usa o nome de um atributo de usuário com o subparâmetro user_attribute e uma lista de valores aceitáveis para o atributo do usuário com o subparâmetro allowed_values. Somente os usuários com um dos valores permitidos no atributo especificado podem acessar estruturas em que a concessão de acesso é obrigatória.

Depois de definido, é possível usar o parâmetro required_access_grants nos níveis Explorar, Participar, Vista ou Campo para exigir a concessão de acesso a essas estruturas.

Por exemplo, o LookML abaixo cria uma concessão de acesso chamada can_view_financial_data, que é baseada no atributo do usuário department. Somente os usuários com os valores "finance" ou "executive" atribuídos no atributo department têm acesso à concessão de acesso can_view_financial_data:

access_grant: can_view_financial_data {
  user_attribute: department
  allowed_values: [ "finance", "executive" ]
}

Em seguida, associe a concessão de acesso can_view_financial_data a uma estrutura LookML usando o parâmetro required_access_grants:

dimension: financial_data_field
  ...
  required_access_grants: [can_view_financial_data]
}

No exemplo acima, somente os usuários com o valor adequado do atributo de usuário para a concessão de acesso can_view_financial_data verão a dimensão financial_data_field.

É possível definir várias concessões de acesso em um modelo e atribuir várias permissões de acesso a uma estrutura LookML com o parâmetro required_access_grants. Nesse caso, o usuário precisa ter acesso a todas as concessões de acesso especificadas para ter acesso à estrutura do LookML.

Por exemplo, o LookML abaixo define duas concessões de acesso diferentes:

access_grant: can_view_financial_data {
  user_attribute: department
  allowed_values: [ "finance", "executive" ]
}

access_grant: can_view_payroll_data {
  user_attribute: view_payroll
  allowed_values: [ "yes" ]
}

Em seguida, no arquivo de visualização abaixo, o parâmetro required_access_grants especifica as duas concessões de acesso:

view: payroll {
  ...
  required_access_grants: [can_view_financial_data, can_view_payroll_data]
}

Nesse caso, apenas os usuários que têm o valor "finance" ou o valor "executive" atribuído ao atributo de usuário department e têm o valor "yes" atribuído ao atributo de usuário view_payroll podem acessar a visualização.

Examples

Defina uma concessão de acesso que exige que os usuários tenham o valor "product_management" ou o valor "engineering" no atributo de usuário department para ter acesso à concessão de acesso engineering:

access_grant: engineering {
  user_attribute: department
  allowed_values: [ "product_management", "engineering" ]
}

Também é possível definir concessões de acesso com atributos de usuário que coletam dados numéricos ou de data/hora. Para fazer isso, coloque os valores permitidos entre aspas duplas, da mesma forma que faria com uma string. Por exemplo, a concessão de acesso a seguir faz referência ao atributo de usuário id, que tem um tipo de dados de número. Somente usuários com o valor id de 1, 2, 3, 4 ou 5 terão acesso:

access_grant: user_id {
  user_attribute: id
  allowed_values: ["1", "2", "3", "4", "5"]
}

O exemplo a seguir faz referência ao atributo de usuário start_date, que tem o tipo de dados Date/Time. Somente usuários que tiverem o valor 2020-01-01 no atributo de usuário terão acesso a:

access_grant: start_date {
  user_attribute: start_date
  allowed_values: ["2020-01-01"]
}

Considerações

Os atributos de usuário editáveis pelos usuários não são permitidos com concessões de acesso

As concessões de acesso não podem aceitar atributos de usuário que tenham um nível Acesso de usuário Editar. Os usuários podem ver e editar os valores dos atributos do usuário que têm um nível de acesso de usuário definido como Editar na página da conta. Por motivos de segurança, apenas atributos do usuário com um nível de Acesso de usuário definido como Nenhum ou Visualização são permitidos com access_grant.

Os valores listados em allowed_values precisam corresponder exatamente aos valores de atributos do usuário

O access_grant funciona com atributos do usuário que têm os tipos de dados Filtro de string (avançado), Filtro de número (avançado) ou Data/hora (avançado). No entanto, para conceder acesso, os valores listados no parâmetro allowed_values precisam corresponder exatamente ao atributo do usuário.

Por exemplo, se você criou um atributo de usuário chamado numeric_range com o tipo de dados Filtro de número (avançado), pode usar uma expressão de filtro do Looker para inserir um intervalo de números, como [1, 20]. Nesse exemplo, a expressão de filtro do Looker no atributo do usuário retornará um intervalo de números entre 1 e 20. No entanto, como access_grant exige uma correspondência exata, o uso do parâmetro allowed_values: ["10"] não concederia acesso. Para conceder acesso, você precisa usar allowed_values: ["[1, 20]"].

Isso também vale para atributos do usuário que têm vários valores. Por exemplo, um atributo de usuário com o tipo de dados Filtro de número (avançado), considerando o valor 1, 3, 5, corresponderia apenas a uma concessão de acesso com o parâmetro allowed_values: ["1, 3, 5"]. Da mesma forma, uma concessão de acesso com o parâmetro allowed_values: ["1"] não concederia acesso ao usuário com múltiplos valores no atributo do usuário. Também não concederia acesso com o parâmetro allowed_values: ["1", "3", "5"] a esse usuário, porque, embora o parâmetro allowed_values: [] possa aceitar vários valores, nenhum dos três valores no parâmetro allowed_values: ["1", "3", "5"] corresponde exatamente ao valor de atributo de usuário 1, 3, 5. Nesse caso, um usuário com um valor de atributo do usuário 1, 3 ou 5 teria acesso, já que cada um desses valores corresponde a uma das opções no parâmetro allowed_values: ["1", "3", "5"].

Da mesma forma, access_grant exige uma correspondência exata com atributos do usuário do tipo de dados Filtro de string (avançado). Ao contrário das expressões de filtro comuns do Looker, o uso do parâmetro allowed_values: [ "Ca%" ] não não corresponde a um atributo de usuário com os valores Canada ou California. Somente um valor de atributo do usuário de exatamente Ca% seria correspondido e concedido acesso.

Os usuários que não recebem acesso têm um comportamento diferente dependendo da estrutura do LookML

Um usuário que não tem acesso a uma concessão de acesso terá um comportamento diferente dependendo da estrutura do LookML que ele está tentando acessar. Consulte as páginas de documentação de required_access_grants nos níveis Explorar, Participar, Visualização ou Campo para ver informações sobre como o acesso a essas estruturas é restrito.

Concessões de acesso em vários níveis são adicionadas

Se você aninhar permissões de acesso, elas serão aditivas. Por exemplo, é possível criar required_access_grants para uma visualização e criar required_access_grants para um campo dentro da visualização. Para ver o campo, o usuário precisa ter concessões de acesso ao campo e à visualização. Da mesma forma, para mesclagens: se você criar required_access_grants para as visualizações em uma mesclagem e também criar required_access_grants para a mesclagem dessas duas visualizações, o usuário precisará ter acessos de acesso às duas visualizações e à mesclagem para ver a visualização mesclada.

Como acessar estruturas que fazem referência a estruturas restritas

Os usuários podem ter acesso a visuais ou painéis com objetos LookML aos quais não têm acesso. Nessas situações, o Look ou painel aparece como se os objetos LookML tivessem sido removidos do modelo.

Suponha que temos um Explore A, que contém mesclagem A, visualização A e campo A. Em seguida, colocamos uma restrição de acesso no Explorar A. Como esperado, junte-se a A, veja A, e o campo A herdará essa restrição, mas somente quando os usuários estiverem interagindo com o Explorar A. Se mesclar, visualizar ou o campo A for usado em uma exploração B diferente, eles não terão necessariamente restrições de acesso. Portanto, se você pretende reutilizar elementos LookML, sugerimos aplicar restrições de acesso no nível mais baixo possível.