Menu Docs
Página inicial do Docs
/
Manual do MongoDB
/ / /

createRole

Nesta página

  • Definição
  • Compatibilidade
  • Sintaxe
  • Comportamento
  • Acesso necessário
  • Exemplo
createRole

Cria um role e especifica seus privilégios. O papel se aplica ao banco de banco de dados no qual você executa o comando. O comando createRole retorna um erro de papel duplicado se o papel já existir no banco de banco de dados.

Dica

Em mongosh, esse comando também pode ser executado por meio do método auxiliar db.createRole().

Os métodos auxiliares são práticos para os usuários mongosh, mas podem não retornar o mesmo nível de informações que os comandos do banco de dados. Nos casos em que a praticidade não for necessária ou os campos de retorno adicionais forem necessários, use o comando de banco de dados.

Esse comando está disponível em implantações hospedadas nos seguintes ambientes:

  • MongoDB Atlas: o serviço totalmente gerenciado para implantações do MongoDB na nuvem

Importante

Este comando não é suportado em M0, M2, M5 e M10+ clusters. Para obter mais informações, consulte Comandos não suportados.

  • MongoDB Enterprise: a versão autogerenciada e baseada em assinatura do MongoDB

  • MongoDB Community: uma versão com código disponível, de uso gratuito e autogerenciada do MongoDB

O comando tem a seguinte sintaxe:

db.adminCommand(
{
createRole: "<new role>",
privileges: [
{ resource: { <resource> }, actions: [ "<action>", ... ] },
...
],
roles: [
{ role: "<role>", db: "<database>" } | "<role>",
...
],
authenticationRestrictions: [
{
clientSource: ["<IP>" | "<CIDR range>", ...],
serverAddress: ["<IP>" | "<CIDR range>", ...]
},
...
],
writeConcern: <write concern document>,
comment: <any>
}
)

O comando createRole tem os seguintes campos:

Campo
Tipo
Descrição
createRole
string
O nome do novo role.
privileges
array

Os privilégios para conceder o role. Um privilégio consiste em um recurso e ações permitidas. Para a sintaxe de um privilégio, consulte a array privileges.

Você deve incluir o campo privileges. Use uma array vazia para não especificar nenhum privilégio.

roles
array

Uma série de roles a partir dos quais este role herda privilégios.

Você deve incluir o campo roles. Use uma array vazia para especificar nenhum role para herdar.

authenticationRestrictions
array

Opcional.

As restrições de autenticação que o servidor impõe ao role. Especifica uma lista de endereços IP e os usuários do CIDR têm permissão para se conectar e/ou a partir da qual podem se conectar.

writeConcern
documento

Opcional. O nível da write concern para a operação. Consulte Especificação de write concern.

comment
any

Opcional. Um comentário fornecido pelo usuário para anexar a este comando. Depois de definido, esse comentário aparece junto com os registros desse comando nos seguintes locais:

Um comentário pode ser qualquer tipo BSON válido (string, inteiro, objeto, array etc).

No campo roles, é possível especificar roles incorporadas e roles definidas pelo usuário.

Para especificar uma função que existe no mesmo banco de dados onde o createRole é executado, você pode especificar a função com o próprio nome dela:

"readWrite"

Ou você pode especificar a role com um documento, como feito a seguir:

{ role: "<role>", db: "<database>" }

Para especificar uma role existente em outro banco de dados, especifique-a com um documento.

O documento authenticationRestrictions pode conter apenas os seguintes campos. O servidor emitirá um erro se o documento authenticationRestrictions contiver um campo não reconhecido:

Nome do campo
Valor
Descrição
clientSource
Array de endereços IP e/ou faixas CIDR
Se presente, ao autenticar um usuário, o servidor verifica se o endereço IP do cliente está na lista fornecida ou se pertence a uma faixa CIDR na lista. Se o endereço IP do cliente não estiver presente, o servidor não autenticará o usuário.
serverAddress
Array de endereços IP e/ou faixas CIDR
Uma lista de endereços IP ou faixas CIDR às quais o cliente pode se conectar. Se estiver presente, o servidor verificará se a conexão do cliente foi aceita por meio de um endereço IP na lista fornecida. Se a conexão foi aceita por meio de um endereço IP não reconhecido, o servidor não autenticará o usuário.

Importante

Se um usuário herdar múltiplas roles com restrições de autenticação incompatíveis, esse usuário se tornará inutilizável.

Por exemplo, se um usuário herdar uma função na qual o campo clientSource é ["198.51.100.0"] e outra função na qual o campo clientSource é ["203.0.113.0"], o servidor não poderá autenticar o usuário.

Para obter mais informações sobre autenticação no MongoDB, consulte Autenticação.

Os privilégios de uma função se aplicam ao banco de dados em que a função é criada. A função pode herdar privilégios de outras funções em seu banco de dados. Uma função criada no banco de dados admin pode incluir privilégios que se aplicam a todos os bancos de dados ou ao cluster e pode herdar privilégios de funções em outros bancos de dados.

Para criar um role em um banco de dados, você deve ter:

Roles integrados userAdmin e userAdminAnyDatabase fornecem ações createRole e grantRole em seus respectivos recursos.

Para criar um role com authenticationRestrictions especificado, você deve ter a ação setAuthenticationRestriction no recurso do banco de dados em que o role é criado.

O seguinte comando createRole cria a função myClusterwideAdmin no banco de dados admin:

db.adminCommand({ createRole: "myClusterwideAdmin",
privileges: [
{ resource: { cluster: true }, actions: [ "addShard" ] },
{ resource: { db: "config", collection: "" }, actions: [ "find", "update", "insert", "remove" ] },
{ resource: { db: "users", collection: "usersCollection" }, actions: [ "update", "insert", "remove" ] },
{ resource: { db: "", collection: "" }, actions: [ "find" ] }
],
roles: [
{ role: "read", db: "admin" }
],
writeConcern: { w: "majority" , wtimeout: 5000 }
})

Voltar

Gerenciamento de funções