Skip to main content
Cada endpoint de certificado verifica uma ação do IAM antes de fazer qualquer coisa. Esta é a lista completa — não há outros, e nenhum endpoint ignora a verificação.
A referência da API mostra a ação na própria página de cada ponto de extremidade, para que você não precise voltar aqui para procurar uma. Ambos vêm do mesmo lugar: a chamada de autorização no serviço, lida no momento da compilação.

As ações

O mapeamento é um ponto final para uma ação, o que não é verdade para todos os serviços aqui. Três coisas ainda valem a pena dizer, porque nenhuma delas segue dos nomes dos endpoints.

A leitura de um certificado não lhe dá a sua chave privada

certificate:GetCertificate retorna tudo, exceto a chave. A chave vem apenas do endpoint material, atrás de seu próprio certificate:GetCertificateMaterial, então uma credencial que pode ler e listar seus certificados ainda não pode extrair o que os torna úteis. Essa separação é a única coisa que fica entre uma credencial e a chave. O endpoint aceita as mesmas credenciais que qualquer outra chamada e não se importa com o tipo de principal que você é, então qualquer pessoa que tenha a ação obtém a chave privada. Conceda-o deliberadamente e apenas ao lado de um escopo de recursos que você queira. Consulte Certificate material.

Emissão de autorizações no nome que você pediu

Criar é verificado contra o CRN do certificado about to exist — certificate/<name>, construído a partir do name na solicitação, antes que qualquer linha seja escrita. Uma política com escopo para certificate/prod-*, portanto, bloqueia a emissão da mesma forma que bloqueia as leituras que se seguem, ao invés de ser uma regra que você só pode aplicar após o fato. Ambos os caminhos de criação usam a mesma ação: emitir através do desafio DNS e fazer upload do material que você já possui são ambos certificate:CreateCertificate. Se você precisar permitir um e não o outro, essa distinção não está disponível na política — o ponto de extremidade é o mesmo.

Anexar a um ouvinte não é uma ação de certificado

Colocar um certificado em um ouvinte HTTPS precisa de loadbalancer:AttachListenerCertificate no CRN do load balancer. Não há nenhuma ação de certificado nesse caminho. A propriedade é aplicada separadamente e não depende da sua política: o CRN deve nomear um certificado que sua conta possui e seu slot de conta deve corresponder ao seu. Um certificado pertencente a outra conta é recusado mesmo que você possa nomeá-lo exatamente.

Recursos

As ações de certificado são verificadas em relação a uma forma de recurso:
O slot de região está vazio porque os certificados não estão vinculados a regiões — o mesmo certificado pode fazer back-loaders em qualquer região. O CRN é construído a partir do nome, não de um id, que é o que torna uma política capaz de seguir uma convenção de nomenclatura: crn:certificate::my-account:certificate/prod-* abrange todos os certificados cujo nome começa com prod-, incluindo os emitidos posteriormente.
name é único por conta e corresponde a ^[a-zA-Z0-9][a-zA-Z0-9._-]{0,253}$. Como ele chega no CRN, escolher nomes com um prefixo comum por ambiente é o que faz o curinga acima valer a pena escrever.

Condições

Criar carrega as tags da solicitação e todas as outras ações carregam as tags já no certificado, portanto, as condições da política funcionam em ambos os lados da emissão:
  • basalt:RequestTag/<key> — o que um chamador pode rotular um certificado como, em create.
  • basalt:ResourceTag/<key> — quais certificados existentes uma ação pode tocar.

Escrever uma política

Somente leitura em todos os certificados da conta. Observe o que isso deliberadamente deixa de fora:
Controle total de uma convenção de nomenclatura, sem as chaves privadas:
certificate:* inclui a chave privada. Um curinga na ação concede certificate:GetCertificateMaterial junto com tudo o mais, o que raramente é o que se quer dizer com “deixar esta equipe gerenciar certificados”. Nada a jusante irá pegar o erro — não há uma segunda verificação no ponto final do material. Liste as ações explicitamente, a menos que a credencial seja destinada a conter a chave.
certificate:ListCertificates é verificado contra a conta em vez de um certificado nomeado, então ele não pode ser escopo para um. Conceder isso concede a capacidade de ver que todos os certificados na conta existem, embora não leia o material de qualquer um deles.

Como é uma negação

Uma verificação falhada responde 403:
Ele não diz qual ação estava faltando, deliberadamente — a mensagem é a mesma para cada negação, então não pode ser usada para mapear o que uma credencial pode ou não alcançar. É por isso que a tabela acima existe: procure a chamada que você fez, e a ação que ela precisa é a que você adiciona.
Um 404 não é um 403 disfarçado. Propriedade e autorização são verificações separadas, e a propriedade é resolvida primeiro: um certificado pertencente a outra conta responde 404 porque não é seu para ver, e um que você possui, mas não tem a ação para respostas 403. Se você estiver recebendo 404 em um certificado que você acredita que possui, verifique a conta à qual a credencial pertence antes de verificar a política.