Políticas do IAM do Programador de Recursos

Saiba como usar políticas do IAM para garantir acesso seguro ao Programador de Recursos para criar e gerenciar programações do Programador de Recursos e outras funcionalidades.

Autenticação, Autorização e Políticas Obrigatórias

O Programador de Recursos usa as políticas do IAM para garantir acesso seguro ao Programador de Recursos, criar programações e usar programações para gerenciar recursos. Cada serviço do Oracle Cloud Infrastructure integra-se ao serviço IAM para autenticação e autorização em relação a todas as interfaces (a Console, SDK ou CLI e API REST).

Você ou outro administrador da sua organização deve configurar grupos , compartimentos e políticas que controlam o usuário o nível e o tipo de acesso a serviços e recursos. Essas políticas controlam quem pode criar novos usuários, criar e gerenciar a rede na nuvem, criar instâncias, criar buckets, fazer download dos objetos, etc. Para obter mais informações, consulte Gerenciando Domínios de Identidade. Para obter detalhes específicos sobre como gravar políticas para cada um dos diferentes serviços, consulte Referência de Política.

Políticas Obrigatórias

Para criar e gerenciar programações, você deve criar uma política para conceder aos usuários permissão para criar e alterar programações. Você também deve criar uma política para conceder permissões de programações para gerenciar recursos.

Os exemplos a seguir mostram como essas políticas funcionam.

Exemplo 1. Esta política dá aos usuários permissão para criar e modificar programações

Permita que o grupo ResourceScheduleUsers exiba e liste programações de recursos na tenancy.

Allow ResourceScheduleUsers to inspect resource-schedule in tenancy

Exemplo 2

Esta política dá à programação do recurso permissão para executar uma ação no recurso de destino.

Quando uma programação de recurso é criada, por padrão, ela não tem permissão para executar a ação nos recursos de destino; portanto, você deve dar a ela permissão.

O exemplo a seguir permite que qualquer usuário execute uma ação em um recurso de destino.

Allow any-user to manage <resource_type (instance, database, and others)> in compartment id <target_compartment_ocid> where all {request.principal.type='resourceschedule',request.principal.id='ocid_of_resourceschedule'}

Os usuários não administradores que precisam usar os recursos do Oracle Cloud Infrastructure que sua empresa possui devem entrar em contato com o administrador para configurar seus IDs de usuário. O administrador pode confirmar a qual compartimento ou compartimentos esses usuários devem ter acesso.

Para usar qualquer uma das operações da API do Programador de Recursos, você deve estar autorizado em uma política do serviço IAM. Se você não estiver autorizado, entre em contato com o administrador. Se você for um administrador que precisa gravar políticas para conceder acesso aos usuários, consulte Gerenciando Domínios de Identidades

Tipos de Recursos

A tabela a seguir lista os tipos de recursos usados no Programador de Recursos e as permissões REQUIRED para usá-los.

Tipos de Recursos e Permissões
Tipo de Recurso Permissões
programação-recurso
  • RESOURCE_SCHEDULE_INSPECT
  • RESOURCE_SCHEDULE_READ
  • RESOURCE_SCHEDULE_CREATE
  • RESOURCE_SCHEDULE_UPDATE
  • RESOURCE_SCHEDULE_MOVE
  • RESOURCE_SCHEDULE_DELETE
resource-schedule-workrequest
  • RESOURCE_SCHEDULE_WORKREQUEST_INSPECT
  • RESOURCE_SCHEDULE_WORKREQUEST_READ

Variáveis Suportadas

O Programador de recursos oferece suporte a todas as variáveis gerais.

Para obter mais informações, consulte Variáveis Gerais para Todas as Solicitações e as variáveis listadas na seguinte tabela:

Convenções de Nomeação

As variáveis são minúsculas e separadas por hífen.

target.tag-namespace.name # "name"indicates a unique key
target.display-name # "display-name"indicates a non-unique description

Consulte Variáveis Gerais para Todas as Solicitações, mais as variáveis listadas na seguinte tabela:

Tipos e Origens de Variáveis

Tipos de variáveis
Tipo Descrição do Tipo
String Texto de formato livre
List(Tipo) Lista de Entidade ou String
Entidade OCID
Origens Variáveis
Origem Descrição da Origem
Solicitação Vem da entrada de solicitação
Derivado Vem da solicitação
Armazenado Vem do serviço, entrada retida
Calculado Calculado a partir de dados de serviço

Variáveis para Cada Solicitação

A tabela a seguir mostra variáveis obrigatórias, que são fornecidas pelos serviços para cada solicitação.

Variáveis Obrigatórias do Programador de Recursos
Variável Tipo da variável Descrição
target.compartment.id ENTITY O OCID do recurso principal da solicitação
request.operation STRING O ID da operação, como GetUser para a solicitação
target.resource.kind STRING O nome do tipo do recurso principal da solicitação

A tabela a seguir mostra variáveis automáticas, que são fornecidas pelo SDK para cada solicitação.

Variáveis Automáticas
Variável Tipo da variável Descrição

Para solicitações iniciadas pelo usuário:

request.user.id

request.groups.id

ENTITY

LIST(ENTITY)

O OCID do usuário que faz a chamada

Os OCIDs dos grupos de request.user.id

request.principal.group.tag.

<tagNS>.<tagKey

STRING O valor de cada tag em um grupo do qual o principal é membro
request.principal.compartment.tag.

<tagNS>.<tagKey

STRING O valor de cada tag em um compartimento do qual o principal é membro

A tabela a seguir mostra variáveis dinâmicas, que são calculadas implicitamente pelo IAM AuthZ.

Variáveis Dinâmicas
Variável Tipo da variável Descrição
request.principal.group.tag.<tagNS>.<tagKey> STRING

O valor de cada tag em um grupo do qual o controlador é membro.

request.principal.compartment.tag.<tagNS>.<tagKey STRING O valor de cada tag no compartimento que contém o controlador.
target.resource.tag.<tagNS>.<tagKey> STRING

O valor de cada tag no recurso de destino. (Calculado com base no tagSlug fornecido pelo serviço em cada solicitação.)

target.resource.compartment.tag.<tagNS>.<tagKey> STRING

O valor de cada tag no compartimento que contém o recurso de destino.

Detalhes das Combinações de Verbo + Tipo de Recurso

As tabelas a seguir mostram as permissões e operações de API abrangidas por cada verbo. O nível de acesso é cumulativo conforme você vai de inspect > read > use > manage. Um sinal de mais (+) em uma célula da tabela indica acesso incremental em comparação com a célula diretamente acima, enquanto "nenhum extra" indica nenhum acesso incremental.

Para obter detalhes sobre as permissões, consulte Permissões.

Permissões Exigidas para cada Operação de API

Liste os atributos específicos da operação que você disponibiliza para o compilador de políticas. Para um tipo de recurso específico, você deve ter o mesmo conjunto de atributos em todas as tarefas (obter, listar, excluir e muito mais). A única exceção é para a tarefa Create, na qual você não tem o ID desse objeto ainda, portanto não pode ter um atributo target.RESOURCE-KIND.id para Create.

Para obter informações sobre permissões, consulte Permissões.

A tabela abaixo lista as operações da API do Programador de Recursos em uma ordem lógica, agrupadas por tipo de recurso.

Permissões Necessárias para Cada Operação da API do Programador de Recursos
API Permissões Obrigatórias para Usar a Operação Operação
ListSchedules RESOURCE_SCHEDULE_INSPECT Retorna uma lista de programações de recursos.
GetSchedule RESOURCE_SCHEDULE_READ Obtenha uma programação de recursos.
CreateSchedule RESOURCE_SCHEDULE_CREATE Criar uma programação de recurso.
UpdateSchedule RESOURCE_SCHEDULE_UPDATE Atualizar uma programação de recurso.
DeleteSchedule RESOURCE_SCHEDULE_DELETE Excluir uma programação de recurso.
ChangeScheduleCompartment RESOURCE_SCHEDULE_MOVE Alterar compartimento de programação de recursos
ListWorkRequests RESOURCE_SCHEDULE_WORKREQUEST_INSPECT Lista solicitações de serviço associadas a uma programação de recurso.
GetWorkRequest RESOURCE_SCHEDULE_WORKREQUEST_READ Obter uma solicitação de trabalho.

Mapa de Metaverb

Mapa de Metaverb
Tipo de recurso Inspecionar Leitura Usar Gerenciar
RESOURCE-SCHEDULE RESOURCE_SCHEDULE_INSPECT RESOURCE_SCHEDULE_READ nenhum
  • RESOURCE_SCHEDULE_CREATE
  • RESOURCE_SCHEDULE_UPDATE
  • RESOURCE_SCHEDULE_UPDATE
  • RESOURCE_SCHEDULE_MOVE
  • RESOURCE_SCHEDULE_DELETE
RESOURCE-SCHEDULE-WORKREQUEST RESOURCE_SCHEDULE_WORKREQUEST_INSPECT RESOURCE_SCHEDULE_WORKREQUEST_READ nenhum nenhum

Exemplos de Políticas

Você pode usar essas políticas de exemplo como modelos para criar e gerenciar (criar, excluir, ativar e outros) suas próprias políticas do Programador de Recursos.

Observação

Para usar programações de recursos, crie uma política para conceder aos usuários permissão para criar uma programação e crie uma política para conceder uma permissão de programação para gerenciar recursos.

Exemplo 1

Esta política dá aos usuários permissão para gerenciar programações de recursos em sua tenancy.

Este exemplo permite que um grupo de usuários nomeado gerencie programações de recursos em toda a tenancy:

Allow group <group_name> to manage resource-schedule-family in tenancy

Por exemplo:

Allow group YourResourceScheduleAdminGroup to manage resource-schedule-family in tenancy

Exemplo 2

Esta política dá aos usuários permissão para gerenciar programações de recursos em um compartimento específico.

O exemplo a seguir permite que um grupo gerencie programações de recursos em um compartimento nomeado:

Allow group <group_name> to manage resource-schedule-family in compartment <compartment_name>

Por exemplo:

Allow group ResourceScheduleAdmins to manage resource-schedule-family in compartment ResourceScheduleCompartment

Exemplo 3

Esta política concede a um recurso permissão de programação para executar uma ação em um recurso.

Quando uma programação de recurso é criada, por padrão, ela não tem permissão para executar a ação nos recursos de destino, Você deve conceder a ela permissão.

Esta política fornece uma permissão de programação para gerenciar recursos predefinidos, como instâncias em um compartimento.

O exemplo a seguir permite que um usuário gerencie um tipo de recurso em um compartimento no qual all{request.principal.type='resourceschedule',request.principal.id='<ocid_of_resourceschedule>:
Allow any-user to manage <resource_type> in compartment id <compartment_ocid> where all{request.principal.type='resourceschedule',request.principal.id='<ocid_of_resourceschedule>'}

Por exemplo:

Allow any-user to manage instance in compartment id ocid.compartment.oc1...q7fa where all{request.principal.type='resourceschedule',request.principal.id='ocid.resourceschedule.oc1.iad.axgr...dt8zb'}

Exemplo 4

Este exemplo de política mostra como conceder uma permissão de programação de recursos para executar uma ação como um grupo dinâmico.

Primeiro, crie um Grupo Dinâmico para identificar os recursos para os quais deseja autorizar o acesso. O grupo dinâmico requer uma ou mais regras de correspondência, conforme mostrado no exemplo a seguir.

O exemplo a seguir mostra como criar um grupo dinâmico para o programador de recursos chamado resource-scheduler-dynamic-group:

ALL {resource.type='resourceschedule', resource.id='ocid.resourceschedule.oc1.iad.axgr...dt8zb'}

Em seguida, defina as políticas adequadas.

O exemplo a seguir mostra como permitir que o dynamic-group resource-scheduler-dynamic-group gerencie functions-family na tenancy:
Allow dynamic-group resource-scheduler-dynamic-group to manage functions-family in tenancy