layout | title | group | priority |
---|---|---|---|
global |
Segurança |
Features |
1 |
- Table of Contents {:toc}
Atualmente, existem duas funcionalidades para a segurança do Alluxio. Este documento menciona estes conceitos e suas utilizações.
- Autenticação: Se habilitado, o
file system
do Alluxio pode reconhecer e verificar o usuário que está solicitando o acesso a este. Esta funcionalidade é a base para outras funcionalidades de segurança como autorização e criptografia. - Autorização: Se habilitado, o
file system
do Alluxio pode controlar o acesso do usuário. O modelo de autorizaçãoPOSIX
é utilizado no Alluxio para assinalar permissões e direitos de controle de acesso.
Por padrão o Alluxio executa sem modo de segurança onde nem autenticação e nem autorização são necessários. Veja as configurações-de-segurança para habilitar e utilizar as funcionalidades de segurança.
O Alluxio provê o serviçco de file system
através do Thrift RPC
. O lado do client
(representado pelo usuário) e o lado do servidor (como o master
) devem estabelecer uma conexão
autenticada para comunicação. Se a autenticação tiver sucesso, a conexão será estabelecida.
Se houver falhar, a conexão não será estabelecida e uma exceção será direcionada para o client
.
Existem três tipos de autenticação suportados: NOSASL
(modo padrão); SIMPLE
; e CUSTOM
.
As entidades de comunicação no Alluxio consistem de o master
, o worker
e o client
. Cada um
destes necessita saber qual o usuário que está executando, também chamado de usuário de login
.
O JAAS (Java Authentication and Authorization Service)
é utilizado para determinar quem é que
está executando o processo, atualmente.
Quando a autenticação está habilitada, o usuário de login
para o componente (master
, worker
ou client
) pode obter os seguintes passos:
Login
por usuário configurável. Se a propriedade'alluxio.security.login.username'
está definida pela aplicação, este valor será o usuário delogin
.- Se o valor estiver vazio, o
login
será o usuário doSO
.
Se o login
falhar, uma exceção será informada. Se houver sucesso:
- Para o
master
, o usuário delogin
é o super usuário para ofile system
do Alluxio. Este também será o proprietário do diretório raiz. - Para o
worker
e oclient
, o usuário delogin
é o usuário que efetua o contato com omaster
para acessar o arquivo. Este é informado para omaster
através de uma conexãoRPC
para autenticação.
Neste modo a autenticação é desabilitada. O file system
do Alluxio se comporta como anteriormente.
SASL (Simple Authentication and Security Layer)
é um estrutura para definir a autenticação
entre aplicações cliente e servidor, que é utilizado no Alluxio para implantar a funcionalidade
de autenticação. Então o NOSASL
é usado para desabilitar esta funcionalidade.
Neste modo a autenticação é habilitada. O file system
do Alluxio tem a informação do usuário
que está acessando e este entende que o usuário possui o privilégio.
Depois que o usuário criar diretórios ou arquivos, o nome do usuário é adicionado ao metadados.
A informação deste usuário pode ser lidar e visualizada pelo CLI
e UI
.
Neste modo a autenticação é habilitada. O file system
do Alluxio tem a informação do usuário
que está acessando e utiliza o AuthenticationProvider
para verificar se o usuário possui ou
não privilégio.
Experimental. Este modo é utilizado apenas para testes, atualmente.
O file system
do Alluxio implementa o modelo de permissão ara diretórios e arquivos que é
similar ao modelo POSIX
.
Cada arquivo e diretório está associado com:
- um proprietário, que é o usuário do processo
client
para criar o arquivo ou diretório. - um grupo, que é o grupo retornado pelo serviço
user-groups-mapping
. Veja o Mapeamento de Grupo por Usuário. - permissões
As permissões possuem três partes:
- a permissão de proprietário define o acesso privilegiado ao proprietário do arquivo
- a permissão de grupo define o acesso privilegiado ao grupo proprietário
- a permissão de outros define o acesso privilegiado para todos os usuários que não pertencem a nenhuma das duas classes acima
Cada permissão possui três ações:
- leitura (r)
- escrita (w)
- execução (x)
Para os arquivos, a permissão r
é necessário para leitura e a w
é necessário para escrever o
arquivo. Para os diretórios, a permissão r
é requerida para listar o conteúdo do diretórios, a
w
para criar, renomear ou apagar arquivos e diretórios abaixo deste, e a permissão x
é
requerida para acesso ao diretório filho.
Por exemplo, quando a autorização está habilitada, o resultado do comando ls -R
é:
{% include Security/lsr.md %}
Quando o usuário é definido, a lista de grupos é definida por um serviço de mapeamento de grupo,
configurado por alluxio.security.group.mapping.class
. A implementação padrão é o
'alluxio.security.group.provider.ShellBasedUnixGroupsMapping'
, que executa o comando groups
no terminal para retornar o grupo de um usuário informado.
A propriedade 'alluxio.security.authorization.permission.supergroup'
define um super grupo.
Qualquer usuário pertencente a este grupo também serão super usuários.
A permissão inicial de criação é 777 e a diferença entre um diretório e um arquivo é 111. Por
padrão o valor de umask
é 022, o diretório criado possui permissão 755 e o arquivo possui a 644.
O valor de umask
pode ser definido através da propriedade
'alluxio.security.authorization.permission.umask'
.
O proprietário, grupo e as permissões podem ser alterados de duas maneiras:
- O usuário de aplicação invoca o método
setAttribute(...)
daFileSystem API
ouHadoop API
. Veja o File System API. - Comandos
CLI
no terminal. Veja os comandos chown, chgrp, chmod.
O proprietário somente pode ser modificado por um super usuário. O grupo e a permissão somente podem ser modificados por um super usuário e o proprietário do arquivo.
É recomendado para iniciar o Alluxio master
e os workers
através do mesmo usuário. O serviço
do Alluxio cluster
é composto de um master
e os workers
. Cada worker
precisa efetuar uma
chamada RPC
para o master
por algumas operações de arquivos. Se o usuário do worker
não
for o mesmo do master
, a operação deste arquivo irá falhar devido a checagem n permissão.