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 tenancyExemplo 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.
| Tipo de Recurso | Permissões | 
|---|---|
| programação-recurso | 
 | 
| resource-schedule-workrequest | 
 | 
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 descriptionConsulte Variáveis Gerais para Todas as Solicitações, mais as variáveis listadas na seguinte tabela:
Tipos e Origens de Variáveis
| Tipo | Descrição do Tipo | 
|---|---|
| String | Texto de formato livre | 
| List(Tipo) | Lista de Entidade ou String | 
| Entidade | OCID | 
| 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á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ável | Tipo da variável | Descrição | 
|---|---|---|
| Para solicitações iniciadas pelo usuário: request.user.id
 | ENTITY
 | O OCID do usuário que faz a chamada Os OCIDs dos grupos de  | 
| request.principal.group.tag.
 | STRING | O valor de cada tag em um grupo do qual o principal é membro | 
| request.principal.compartment.tag.
 | 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á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  | 
| 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.
| 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
| Tipo de recurso | Inspecionar | Leitura | Usar | Gerenciar | 
|---|---|---|---|---|
| RESOURCE-SCHEDULE | RESOURCE_SCHEDULE_INSPECT | RESOURCE_SCHEDULE_READ | nenhum | 
 | 
| 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.
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 tenancyPor exemplo:
Allow group YourResourceScheduleAdminGroup to manage resource-schedule-family in tenancyExemplo 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 ResourceScheduleCompartmentExemplo 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.
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.
dynamic-group resource-scheduler-dynamic-group gerencie functions-family na tenancy:Allow dynamic-group resource-scheduler-dynamic-group to manage functions-family in tenancy