JBoss

Access Denied após habilitar o RBAC no JBoss EAP 6

Após criar o usuário administrador do JBoss…

[jboss@rhel7-server-1 bin]$ cd $JBOSS_HOME/bin
[jboss@rhel7-server-1 bin]$ ./add-user.sh

What type of user do you wish to add?
a) Management User (mgmt-users.properties)
b) Application User (application-users.properties)
(a):

Enter (a) para criar um usuário de administração.

Enter the details of the new user to add.
Using realm 'ManagementRealm' as discovered from the existing property files.
Username : admin

Após definir o nome do usuário (admin neste exemplo) defina uma senha obedecendo algus prereqs.

The username 'admin' is easy to guess
Are you sure you want to add user 'admin' yes/no? yes
Password requirements are listed below. To modify these restrictions edit the add-user.properties configuration file.
- The password must not be one of the following restricted values {root, admin, administrator}
- The password must contain at least 8 characters, 1 alphabetic character(s), 1 digit(s), 1 non-alphanumeric symbol(s)
- The password must be different from the username
Password :
Re-enter Password :

Caso queira criar/associar o usuário à um grupo (ex: administradores) informe o nome do(s) grupo(s) neste momento. Ou Enter para continuar sem grupo.

What groups do you want this user to belong to? (Please enter a comma separated list, or leave blank for none)[ ]:
About to add user 'admin' for realm 'ManagementRealm'
Is this correct yes/no? yes

Por padrão o mecanismo de autenticação (Simple) do EAP mantém usuários e grupos em arquivos texto. As senhas são codificadas usando um algoritmo Hash.

Added user 'admin' to file '/opt/redhat/jboss-eap-6.3/standalone/configuration/mgmt-users.properties'
Added user 'admin' to file '/opt/redhat/jboss-eap-6.3/domain/configuration/mgmt-users.properties'
Added user 'admin' with groups to file '/opt/redhat/jboss-eap-6.3/standalone/configuration/mgmt-groups.properties'
Added user 'admin' with groups to file '/opt/redhat/jboss-eap-6.3/domain/configuration/mgmt-groups.properties'

Este usuário será usado para chamadas remotas ou por algum Host Controller (Domain Mode)?

Is this new user going to be used for one AS process to connect to another AS process?
e.g. for a slave host controller connecting to the master or for a Remoting connection for server to server EJB calls.
yes/no? no

Você acessa a console, abre a aba Administration e vê a seguinte mensagem:

JBoss EAP 6 RBAC Auth

Ahmmm! Legal! Quero habilitar o mecanismo de autenticação RBAC para criar usuários com diferentes perfis de gerência (Administrator, Deployer, Monitor, Operator, etc)…

Aí você copia o comando, acessa a CLI e executa…

[jboss@rhel7-server-1 bin]$ ./jboss-cli.sh
You are disconnected at the moment. Type 'connect' to connect to the server or 'help' for the list of supported commands.
[disconnected /] connect 192.168.122.65:9999
[standalone@192.168.122.65:9999 /] /core-service=management/access=authorization:write-attribute(name=provider,value=rbac)
{
"outcome" => "success",
"response-headers" => {
"operation-requires-reload" => true,
"process-state" => "reload-required"
}
}
[standalone@192.168.122.65:9999 /] reload

Volta na console web e tenta logar novamente ou executar alguma operação…

jboss-eap-access-denied-after-enable-rbac

Ops! :-/

Deu merda!

Sim! Quando você habilita o RBAC o JBoss troca o mecanismo de autenticação original (simple) pelo mecanismo RBAC. Por este motivo a role que antes era mapeada nos arquivos:

/opt/redhat/jboss-eap-6.3/standalone/configuration/mgmt-users.properties
/opt/redhat/jboss-eap-6.3/standalone/configuration/mgmt-groups.properties

passa a ser mapeada dentro do standalone.xml ou domain.xml.

...
        <access-control provider="rbac">
            <role-mapping>
                <role name="SuperUser">
                    <include>
                        <user name="$local"/>
                    </include>
                </role>
            </role-mapping>
        </access-control>
...

Agora precisamos mapear o usuário admin (criado com o script add-user.sh) para as roles pré definidas no RBAC. Como o admin é o usuário administrador, precisamos associar ele à role SuperUser. Para isso execute o comando abaixo na CLI do JBoss.

[standalone@192.168.122.65:9999 /] /core-service=management/access=authorization/role-mapping=SuperUser/include=user-admin:add(name=admin,realm=ManagementRealm,type=USER)
{"outcome" => "success"}

Pronto!

Agora se abrir o standalone.xml irá observar que o usuário admin está associado à role Super User

...
        <access-control provider="rbac">
            <role-mapping>
                <role name="SuperUser">
                    <include>
                        <user name="$local"/>
                        <user name="admin" realm="ManagementRealm"/>
                    </include>
                </role>
            </role-mapping>
        </access-control>
...

Agora o usuário admin pode ser visto na console.

jboss-eap-after-fix-rbac

😉


Ref: https://access.redhat.com/solutions/696693

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s