

# Saiba mais sobre o uso da AMI compartilhada no Amazon EC2
<a name="sharing-amis"></a>

*Uma AMI compartilhada* é uma AMI que um desenvolvedor criou e disponibilizou para que outros desenvolvedores usem. Uma das maneiras mais fáceis de começar a usar o Amazon EC2 é usar AMIs compartilhadas com os componentes necessários e adicionar o conteúdo personalizado. Também é possível criar suas próprias AMIs e compartilhá-las com outros. 

Use a AMI compartilhada sob seu próprio risco. A Amazon não pode responsabilizar-se pela integridade ou segurança das AMIs compartilhadas por outros usuários do Amazon EC2. Portanto, trate as AMIs compartilhadas como você faria com qualquer código estranho que considerasse implantar em seu próprio data center e execute a investigação aplicável. Recomendamos que você obtenha uma AMI de uma fonte confiável, como um provedor verificado.

## Provedor verificado
<a name="verified-ami-provider"></a>

No console do Amazon EC2, AMIs públicas de propriedade da Amazon ou de um parceiro verificado da Amazon são marcadas como **Provedor verificado**.

Você também pode usar o comando [describe-images](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-images.html) da AWS CLI para identificar as AMIs públicas provenientes de um provedor verificado. As imagens públicas de propriedade da Amazon ou de um parceiro verificado têm um proprietário com alias, que são `amazon`, `aws-backup-vault` ou `aws-marketplace`. Na saída da CLI, esses valores aparecem para `ImageOwnerAlias`. Outros usuários não podem dar um alias às AMIs deles. Isso permite que você encontre AMIs da Amazon ou de parceiros verificados facilmente.

Para se tornar um fornecedor verificado, você deve se registrar como vendedor no AWS Marketplace. Após o registro, você pode listar sua AMI no AWS Marketplace. Para obter mais informações, consulte [Conceitos básicos como vendedor](https://docs.aws.amazon.com/marketplace/latest/userguide/user-guide-for-sellers.html) e [Produtos baseados em AMIs](https://docs.aws.amazon.com/marketplace/latest/userguide/ami-products.html) no *Guia do vendedor do AWS Marketplace*.

**Topics**
+ [Provedor verificado](#verified-ami-provider)
+ [Encontre AMIs compartilhadas para usar em instâncias do Amazon EC2](usingsharedamis-finding.md)
+ [Preparar-se para usar AMIs compartilhadas para Linux](usingsharedamis-confirm.md)
+ [Controlar a descoberta e o uso de AMIs no Amazon EC2 com AMIs permitidas.](ec2-allowed-amis.md)
+ [Disponibilizar publicamente sua AMI para uso no Amazon EC2](sharingamis-intro.md)
+ [Saiba mais sobre o bloqueio de acesso público para AMIs](block-public-access-to-amis.md)
+ [Compartilhar uma AMI com organizações e unidades organizacionais](share-amis-with-organizations-and-OUs.md)
+ [Compartilhar uma AMI com contas específicas da AWS](sharingamis-explicit.md)
+ [Cancelar o compartilhamento de uma AMI com sua Conta da AWS](cancel-sharing-an-AMI.md)
+ [Recomendações para criar AMIs compartilhadas no Linux](building-shared-amis.md)

**Se você estiver procurando informações sobre outros tópicos**
+ Para obter informações sobre como criar uma AMI, consulte [Criação de uma AMI baseada no Amazon S3](creating-an-ami-instance-store.md) ou [Criação de uma AMI baseada no Amazon EBS](creating-an-ami-ebs.md).
+ Para obter informações sobre como criar, fornecer e manter suas aplicações no AWS Marketplace, consulte a [Documentação do AWS Marketplace](https://docs.aws.amazon.com/marketplace/).

# Encontre AMIs compartilhadas para usar em instâncias do Amazon EC2
<a name="usingsharedamis-finding"></a>

É possível usar o console do Amazon EC2 ou a linha de comandos para encontrar AMIs compartilhadas públicas ou privadas para usar com suas instâncias do Amazon EC2.

As AMIs são um recurso regional. Ao pesquisar uma AMI compartilhada (pública ou privada), é necessário procurá-la na mesma região de onde ela é compartilhada. Para disponibilizar uma AMI em uma região diferente, copie a AMI para a região e compartilhe-a. Para obter mais informações, consulte [Copiar uma AMI do Amazon EC2](CopyingAMIs.md).

------
#### [ Console ]

O console fornece um campo de filtro de AMI. Você também pode definir o escopo das pesquisas usando os filtros fornecidos no campo **Pesquisar**.

**Para encontrar uma compartilhada ou AMI**

1. Abra o console do Amazon EC2 em [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. No painel de navegação, selecione **AMIs**.

1. No primeiro filtro, escolha uma das seguintes opções:
   + **Imagens privadas**: lista todas as AMIs compartilhadas com você.
   + **Imagens públicas**: lista todas as AMIs públicas.

1. (Opcional) Para exibir apenas as imagens públicas da Amazon, escolha o campo **Pesquisar** e, nas opções de menu exibidas, escolha **Alias do proprietário**, **=** e **amazon**.

1. (Opcional) Adicione filtros para limitar o escopo da pesquisa às AMIs que atendam aos seus requisitos.

**Para encontrar uma AMI pública de um [provedor verificado](sharing-amis.md#verified-ami-provider)**

1. Abra o console do Amazon EC2 em [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. No painel de navegação, escolha **AMI Catalog** (Catálogo de AMIs).

1. Escolha **Community AMIs (AMIs da comunidade)**.

1. No painel **Refinar resultados**, selecione **Provedor verificado**. O rótulo **Provedor verificado** indica se as AMIs são da Amazon ou de um parceiro verificado.

------
#### [ AWS CLI ]

Use o comando [describe-images](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-images.html) para listar as AMIs. É possível direcionar o escopo da lista para os tipos de AMI que lhe interessam, conforme exibido nos exemplos a seguir.

**Para listar todas as AMIs públicas**  
O comando a seguir lista todas as AMIs públicas, inclusive todas as AMIs públicas de sua propriedade.

```
aws ec2 describe-images --executable-users all
```

**Para listar AMIs com permissões de execução explícitas**  
O comando a seguir lista as AMIs para as quais você tenha permissões de execução explícita. Essa lista não inclui nenhuma AMI de sua propriedade.

```
aws ec2 describe-images --executable-users self
```

**Para listar AMIs pertencentes a provedores verificados**  
O comando a seguir lista as AMIs pertencentes a [provedores verificados](sharing-amis.md#verified-ami-provider). As AMIs públicas pertencentes a fornecedores verificados (da Amazon ou de parceiros verificados) têm um proprietário com alias, que é exibido como `amazon`, `aws-backup-vault` ou `aws-marketplace` no campo da conta. Isso ajuda você a encontrar facilmente AMIs de fornecedores verificados. Outros usuários não podem dar um alias às AMIs deles.

```
aws ec2 describe-images \
    --owners amazon aws-marketplace \
    --query 'Images[*].[ImageId]' \
    --output text
```

**Para listar AMIs pertencentes a uma conta**  
O comando a seguir lista as AMIs de propriedade da Conta da AWS especificada.

```
aws ec2 describe-images --owners 123456789012
```

**Para definir o escopo das AMIs usando um filtro**  
Para reduzir o número de AMIs exibidas, use um filtro para listar somente os tipos de AMI que lhe interessam. Por exemplo, use o filtro a seguir para exibir somente AMIs com EBS.

```
--filters "Name=root-device-type,Values=ebs"
```

------
#### [ PowerShell ]

Use o cmdlet [Get-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Image.html) (Tools for Windows PowerShell) para listar as AMIs. É possível direcionar o escopo da lista para os tipos de AMI que lhe interessam, conforme exibido nos exemplos a seguir.

**Para listar todas as AMIs públicas**  
O comando a seguir lista todas as AMIs públicas, inclusive todas as AMIs públicas de sua propriedade.

```
Get-EC2Image -ExecutableUser all
```

**Para listar AMIs com permissões de execução explícitas**  
O comando a seguir lista as AMIs para as quais você tenha permissões de execução explícita. Essa lista não inclui nenhuma AMI de sua propriedade.

```
Get-EC2Image -ExecutableUser self
```

**Para listar AMIs pertencentes a provedores verificados**  
O comando a seguir lista as AMIs pertencentes a [provedores verificados](sharing-amis.md#verified-ami-provider). As AMIs públicas pertencentes a fornecedores verificados (da Amazon ou de parceiros verificados) têm um proprietário com alias, que é exibido como `amazon`, `aws-backup-vault` ou `aws-marketplace` no campo da conta. Isso ajuda você a encontrar facilmente AMIs de fornecedores verificados. Outros usuários não podem dar um alias às AMIs deles.

```
Get-EC2Image -Owner amazon aws-marketplace
```

**Para listar AMIs pertencentes a uma conta**  
O comando a seguir lista as AMIs de propriedade da Conta da AWS especificada.

```
Get-EC2Image -Owner 123456789012
```

**Para definir o escopo das AMIs usando um filtro**  
Para reduzir o número de AMIs exibidas, use um filtro para listar somente os tipos de AMI que lhe interessam. Por exemplo, use o filtro a seguir para exibir somente AMIs com EBS.

```
-Filter @{Name="root-device-type"; Values="ebs"}
```

------

# Preparar-se para usar AMIs compartilhadas para Linux
<a name="usingsharedamis-confirm"></a>

Para que você use uma AMI compartilhada para Linux, execute as etapas a seguir para confirmar que não há credenciais pré-instaladas que permitam acesso indesejado à sua instância por terceiros e que não há nenhum registro remoto pré-configurado que poderia transmitir dados confidenciais para terceiros. Verifique documentação da distribuição Linux usada pelas informações da AMI para obter informações sobre melhora da segurança do sistema.

Para garantir que você não perca acidentalmente acesso à sua instância, recomendamos que inicie duas sessões de SSH e mantenha a segunda sessão aberta até remover as credenciais que não reconhece e ter confirmado que ainda pode fazer login em sua instância usando SSH.

1. Identifique e desabilite todas as chaves SSH públicas não autorizadas. A única chave no arquivo deve ser aquela usada para executar as AMIs. O seguinte comando localiza os arquivos `authorized_keys`:

   ```
   [ec2-user ~]$ sudo find / -name "authorized_keys" -print -exec cat {} \;
   ```

1. Desabilita a autenticação baseada em senha para o usuário raiz. Abra o arquivo `sshd_config` e edite a linha `PermitRootLogin` da seguinte forma:

   ```
   PermitRootLogin without-password
   ```

   Como alternativa, é possível desativar a capacidade de fazer login na instância como usuário raiz:

   ```
   PermitRootLogin No
   ```

   Reinicie o serviço sshd.

1. Verifique se há outros usuários que possam fazer login na sua instância. Usuários com privilégios de superusuário são particularmente perigosos. Remova ou bloqueie senha de todas as contas desconhecidas.

1. Verifique se há portas abertas que você não está usando e escuta de serviços de rede em execução para as conexões de entrada.

1. Para evitar o registro em log remoto pré-configurado, exclua o arquivo de configuração existente e reinicie o serviço `rsyslog`. Por exemplo:

   ```
   [ec2-user ~]$ sudo rm /etc/rsyslog.conf
   [ec2-user ~]$ sudo service rsyslog restart
   ```

1. Verifique se todos os trabalhos cron são legítimos.

Se você descobrir uma AMI pública que sente que apresenta um risco de segurança, entre em contato com a equipe de segurança da AWS. Para obter informações, consulte o [Centro de segurança da AWS](https://aws.amazon.com/security/).

# Controlar a descoberta e o uso de AMIs no Amazon EC2 com AMIs permitidas.
<a name="ec2-allowed-amis"></a>

Para controlar a descoberta e o uso de imagens de máquina da Amazon (AMIs) pelos usuários da sua Conta da AWS, é possível usar o atributo de *AMIs permitidas*. Você especifica os critérios que as AMIs devem atender para ficarem visíveis e disponíveis em sua conta. Quando os critérios são habilitados, os usuários que iniciam instâncias só verão e terão acesso às AMIs que estejam em conformidade com os critérios especificados. Por exemplo, é possível especificar uma lista de provedores de AMIs confiáveis como critério, e somente as AMIs desses provedores estarão visíveis e disponíveis para uso.

Antes de ativar as configurações de AMIs permitidas, é possível ativar o *modo de auditoria* para visualizar quais AMIs estarão ou não visíveis e disponíveis para uso. Isso permite que você refine os critérios conforme necessário para garantir que somente as AMIs pretendidas estejam visíveis e disponíveis para os usuários em sua conta. Além disso, use o comando [describe-instance-image-metadata](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instance-image-metadata.html) para encontrar as instâncias que foram iniciadas com AMIs que não atendiam aos critérios especificados. Essas informações podem orientar sua decisão de atualizar suas configurações de inicialização para usar AMIs em conformidade (por exemplo, especificar uma AMI diferente em um modelo de inicialização) ou ajustar seus critérios para permitir essas AMIs.

Você especifica as configurações de AMIs permitidas no nível da conta, diretamente na conta ou usando uma política declarativa. Essas configurações devem ser definidas em cada Região da AWS onde você deseja controlar o uso de AMIs. O uso de uma política declarativa permite que você aplique as configurações em várias regiões simultaneamente, bem como em várias contas simultaneamente. Quando uma política declarativa está em uso, você não pode modificar as configurações diretamente em uma conta. Este tópico descreve como ajustar as configurações diretamente em uma conta. Para obter informações sobre o uso de políticas declarativas, consulte [Políticas declarativas](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_declarative.html) no *Guia do usuário do AWS Organizations*.

**nota**  
O atributo AMIs permitidas controla somente a descoberta e o uso de AMIs públicas ou AMIs compartilhadas com sua conta. Ele não restringe as AMIs pertencentes à sua conta. Independentemente dos critérios definidos, as AMIs criadas pela sua conta sempre poderão ser descobertas e usadas pelos usuários da sua conta.

**Principais benefícios das AMIs permitidas**
+ **Conformidade e segurança**: os usuários só podem descobrir e usar AMIs que atendam aos critérios especificados, reduzindo o risco de uso de AMIs fora de conformidade.
+ **Gerenciamento eficiente**: ao reduzir o número de AMIs permitidas, o gerenciamento das demais se torna mais fácil e eficiente.
+ **Implementação centralizada em nível de conta**: defina as configurações de AMIs permitidas no nível da conta, diretamente na conta ou por meio de uma política declarativa. Isso fornece uma maneira centralizada e eficiente de controlar o uso de AMIs em toda a conta.

**Topics**
+ [Como funcionam as AMIs permitidas](#how-allowed-amis-works)
+ [Práticas recomendadas para a implementação de AMIs permitidas](#best-practice-for-implementing-allowed-amis)
+ [Permissões obrigatórias do IAM](#iam-permissions-for-allowed-amis)
+ [Gerenciar as configurações de AMIs permitidas](manage-settings-allowed-amis.md)

## Como funcionam as AMIs permitidas
<a name="how-allowed-amis-works"></a>

Para controlar quais AMIs podem ser detectadas e usadas em sua conta, defina um conjunto de critérios de avaliação de AMIs. Os critérios são compostos de um ou mais `ImageCriterion`, como mostra o diagrama a seguir. Uma explicação se segue ao diagrama.

![\[A hierarquia da configuração de ImageCriteria de AMIs Permitidas.\]](http://docs.aws.amazon.com/pt_br/AWSEC2/latest/UserGuide/images/ami_allowed-amis-imagecriteria.png)


A configuração tem três níveis:
+ **1** – valores dos parâmetros
  + Parâmetros com vários valores:
    + `ImageProviders`
    + `ImageNames`
    + `MarketplaceProductCodes`

      Uma AMI pode atender a *qualquer* valor dentro de um parâmetro para ser permitida.

      Exemplo: `ImageProviders` = `amazon` **OU** conta `111122223333` **OU** conta `444455556666` (a lógica de avaliação de valores dos parâmetros não é mostrada no diagrama.)
  + Parâmetros de valor único:
    + `CreationDateCondition`
    + `DeprecationTimeCondition`
+ **2**: `ImageCriterion`
  + Agrupa vários parâmetros com a lógica **E**.
  + Uma AMI deve atender a *todos* os parâmetros dentro de um `ImageCriterion` para ser permitida.
  + Exemplo: `ImageProviders` = `amazon` **E** `CreationDateCondition` = 300 dias ou menos
+ **3**: `ImageCriteria`
  + Agrupa vários `ImageCriterion` com a lógica **OU**.
  + Uma AMI pode atender a *qualquer* `ImageCriterion` para ser permitida.
  + Forma a configuração completa em relação à qual as AMIs são avaliadas. 

**Topics**
+ [Parâmetros de AMIs permitidas](#allowed-amis-criteria)
+ [Configuração de AMIs permitidas](#allowed-amis-json-configuration)
+ [Como os critérios são avaliados](#how-allowed-amis-criteria-are-evaluated)
+ [Limites](#allowed-amis-json-configuration-limits)
+ [Operações de AMIs permitidas](#allowed-amis-operations)

### Parâmetros de AMIs permitidas
<a name="allowed-amis-criteria"></a>

Os seguintes parâmetros podem ser configurados para criar `ImageCriterion`:

`ImageProviders`  
Os provedores de AMIs cujas AMIs são permitidas.  
Os valores válidos são aliases definidos pela AWS, e IDs de Conta da AWS, da seguinte forma:  
+ `amazon`: um alias que identifica as AMIs criadas pela Amazon ou por provedores verificados
+ `aws-marketplace`: um alias que identifica AMIs criadas por provedores verificados no AWS Marketplace
+ `aws-backup-vault`: um alias que identifica AMIs de backup que residem em contas do cofre de backup da AWS logicamente isoladas. Se você usar o atributo de cofre logicamente isolado de backup da AWS, certifique-se de que esse alias esteja incluído como provedor de AMI.
+ IDs de Conta da AWS: um ou mais IDs de Conta da AWS de 12 dígitos
+ `none`: indica que somente as AMIs criadas pela sua conta podem ser descobertas e usadas. AMIs públicas ou compartilhadas não podem ser descobertas e usadas. Quando especificado, nenhum outro critério pode ser especificado.

`ImageNames`  
Os nomes das AMIs permitidas, usando correspondências exatas ou curingas (`?` ou `*`).

`MarketplaceProductCodes`  
Os códigos de produto do AWS Marketplace para as AMIs permitidas.

`CreationDateCondition`  
A idade máxima das AMIs permitidas.

`DeprecationTimeCondition`  
O período máximo desde a obsolescência para as AMIs permitidas.

Para ver os valores e as restrições válidas para cada critério, consulte [ImageCriterionRequest](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ImageCriterionRequest.html) na *Amazon EC2 API Reference*.

### Configuração de AMIs permitidas
<a name="allowed-amis-json-configuration"></a>

A configuração básica das AMIs permitidas é a configuração de `ImageCriteria` que define os critérios para as AMIs permitidas. A seguinte estrutura JSON mostra os parâmetros que podem ser especificados:

```
{
    "State": "enabled" | "disabled" | "audit-mode",  
    "ImageCriteria" : [
        {
            "ImageProviders": ["string",...],
            "MarketplaceProductCodes": ["string",...],           
            "ImageNames":["string",...],
            "CreationDateCondition" : {
                "MaximumDaysSinceCreated": integer
            },
            "DeprecationTimeCondition" : {
                "MaximumDaysSinceDeprecated": integer
            }
         },
         ...
}
```

#### Exemplo de ImageCriteria
<a name="allowed-amis-json-configuration-example"></a>

O exemplo de `ImageCriteria` a seguir configura quatro `ImageCriterion`. Uma AMI será permitida se atender a um desses `ImageCriterion`. Para obter informações sobre como os critérios são avaliados, consulte [Como os critérios são avaliados](#how-allowed-amis-criteria-are-evaluated).

```
{
    "ImageCriteria": [
        // ImageCriterion 1: Allow AWS Marketplace AMIs with product code "abcdefg1234567890"
        {
            "MarketplaceProductCodes": [
                "abcdefg1234567890"
            ]
        },
        // ImageCriterion 2: Allow AMIs from providers whose accounts are
        // "123456789012" OR "123456789013" AND AMI age is less than 300 days
        {
            "ImageProviders": [
                "123456789012",
                "123456789013"
            ],
            "CreationDateCondition": {
                "MaximumDaysSinceCreated": 300
            }
        },
        // ImageCriterion 3: Allow AMIs from provider whose account is "123456789014" 
        // AND with names following the pattern "golden-ami-*"
        {
            "ImageProviders": [
                "123456789014"
            ],
            "ImageNames": [
                "golden-ami-*"
            ]
        },
        // ImageCriterion 4: Allow AMIs from Amazon or verified providers 
        // AND which aren't deprecated
        {
            "ImageProviders": [
                "amazon"
            ],
            "DeprecationTimeCondition": {
                "MaximumDaysSinceDeprecated": 0
            }
        }
    ]
}
```

### Como os critérios são avaliados
<a name="how-allowed-amis-criteria-are-evaluated"></a>

A seguinte tabela explica as regras de avaliação que determinam se uma AMI é permitida, mostrando como o operador `AND` ou `OR` é aplicado em cada nível:


| Nível de avaliação | Operador | Requisito para ser uma AMI permitida | 
| --- | --- | --- | 
| Valores de parâmetros para ImageProviders, ImageNames e MarketplaceProductCodes | OR | A AMI deve atender a pelo menos um valor de cada lista de parâmetros | 
| ImageCriterion | AND | A AMI deve atender a todos os parâmetros de cada ImageCriterion | 
| ImageCriteria | OR | A AMI deve atender a um dos ImageCriterion | 

Usando as regras de avaliação anteriores, vamos ver como aplicá-las ao [Exemplo de ImageCriteria](#allowed-amis-json-configuration-example):
+ `ImageCriterion` 1: permite AMIs que tenham o código de produto de AWS Marketplace `abcdefg1234567890`

  `OR`
+ `ImageCriterion` 2: permite AMIs que atendam a estes dois critérios:
  + Pertencente à conta `123456789012` `OR` `123456789013`
    + `AND`
  + Criada nos últimos 300 dias

  `OR`
+ `ImageCriterion` 3: permite AMIs que atendam a estes dois critérios:
  + Pertencente à conta `123456789014`
    + `AND`
  + Nomeada com o padrão `golden-ami-*`

  `OR`
+ `ImageCriterion` 4: permite AMIs que atendam a estes dois critérios:
  + Publicada pela Amazon ou por fornecedores verificados (especificado pelo alias `amazon`)
    + `AND`
  + Não obsoletas (o número máximo de dias desde a obsolescência é `0`)

### Limites
<a name="allowed-amis-json-configuration-limits"></a>

O `ImageCriteria` podem incluir até:
+ 10 `ImageCriterion`

Cada `ImageCriterion` pode incluir até:
+ 200 valores para `ImageProviders`
+ 50 valores para `ImageNames` 
+ 50 valores para `MarketplaceProductCodes` 

**Exemplo de limites**

Usando o [Exemplo de ImageCriteria](#allowed-amis-json-configuration-example) anterior:
+ Existem 4 `ImageCriterion`. Podem ser adicionados até 6 à solicitação para atingir o limite de 10.
+ No primeiro `ImageCriterion`, há 1 valor para `MarketplaceProductCodes`. Podem ser adicionados até 49 a esse `ImageCriterion` para atingir o limite de 50.
+ No segundo `ImageCriterion`, há 2 valores para `ImageProviders`. Podem ser adicionados até 198 a esse `ImageCriterion` para atingir o limite de 200.
+ No terceiro `ImageCriterion`, há 1 valor para `ImageNames`. Podem ser adicionados até 49 a esse `ImageCriterion` para atingir o limite de 50.

### Operações de AMIs permitidas
<a name="allowed-amis-operations"></a>

O atributo AMIs permitidas tem três estados operacionais para gerenciamento dos critérios de imagem: **habilitado**, **desabilitado** e **modo de auditoria**. Esses modos permitem que você habilite ou desabilite os critérios de imagem, ou os revise conforme necessário.

**Habilitado**

Quando as AMIs permitidas estão habilitadas: 
+ Os `ImageCriteria` são aplicados.
+ Somente as AMIs permitidas podem ser descobertas no console do EC2 e por APIs que usam imagens (por exemplo, que descrevem, copiam, armazenam ou executam outras ações que usam imagens).
+ As instâncias só podem ser iniciadas usando AMIs permitidas.

**Desabilitado**

Quando as AMIs permitidas estão desabilitadas: 
+ As `ImageCriteria` não são aplicadas.
+ Nenhuma restrição é imposta à descoberta ou ao uso da AMI. 

**Modo de auditoria**

 No modo de auditoria:
+ Os `ImageCriteria` são aplicados, mas nenhuma restrição é imposta à descoberta ou ao uso da AMI.
+ No console do EC2, para cada AMI, o campo **Imagem permitida** exibe **Sim** ou **Não** para indicar se a AMI será detectável e estará disponível para os usuários na conta quando AMIs permitidas estiver habilitado.
+ Na linha de comando, a resposta para a operação `describe-image` inclui `"ImageAllowed": true` ou `"ImageAllowed": false` para indicar se a AMI será detectável e estará disponível para os usuários na conta quando AMIs permitidas estiver habilitado.
+ No console do EC2, o Catálogo de AMIs exibirá **Não permitido** ao lado de AMIs que não serão detectáveis ou estarão disponíveis para os usuários na conta quando AMIs permitidas estiver habilitado.

## Práticas recomendadas para a implementação de AMIs permitidas
<a name="best-practice-for-implementing-allowed-amis"></a>

Ao implementar AMIs permitidas, considere estas práticas recomendadas para garantir uma transição tranquila e minimizar possíveis interrupções em seu ambiente da AWS.

1. **Habilitar o modo de auditoria**

   Comece ativando AMIs permitidas no modo de auditoria. Esse estado permite que você veja quais são as AMIs que seriam afetadas por seus critérios sem realmente restringir o acesso, fornecendo um período de avaliação sem riscos.

1. **Definir critérios de AMIs permitidas**

   Estabeleça cuidadosamente quais provedores de AMI estão alinhados com as políticas de segurança, os requisitos de conformidade e as necessidades operacionais da sua organização.
**nota**  
Ao usar serviços gerenciados da AWS, como Amazon ECS ou o Amazon EKS ou as instâncias gerenciadas do AWS Lambda, recomendamos especificar o alias da `amazon` para permitir as AMIs criadas pela AWS. Esses serviços dependem das AMIs publicadas pela Amazon para iniciar instâncias.   
Tenha cuidado ao definir restrições de `CreationDateCondition` para as AMIs. Definir condições de data excessivamente restritivas (por exemplo, as AMIs devem ter menos de 5 dias) pode causar falhas na inicialização da instância se as AMIs da AWS ou de outros provedores não forem atualizadas dentro do prazo especificado.  
Recomendamos emparelhar `ImageNames` com `ImageProviders` para ter mais controle e especificidade. O uso de `ImageNames` sozinho pode não identificar exclusivamente uma AMI.

1. **Verificar o impacto nos processos de negócios esperados**

   É possível usar o console ou a CLI para identificar instâncias que foram iniciadas com AMIs e que não atendem aos critérios especificados. Essas informações podem orientar sua decisão de atualizar suas configurações de inicialização para usar AMIs em conformidade (por exemplo, especificar uma AMI diferente em um modelo de inicialização) ou ajustar seus critérios para permitir essas AMIs.

   Console: use a regra [ec2-instance-launched-with-allowed-ami](https://docs.aws.amazon.com/config/latest/developerguide/ec2-instance-launched-with-allowed-ami.html) do AWS Config para verificar se as instâncias em execução ou paradas foram iniciadas com AMIs que atendem aos seus critérios de AMIs permitidas. A regra é **NON\$1COMPLIANT** quando uma AMI não atende aos critérios de AMIs permitidas e **COMPLIANT** quando atende. A regra apenas funciona quando a configuração de AMIs permitidas está definida como **habilitada** ou **modo de auditoria**.

   CLI: execute o comando [describe-instance-image-metadata](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instance-image-metadata.html) e filtre a resposta para identificar quaisquer instâncias que foram iniciadas com AMIs que não atendem aos critérios especificados.

   Para obter instruções sobre o console e a CLI, consulte [Encontrar instâncias inicializadas de AMIs que não são permitidas](manage-settings-allowed-amis.md#identify-instances-with-allowed-AMIs).

1. **Habilitar AMIs permitidas**

   Depois de confirmar que os critérios não afetarão de forma adversa os processos de negócios esperados, habilite AMIs permitidas.

1. **Monitorar as execuções de instâncias**

   Continue monitorando as execuções de instâncias a partir de AMIs em ssuas aplicações e nos serviços da AWS gerenciados que você usa, como o Amazon EMR, Amazon ECR, Amazon EKS e AWS Elastic Beanstalk. Verifique se há problemas inesperados e faça os ajustes necessários nos critérios de AMIs permitidas.

1. **Testar novas AMIs**

   Para testar AMIs de terceiros que não estejam em conformidade com suas configurações atuais de AMIs permitidas, a AWS recomenda as abordagens a seguir:
   + Use uma Conta da AWS separada: crie uma conta sem acesso aos recursos essenciais para os seus negócios. Garanta que a configuração de AMIs permitidas não esteja habilitada nessa conta ou que as AMIs que você deseja testar sejam explicitamente permitidas, para que você possa testá-las. 
   + Teste em outra Região da AWS: use uma região em que as AMIs de terceiros estejam disponíveis, mas em que você ainda não tenha habilitado as configurações de AMIs permitidas. 

   Essas abordagens ajudam a garantir que seus recursos essenciais para os negócios permaneçam seguros durante o teste de novas AMIs.

## Permissões obrigatórias do IAM
<a name="iam-permissions-for-allowed-amis"></a>

Para usar o atributo de AMIs permitidas, você precisa das seguintes permissões do IAM:
+ `GetAllowedImagesSettings`
+ `EnableAllowedImagesSettings`
+ `DisableAllowedImagesSettings`
+ `ReplaceImageCriteriaInAllowedImagesSettings`

# Gerenciar as configurações de AMIs permitidas
<a name="manage-settings-allowed-amis"></a>

É possível gerenciar as configurações de AMIs permitidas. Essas configurações são por região, por conta.

**Topics**
+ [Habilitar AMIs permitidas](#enable-allowed-amis-criteria)
+ [Definir os critérios de AMIs permitidas](#update-allowed-amis-criteria)
+ [Desabilitar AMIs permitidas](#disable-allowed-amis-criteria)
+ [Obter os critérios de AMIs permitidas](#identify-allowed-amis-state-and-criteria)
+ [Localizar AMIs que são permitidas](#identify-amis-that-meet-allowed-amis-criteria)
+ [Encontrar instâncias inicializadas de AMIs que não são permitidas](#identify-instances-with-allowed-AMIs)

## Habilitar AMIs permitidas
<a name="enable-allowed-amis-criteria"></a>

É possível habilitar AMIs permitidas e especificar critérios para AMIs permitidas. Recomendamos que você comece no modo de auditoria, que mostra quais AMIs seriam afetadas pelos critérios sem realmente restringir o acesso.

------
#### [ Console ]

**Para habilitar AMIs permitidas**

1. Abra o console do Amazon EC2 em [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. No painel de navegação, escolha **Painel**.

1. No cartão **Atributos da conta**, em **Configurações**, escolha **AMIs permitidas**.

1. Na guia **AMIs permitidas**, escolha **Gerenciar**.

1. Em **Configurações de AMIs permitidas**, escolha **Modo de auditoria** ou **Habilitado**. Recomendamos que você comece no modo de auditoria, teste os critérios e retorne a essa etapa para habilitar as AMIs permitidas.

1. (Opcional) Em **Critérios de AMI**, verifique os critérios no formato JSON.

1. Selecione **Atualizar**.

------
#### [ AWS CLI ]

**Para habilitar AMIs permitidas**  
Use o comando [enable-allowed-images-settings](https://docs.aws.amazon.com/cli/latest/reference/ec2/enable-allowed-images-settings.html).

```
aws ec2 enable-allowed-images-settings --allowed-images-settings-state enabled
```

Para habilitar o modo de auditoria em vez disso, especifique `audit-mode` em vez de `enabled`.

```
aws ec2 enable-allowed-images-settings --allowed-images-settings-state audit-mode
```

------
#### [ PowerShell ]

**Para habilitar AMIs permitidas**  
Use o cmdlet [Enable-EC2AllowedImagesSetting](https://docs.aws.amazon.com/powershell/latest/reference/items/Enable-EC2AllowedImagesSetting.html).

```
Enable-EC2AllowedImagesSetting -AllowedImagesSettingsState enabled
```

Para habilitar o modo de auditoria em vez disso, especifique `audit-mode` em vez de `enabled`.

```
Enable-EC2AllowedImagesSetting -AllowedImagesSettingsState audit-mode
```

------

## Definir os critérios de AMIs permitidas
<a name="update-allowed-amis-criteria"></a>

Depois de habilitar as AMIs permitidas, será possível definir ou substituir os critérios de AMIs permitidas.

Para obter a configuração correta e valores válidos, consulte [Configuração de AMIs permitidas](ec2-allowed-amis.md#allowed-amis-json-configuration) e [Parâmetros de AMIs permitidas](ec2-allowed-amis.md#allowed-amis-criteria).

------
#### [ Console ]

**Para definir os critérios de AMIs permitidas**

1. Abra o console do Amazon EC2 em [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. No painel de navegação, escolha **Painel**.

1. No cartão **Atributos da conta**, em **Configurações**, escolha **AMIs permitidas**.

1. Na guia **AMIs permitidas**, escolha **Gerenciar**.

1. Em **Critérios de AMI**, verifique os critérios no formato JSON.

1. Selecione **Atualizar**.

------
#### [ AWS CLI ]

**Para definir os critérios de AMIs permitidas**  
Use o comando [replace-image-criteria-in-allowed-images-settings](https://docs.aws.amazon.com/cli/latest/reference/ec2/replace-image-criteria-in-allowed-images-settings.html) e especifique o arquivo JSON que contém os critérios para AMIs permitidas.

```
aws ec2 replace-image-criteria-in-allowed-images-settings --cli-input-json file://file_name.json
```

------
#### [ PowerShell ]

**Para definir os critérios de AMIs permitidas**  
Use o cmdlet [Set-EC2ImageCriteriaInAllowedImagesSetting](https://docs.aws.amazon.com/powershell/latest/reference/items/Set-EC2ImageCriteriaInAllowedImagesSetting.html) e especifique o arquivo JSON que contém os critérios para AMIs permitidas.

```
$imageCriteria = Get-Content -Path .\file_name.json | ConvertFrom-Json
Set-EC2ImageCriteriaInAllowedImagesSetting -ImageCriterion $imageCriteria
```

------

## Desabilitar AMIs permitidas
<a name="disable-allowed-amis-criteria"></a>

É possível desabilitar as AMIs permitidas da seguinte maneira.

------
#### [ Console ]

**Para desabilitar AMIs permitidas**

1. Abra o console do Amazon EC2 em [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. No painel de navegação, escolha **Painel**.

1. No cartão **Atributos da conta**, em **Configurações**, escolha **AMIs permitidas**.

1. Na guia **AMIs permitidas**, escolha **Gerenciar**.

1. Em **Configurações de AMIs permitidas**, escolha **Desabilitado**.

1. Selecione **Atualizar**.

------
#### [ AWS CLI ]

**Para desabilitar AMIs permitidas**  
Use o comando [disable-allowed-images-settings](https://docs.aws.amazon.com/cli/latest/reference/ec2/disable-allowed-images-settings.html).

```
aws ec2 disable-allowed-images-settings
```

------
#### [ PowerShell ]

**Para desabilitar AMIs permitidas**  
Use o cmdlet [Disable-EC2AllowedImagesSetting](https://docs.aws.amazon.com/powershell/latest/reference/items/Disable-EC2AllowedImagesSetting.html).

```
Disable-EC2AllowedImagesSetting
```

------

## Obter os critérios de AMIs permitidas
<a name="identify-allowed-amis-state-and-criteria"></a>

É possível obter o estado atual da configuração de AMIs permitidas e os critérios de AMIs permitidas.

------
#### [ Console ]

**Para obter o estado e os critérios das AMIs permitidas**

1. Abra o console do Amazon EC2 em [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. No painel de navegação, escolha **Painel**.

1. No cartão **Atributos da conta**, em **Configurações**, escolha **AMIs permitidas**.

1. Na guia **AMIs permitidas**, as **Configurações de AMIs permitidas** estarão definidas como **Habilitado**, **Desabilitado** ou **Modo de auditoria**.

1. Se o estado das AMIs permitidas for **Habilitado** ou **Modo de auditoria**, os **Critérios da AMI** exibirão os critérios da AMI no formato JSON.

------
#### [ AWS CLI ]

**Para obter o estado e os critérios das AMIs permitidas**  
Use o comando [get-allowed-images-settings](https://docs.aws.amazon.com/cli/latest/reference/ec2/get-allowed-images-settings.html).

```
aws ec2 get-allowed-images-settings
```

Na exemplo de saída a seguir, o estado é `audit-mode` e os critérios de imagem são definidos na conta.

```
{
    "State": "audit-mode",
    "ImageCriteria": [
        {
            "MarketplaceProductCodes": [
                "abcdefg1234567890"
            ]
        },
        {
            "ImageProviders": [
                "123456789012",
                "123456789013"
            ],
            "CreationDateCondition": {
                "MaximumDaysSinceCreated": 300
            }
        },
        {
            "ImageProviders": [
                "123456789014"
            ],
            "ImageNames": [
                "golden-ami-*"
            ]
        },
        {
            "ImageProviders": [
                "amazon"
            ],
            "DeprecationTimeCondition": {
                "MaximumDaysSinceDeprecated": 0
            }
        }
    ],
    "ManagedBy": "account"
}
```

------
#### [ PowerShell ]

**Para obter o estado e os critérios das AMIs permitidas**  
Use o cmdlet [Get-EC2AllowedImagesSetting](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2AllowedImagesSetting.html).

```
Get-EC2AllowedImagesSetting | Select-Object `
    State, `
    ManagedBy, `
    @{Name='ImageProviders'; Expression={($_.ImageCriteria.ImageProviders)}}, `
    @{Name='MarketplaceProductCodes'; Expression={($_.ImageCriteria.MarketplaceProductCodes)}}, `
    @{Name='ImageNames'; Expression={($_.ImageCriteria.ImageNames)}}, `
    @{Name='MaximumDaysSinceCreated'; Expression={($_.ImageCriteria.CreationDateCondition.MaximumDaysSinceCreated)}}, `
    @{Name='MaximumDaysSinceDeprecated'; Expression={($_.ImageCriteria.DeprecationTimeCondition.MaximumDaysSinceDeprecated)}}
```

Na exemplo de saída a seguir, o estado é `audit-mode` e os critérios de imagem são definidos na conta.

```
State      : audit-mode
ManagedBy  : account
ImageProviders            : {123456789012, 123456789013, 123456789014, amazon}
MarketplaceProductCodes   : {abcdefg1234567890}
ImageNames                : {golden-ami-*}
MaximumDaysSinceCreated  : 300
MaximumDaysSinceDeprecated: 0
```

------

## Localizar AMIs que são permitidas
<a name="identify-amis-that-meet-allowed-amis-criteria"></a>

É possível encontrar as AMIs que são permitidas ou não são permitidas pelos critérios atuais de AMIs permitidas.

**nota**  
As AMIs permitidas precisam estar no modo de auditoria.

------
#### [ Console ]

**Para identificar se uma AMI atende aos critérios de AMIs permitidas**

1. Abra o console do Amazon EC2 em [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. No painel de navegação, selecione **AMIs**.

1. Selecione a AMI.

1. Na guia **Detalhes** (se você marcou a caixa de seleção) ou na área de resumo (se você selecionou o ID da AMI), encontre o campo **Imagem permitida**.
   + **Sim**: a AMI atende aos critérios de AMIs permitidas. Essa AMI estará disponível para os usuários em sua conta depois que você habilitar as AMIs permitidas.
   + **Não**: a AMI não atende aos critérios de AMIs permitidas.

1. No painel de navegação, escolha **AMI Catalog** (Catálogo de AMIs).

   Uma AMI marcada como **Não permitida** indica uma AMI que não atende aos critérios de AMIs permitidas. Essa AMI não estará visível ou disponível para os usuários em sua conta quando as AMIs permitidas estiverem habilitadas.

------
#### [ AWS CLI ]

**Para identificar se uma AMI atende aos critérios de AMIs permitidas**  
Use o comando [describe-images](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-images.html).

```
aws ec2 describe-images \
    --image-id ami-0abcdef1234567890 \
    --query Images[].ImageAllowed \
    --output text
```

O seguinte é um exemplo de saída.

```
True
```

**Para encontrar AMIs que atendam aos critérios de AMIs permitidas**  
Use o comando [describe-images](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-images.html).

```
aws ec2 describe-images \
    --filters "Name=image-allowed,Values=true" \
    --max-items 10 \
    --query Images[].ImageId
```

O seguinte é um exemplo de saída.

```
ami-000eaaa8be2fd162a
ami-000f82db25e50de8e
ami-000fc21eb34c7a9a6
ami-0010b876f1287d7be
ami-0010b929226fe8eba
ami-0010957836340aead
ami-00112c992a47ba871
ami-00111759e194abcc1
ami-001112565ffcafa5e
ami-0011e45aaee9fba88
```

------
#### [ PowerShell ]

**Para identificar se uma AMI atende aos critérios de AMIs permitidas**  
Use o cmdlet [Get-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Image.html).

```
(Get-EC2Image -ImageId ami-0abcdef1234567890).ImageAllowed
```

O seguinte é um exemplo de saída.

```
True
```

**Para encontrar AMIs que atendam aos critérios de AMIs permitidas**  
Use o cmdlet [Get-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Image.html).

```
Get-EC2Image `
    -Filter @{Name="image-allows";Values="true"} `
    -MaxResult 10 | `
    Select ImageId
```

O seguinte é um exemplo de saída.

```
ami-000eaaa8be2fd162a
ami-000f82db25e50de8e
ami-000fc21eb34c7a9a6
ami-0010b876f1287d7be
ami-0010b929226fe8eba
ami-0010957836340aead
ami-00112c992a47ba871
ami-00111759e194abcc1
ami-001112565ffcafa5e
ami-0011e45aaee9fba88
```

------

## Encontrar instâncias inicializadas de AMIs que não são permitidas
<a name="identify-instances-with-allowed-AMIs"></a>

É possível identificar as instâncias que foram iniciadas com uma AMI que não atende aos critérios de AMIs permitidas.

------
#### [ Console ]

**Para verificar se uma instância foi iniciada usando uma AMI que não é permitida**

1. Abra o console do Amazon EC2 em [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. No painel de navegação, escolha **Instances (Instâncias)**.

1. Selecione a instância.

1. Na guia **Detalhes**, em **Detalhes da instância**, encontre **Imagem permitida**.
   + **Sim**: a AMI atende aos critérios de AMIs permitidas.
   + **Não**: a AMI não atende aos critérios de AMIs permitidas.

------
#### [ AWS CLI ]

**Para encontrar instâncias inicializadas usando AMIs que não são permitidas**  
Use o comando [describe-instance-image-metadata](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instance-image-metadata.html) com o filtro `image-allowed`.

```
aws ec2 describe-instance-image-metadata \
    --filters "Name=image-allowed,Values=false" \
    --query "InstanceImageMetadata[*].[InstanceId,ImageMetadata.ImageId]" \
    --output table
```

O seguinte é um exemplo de saída.

```
--------------------------------------------------
|          DescribeInstanceImageMetadata         |
+----------------------+-------------------------+
|  i-08fd74f3f1595fdbd |  ami-09245d5773578a1d6  |
|  i-0b1bf24fd4f297ab9 |  ami-07cccf2bd80ed467f  |
|  i-026a2eb590b4f7234 |  ami-0c0ec0a3a3a4c34c0  |
|  i-006a6a4e8870c828f |  ami-0a70b9d193ae8a799  |
|  i-0781e91cfeca3179d |  ami-00c257e12d6828491  |
|  i-02b631e2a6ae7c2d9 |  ami-0bfddf4206f1fa7b9  |
+----------------------+-------------------------+
```

------
#### [ PowerShell ]

**Para encontrar instâncias inicializadas usando AMIs que não são permitidas**  
Use o cmdlet [Get-EC2InstanceImageMetadata](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2InstanceImageMetadata.html).

```
Get-EC2InstanceImageMetadata `
    -Filter @{Name="image-allowed";Values="false"} | `
    Select InstanceId, @{Name='ImageId'; Expression={($_.ImageMetadata.ImageId)}}
```

O seguinte é um exemplo de saída.

```
InstanceId          ImageId
----------          -------
i-08fd74f3f1595fdbd ami-09245d5773578a1d6
i-0b1bf24fd4f297ab9 ami-07cccf2bd80ed467f
i-026a2eb590b4f7234 ami-0c0ec0a3a3a4c34c0
i-006a6a4e8870c828f ami-0a70b9d193ae8a799
i-0781e91cfeca3179d ami-00c257e12d6828491
i-02b631e2a6ae7c2d9 ami-0bfddf4206f1fa7b9
```

------
#### [ AWS Config ]

É possível adicionar a regra **ec2-instance-launched-with-allowed-ami** do AWS Config, configurá-la de acordo com seus requisitos e usá-la para avaliar suas instâncias.

Para obter mais informações, consulte [Adicionar regras do AWS Config](https://docs.aws.amazon.com/config/latest/developerguide/evaluate-config_add-rules.html) e [ec2-instance-launched-with-allowed-ami](https://docs.aws.amazon.com/config/latest/developerguide/ec2-instance-launched-with-allowed-ami.html) no *Guia do desenvolvedor do AWS Config*.

------

# Disponibilizar publicamente sua AMI para uso no Amazon EC2
<a name="sharingamis-intro"></a>

É possível tornar sua AMI disponível publicamente compartilhando-a com todos os Contas da AWS.

Se você quiser impedir o compartilhamento público de suas AMIs, você pode habilitar o *bloqueio de acesso público para AMIs*. Isso bloqueia qualquer tentativa de tornar uma AMI pública, ajudando a evitar acesso não autorizado e possível uso indevido dos dados da AMI. Observe que habilitar o bloqueio de acesso público não afeta as AMIs que já estão publicamente disponíveis; elas permanecem publicamente acessíveis. Para obter mais informações, consulte [Saiba mais sobre o bloqueio de acesso público para AMIs](block-public-access-to-amis.md).

Para permitir que apenas contas específicas usem sua AMI para iniciar instâncias, consulte [Compartilhar uma AMI com contas específicas da AWS](sharingamis-explicit.md).

**Topics**
+ [Considerações](#considerations-for-sharing-public-AMIs)
+ [Compartilhe uma AMI com todas as AWS contas (compartilhe publicamente)](#share-an-ami-publicly)

## Considerações
<a name="considerations-for-sharing-public-AMIs"></a>

Considere as informações a seguir antes de tornar uma AMI pública.
+ **Propriedade**: para tornar uma AMI pública, sua Conta da AWS deve ser proprietária da AMI.
+ **Region**: as AMIs são um recurso regional. Quando você compartilha uma AMI, ela só está disponível na região de onde foi compartilhada. Para disponibilizar uma AMI em uma região diferente, copie a AMI para a região e compartilhe-a. Para obter mais informações, consulte [Copiar uma AMI do Amazon EC2](CopyingAMIs.md).
+ **Bloquear o acesso público** — Para compartilhar publicamente uma AMI, o [bloqueio do acesso público para AMIs](block-public-access-to-amis.md) deve ser desativado em cada região na qual a AMI será compartilhada publicamente. Depois de compartilhar publicamente a AMI, você pode reativar o bloqueio do acesso público para AMIs para evitar mais compartilhamentos públicos de suas AMIs.
+ **Algumas AMIs não podem ser tornadas públicas**: se sua AMI tiver um dos seguintes componentes, você não poderá torná-la pública (mas poderá [compartilhar a AMI com Contas da AWS específicas](sharingamis-explicit.md)):
  + Volumes criptografados
  + Snapshots de volumes criptografados
  + Códigos do produto
+ **Evite a exposição de dados confidenciais**: para evitar expor dados confidenciais ao compartilhar uma AMI, leia as considerações de segurança em [Recomendações para criar AMIs compartilhadas no Linux](building-shared-amis.md) e siga as ações recomendadas.
+ **Uso**: quando você compartilha uma AMI, os usuários podem apenas iniciar instâncias pela AMI. Eles não podem excluí-la, compartilhá-la nem modificá-la. Porém, após iniciarem uma instância usando sua AMI, poderão criar uma AMI com base na instância que iniciaram.
+ **Descontinuação automática**: por padrão, a data de descontinuação de todas as AMIs públicas é definida como dois anos após a data de criação da AMI. É possível definir a data de descontinuação para antes de dois anos. Para cancelar a data de descontinuação ou adiá-la para uma data posterior, você deve tornar a AMI privada [compartilhando-a somente com Contas da AWS específicas](sharingamis-explicit.md).
+ **Remoção de AMIs obsoletas**: depois que uma AMI pública atinge a data de descontinuação, se novas instâncias não forem iniciadas usando a AMI por seis meses ou mais, a AWS eventualmente remove a propriedade de compartilhamento público para que as AMIs obsoletas não apareçam nas listas de AMI públicas.
+ **Faturamento**: você não é cobrado quando sua AMI é usada por outras Contas da AWS para executar instâncias. As contas que iniciam instâncias usando a AMI são cobradas pelas instâncias que iniciam.

## Compartilhe uma AMI com todas as AWS contas (compartilhe publicamente)
<a name="share-an-ami-publicly"></a>

Depois de tornar uma AMI pública, ela fica disponível nas **AMIs da comunidade** no console, que você pode acessar no **catálogo da AMI** no navegador esquerdo do console do EC2 ou ao iniciar uma instância usando o console. Observe que pode demorar um pouco para a AMI aparecer em **AMIs da comunidade** depois de você torná-la pública. 

------
#### [ Console ]

**Para tornar um AMI pública**

1. Abra o console do Amazon EC2 em [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. No painel de navegação, selecione **AMIs**.

1. Selecione a AMI na lista e escolha **Actions** (Ações), **Edit AMI permissions** (Editar permissões de AMI).

1. Em **AMI availability** (Disponibilidade da AMI), escolha **Public** (Pública).

1. Escolha **Save changes**.

------
#### [ AWS CLI ]

Cada AMI tem uma propriedade `launchPermission` que controla quais Contas da AWS, além do proprietário, têm permissão para usar essa AMI para executar instâncias. Ao modificar a propriedade `launchPermission` da AMI, é possível torná-la pública (o que concede permissões de execução a todas as Contas da AWS) ou compartilhá-la somente com as Contas da AWS que você especificar.

É possível adicionar ou remover os IDs da lista de contas que tiverem permissões de execução para uma AMI. Para tornar a AMI pública, especifique o grupo `all`. É possível especificar permissões públicas e permissões de execução explícita.

**Para tornar um AMI pública**

1. Use o comando [https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-image-attribute.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-image-attribute.html) da seguinte forma para adicionar o grupo `all` à lista `launchPermission` para a AMI especificada.

   ```
   aws ec2 modify-image-attribute \
       --image-id ami-0abcdef1234567890 \
       --launch-permission "Add=[{Group=all}]"
   ```

1. Para verificar as permissões de execução da AMI, use o comando [https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-image-attribute.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-image-attribute.html).

   ```
   aws ec2 describe-image-attribute \
       --image-id ami-0abcdef1234567890 \
       --attribute launchPermission
   ```

1. (Opcional) Para tornar a AMI privada novamente, remova o grupo `all` de suas permissões de execução. Observe que o proprietário da AMI sempre tem permissões de execução e, portanto, não é afetado por este comando.

   ```
   aws ec2 modify-image-attribute \
       --image-id ami-0abcdef1234567890 \
       --launch-permission "Remove=[{Group=all}]"
   ```

------
#### [ PowerShell ]

Cada AMI tem uma propriedade `launchPermission` que controla quais Contas da AWS, além do proprietário, têm permissão para usar essa AMI para executar instâncias. Ao modificar a propriedade `launchPermission` da AMI, é possível torná-la pública (o que concede permissões de execução a todas as Contas da AWS) ou compartilhá-la somente com as Contas da AWS que você especificar.

É possível adicionar ou remover os IDs da lista de contas que tiverem permissões de execução para uma AMI. Para tornar a AMI pública, especifique o grupo `all`. É possível especificar permissões públicas e permissões de execução explícita.

**Para tornar um AMI pública**

1. Use o comando [https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2ImageAttribute.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2ImageAttribute.html) da seguinte forma para adicionar o grupo `all` à lista `launchPermission` para a AMI especificada.

   ```
   Edit-EC2ImageAttribute `
       -ImageId ami-0abcdef1234567890 `
       -Attribute launchPermission `
       -OperationType add `
       -UserGroup all
   ```

1. Para verificar as permissões de execução da AMI, use o seguinte comando [https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2ImageAttribute.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2ImageAttribute.html).

   ```
   Get-EC2ImageAttribute `
       -ImageId ami-0abcdef1234567890 `
       -Attribute launchPermission
   ```

1. (Opcional) Para tornar a AMI privada novamente, remova o grupo `all` de suas permissões de execução. Observe que o proprietário da AMI sempre tem permissões de execução e, portanto, não é afetado por este comando.

   ```
   Edit-EC2ImageAttribute `
       -ImageId ami-0abcdef1234567890 `
       -Attribute launchPermission `
       -OperationType remove `
       -UserGroup all
   ```

------

# Saiba mais sobre o bloqueio de acesso público para AMIs
<a name="block-public-access-to-amis"></a>

Para evitar o compartilhamento público de suas AMIs, habilite o *bloqueio de acesso público para AMIs* no nível da conta.

Quando o bloqueio de acesso público está habilitado, qualquer tentativa de tornar uma AMI pública é automaticamente bloqueada. Entretanto, se você já tiver AMIs públicas, elas permanecerão disponíveis publicamente.

Para compartilhar AMIs publicamente, é necessário desabilitar o bloqueio de acesso público. Quando você terminar de compartilhar, é uma prática recomendada reabilitar o bloqueio de acesso público para evitar qualquer compartilhamento público não intencional das suas AMIs. 

**nota**  
Essa configuração é definida no nível da conta, diretamente na conta ou usando uma política declarativa. Ela deve ser configurada em cada Região da AWS onde você desejar impedir o compartilhamento público de suas AMIs. O uso de uma política declarativa permite que você aplique a configuração em várias regiões simultaneamente, bem como em várias contas simultaneamente. Quando uma política declarativa está em uso, você não pode modificar a configuração diretamente em uma conta. Este tópico descreve como ajustar a configuração diretamente em uma conta. Para obter informações sobre o uso de políticas declarativas, consulte [Políticas declarativas](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_declarative.html) no *Guia do usuário do AWS Organizations*.

É possível restringir as permissões do IAM a um usuário administrador para que apenas essa pessoa possa habilitar ou desabilitar o bloqueio de acesso público para AMIs.

**Topics**
+ [Configurações padrão](#block-public-access-to-amis-default-settings)
+ [Gerenciar a configuração do bloqueio de acesso público para AMIs](manage-block-public-access-for-amis.md)

## Configurações padrão
<a name="block-public-access-to-amis-default-settings"></a>

A configuração **Bloquear acesso público para AMIs** está habilitada ou desabilitada por padrão, dependendo se sua conta for nova ou existente e se você tem AMIs públicas. A tabela abaixo mostra as configurações padrão:


| Conta da AWS | Configuração padrão de bloquear acesso público para AMIs | 
| --- | --- | 
| Novas contas | Habilitado | 
|  Contas existentes sem AMIs públicas¹  | Habilitado | 
|  Contas existentes com um ou mais AMIs públicas  | Desabilitado | 

¹ Se sua conta tinha uma ou mais AMIs públicas em ou após 15 de julho de 2023, a opção **Bloquear acesso público para AMIs** estará desabilitada por padrão, mesmo que você tenha posteriormente tornado todas as AMIs privadas.

# Gerenciar a configuração do bloqueio de acesso público para AMIs
<a name="manage-block-public-access-for-amis"></a>

É possível gerenciar a configuração de bloqueio de acesso público para suas AMIs para controlar se elas podem ser compartilhadas publicamente. É possível habilitar, desabilitar ou exibir o estado atual do bloqueio de acesso público para suas AMIs usando o console do Amazon EC2 ou a AWS CLI.

## Veja o estado do bloqueio de acesso público para AMIs
<a name="get-block-public-access-state-for-amis"></a>

Para ver se o compartilhamento público de suas AMIs está bloqueado em sua conta, você pode ver o estado do bloqueio de acesso público para AMIs. Você deve visualizar o estado em cada um Região da AWS no qual deseja ver se o compartilhamento público de suas AMIs está bloqueado.

**Permissões obrigatórias**  
Para obter a configuração atual do bloqueio de acesso público para AMIs, você deve ter a permissão `GetImageBlockPublicAccessState` do IAM.

------
#### [ Console ]

**Para visualizar o estado do bloqueio de acesso público para AMIs na região especificada**

1. Abra o console do Amazon EC2 em [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. Na barra de navegação (na parte superior da tela), selecione a região na qual deseja visualizar o estado de bloqueio de acesso público para AMIs. 

1. No painel de navegação, escolha **Painel**.

1. No cartão **Atributos da conta**, em **Configurações**, escolha **Proteção e segurança de dados**.

1. Em **Block public access for AMIs (Bloquear acesso público para AMIs)**, marque o campo **Public access (Acesso público)**. O valor é **New public sharing blocked (Novo compartilhamento público bloqueado)** ou **New public sharing allowed (Novo compartilhamento público permitido)**.

------
#### [ AWS CLI ]

**Para obter o estado do bloqueio de acesso público para as AMIs**  
Use o comando [get-image-block-public-access-state](https://docs.aws.amazon.com/cli/latest/reference/ec2/get-image-block-public-access-state.html). O valor é `block-new-sharing` ou `unblocked`.

**Exemplo: para uma região específica**

```
aws ec2 get-image-block-public-access-state --region us-east-1
```

O campo `ManagedBy` indica a entidade que definiu a configuração. Neste exemplo, `account` indica que a configuração foi definida diretamente na conta. Um valor de `declarative-policy` significaria que a configuração foi definida por uma política declarativa. Para obter mais informações, consulte [Políticas declarativas](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_declarative.html) no *Guia do Usuário do AWS Organizations*.

```
{
    "ImageBlockPublicAccessState": "block-new-sharing",
    "ManagedBy": "account"
}
```

**Exemplo: para todas as regiões em sua conta**

```
echo -e "Region   \t Public Access State" ; \
echo -e "-------------- \t ----------------------" ; \
for region in $(
    aws ec2 describe-regions \
        --region us-east-1 \
        --query "Regions[*].[RegionName]" \
        --output text
    ); 
    do (output=$(
        aws ec2 get-image-block-public-access-state \
            --region $region \
            --output text)
        echo -e "$region \t $output" 
    );
done
```

O seguinte é um exemplo de saída.

```
Region           Public Access State
--------------   ----------------------
ap-south-1       block-new-sharing
eu-north-1       unblocked
eu-west-3        block-new-sharing
...
```

------
#### [ PowerShell ]

**Para obter o estado do bloqueio de acesso público para as AMIs**  
Use o cmdlet [Get-EC2ImageBlockPublicAccessState](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2ImageBlockPublicAccessState.html). O valor é `block-new-sharing` ou `unblocked`.

**Exemplo: para uma região específica**

```
Get-EC2ImageBlockPublicAccessState -Region us-east-1
```

O seguinte é um exemplo de saída.

```
block-new-sharing
```

**Exemplo: para todas as regiões em sua conta**

```
(Get-EC2Region).RegionName | `
    ForEach-Object {
        [PSCustomObject]@{
            Region   = $_
            PublicAccessState = (Get-EC2ImageBlockPublicAccessState -Region $_)
        }
} | `
Format-Table -AutoSize
```

O seguinte é um exemplo de saída.

```
Region         PublicAccessState
------         -----------------
ap-south-1     block-new-sharing
eu-north-1     block-new-sharing
eu-west-3      block-new-sharing
...
```

------

## Habilite o bloqueio de acesso público para AMIs
<a name="enable-block-public-access-for-amis"></a>

Para evitar o compartilhamento público de suas AMIs, habilite o bloqueio de acesso público para AMIs no nível da conta. Você deve habilitar o bloqueio de acesso público para AMIs em cada Região da AWS na qual deseja evitar o compartilhamento público das suas AMIs. Se você já tiver AMIs públicas, elas permanecerão disponíveis publicamente.

**Permissões obrigatórias**  
Para habilitar a configuração atual do bloqueio de acesso público para AMIs, você deve ter a permissão `EnableImageBlockPublicAccess` do IAM.

**Considerações**
+ A configuração dessa opção poderá demorar até 10 minutos. Durante esse período, se você descrever o estado de acesso público, a resposta será `unblocked`. Quando a configuração for concluída, a resposta será `block-new-sharing`.

------
#### [ Console ]

**Para habilitar o bloqueio de acesso público para AMIs na região especificada**

1. Abra o console do Amazon EC2 em [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. Na barra de navegação (na parte superior da tela), selecione a região na qual deseja executar o bloqueio de acesso público para as AMIs.

1. No painel de navegação, escolha **Painel**.

1. No cartão **Atributos da conta**, em **Configurações**, escolha **Proteção e segurança de dados**.

1. Em **Block public access for AMIs (Bloquear acesso público para AMIs)**, escolha **Manage (Gerenciar)**.

1. Marque a caixa de seleção **Bloquear novos compartilhamentos públicos** e escolha **Atualizar**.

------
#### [ AWS CLI ]

**Para habilitar o bloqueio de acesso público para as AMIs**  
Use o comando [enable-image-block-public-access](https://docs.aws.amazon.com/cli/latest/reference/ec2/enable-image-block-public-access.html).

**Exemplo: para uma região específica**

```
aws ec2 enable-image-block-public-access \
--region us-east-1 \
--image-block-public-access-state block-new-sharing
```

O seguinte é um exemplo de saída.

```
{ 
    "ImageBlockPublicAccessState": "block-new-sharing"
}
```

**Exemplo: para todas as regiões em sua conta**

```
echo -e "Region   \t Public Access State" ; \
echo -e "-------------- \t ----------------------" ; \
for region in $(
    aws ec2 describe-regions \
        --region us-east-1 \
        --query "Regions[*].[RegionName]" \
        --output text
    ); 
    do (output=$(
        aws ec2 enable-image-block-public-access \
            --region $region \
            --image-block-public-access-state block-new-sharing \
            --output text)
        echo -e "$region \t $output" 
    );
done
```

O seguinte é um exemplo de saída.

```
Region           Public Access State
--------------   ----------------------
ap-south-1       block-new-sharing
eu-north-1       block-new-sharing
eu-west-3        block-new-sharing
...
```

------
#### [ PowerShell ]

**Para habilitar o bloqueio de acesso público para as AMIs**  
Use o comando [Enable-EC2ImageBlockPublicAccess](https://docs.aws.amazon.com/powershell/latest/reference/items/Enable-EC2ImageBlockPublicAccess.html).

**Exemplo: para uma região específica**

```
Enable-EC2ImageBlockPublicAccess `
    -Region us-east-1 `
    -ImageBlockPublicAccessState block-new-sharing
```

O seguinte é um exemplo de saída.

```
Value
-----
block-new-sharing
```

**Exemplo: para todas as regiões em sua conta**

```
(Get-EC2Region).RegionName | `
    ForEach-Object {
    [PSCustomObject]@{
        Region            = $_
        PublicAccessState = (
        Enable-EC2ImageBlockPublicAccess `
         -Region $_ `
         -ImageBlockPublicAccessState block-new-sharing)
    }
} | `
Format-Table -AutoSize
```

O seguinte é um exemplo de saída.

```
Region         PublicAccessState
------         -----------------
ap-south-1     block-new-sharing
eu-north-1     block-new-sharing
eu-west-3      block-new-sharing
...
```

------

## Desabilite o bloqueio de acesso público para AMIs
<a name="disable-block-public-access-for-amis"></a>

Para permitir que os usuários da sua conta compartilhem publicamente suas AMIs, desative o bloqueio do acesso público no nível da conta. Você deve desabilitar o bloqueio de acesso público para AMIs em cada Região da AWS na qual deseja permitir o compartilhamento público das suas AMIs. 

**Permissões obrigatórias**  
Para desabilitar a configuração atual do bloqueio de acesso público para AMIs, você deve ter a permissão `DisableImageBlockPublicAccess` do IAM.

**Considerações**
+ A configuração dessa opção poderá demorar até 10 minutos. Durante esse período, se você descrever o estado de acesso público, a resposta será `block-new-sharing`. Quando a configuração for concluída, a resposta será `unblocked`.

------
#### [ Console ]

**Para desabilitar o bloqueio de acesso público para AMIs na região especificada**

1. Abra o console do Amazon EC2 em [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. Na barra de navegação (na parte superior da tela), selecione a região na qual deseja desabilitar o bloqueio de acesso público para AMIs. 

1. No painel de navegação, escolha **Painel**.

1. No cartão **Atributos da conta**, em **Configurações**, escolha **Proteção e segurança de dados**.

1. Em **Block public access for AMIs (Bloquear acesso público para AMIs)**, escolha **Manage (Gerenciar)**.

1. Desmarque a caixa de seleção **Bloquear novos compartilhamentos públicos** e escolha **Atualizar**.

1. Insira **confirm** quando solicitado para confirmação e, em seguida, escolha **Allow public sharing** (Permitir compartilhamento público).

------
#### [ AWS CLI ]

**Para desabilitar o bloqueio de acesso público para as AMIs**  
Use o comando [disable-image-block-public-access](https://docs.aws.amazon.com/cli/latest/reference/ec2/disable-image-block-public-access.html).

**Exemplo: para uma região específica**

```
aws ec2 disable-image-block-public-access --region us-east-1
```

O seguinte é um exemplo de saída.

```
{
   "ImageBlockPublicAccessState": "unblocked"
}
```

**Exemplo: para todas as regiões em sua conta**

```
echo -e "Region   \t Public Access State" ; \
echo -e "-------------- \t ----------------------" ; \
for region in $(
    aws ec2 describe-regions \
        --region us-east-1 \
        --query "Regions[*].[RegionName]" \
        --output text
    ); 
    do (output=$(
        aws ec2 disable-image-block-public-access \
            --region $region \
            --output text)
        echo -e "$region \t $output" 
    );
done
```

O seguinte é um exemplo de saída.

```
Region           Public Access State
--------------   ----------------------
ap-south-1       unblocked
eu-north-1       unblocked
eu-west-3        unblocked
...
```

------
#### [ PowerShell ]

**Para desabilitar o bloqueio de acesso público para as AMIs**  
Use o cmdlet [Disable-EC2ImageBlockPublicAccess](https://docs.aws.amazon.com/powershell/latest/reference/items/Disable-EC2ImageBlockPublicAccess.html).

**Exemplo: para uma região específica**

```
Disable-EC2ImageBlockPublicAccess -Region us-east-1
```

O seguinte é um exemplo de saída.

```
Value
-----
unblocked
```

**Exemplo: para todas as regiões em sua conta**

```
(Get-EC2Region).RegionName | `
    ForEach-Object {
    [PSCustomObject]@{
        Region            = $_
        PublicAccessState = (Disable-EC2ImageBlockPublicAccess -Region $_)
    }
} | `
Format-Table -AutoSize
```

O seguinte é um exemplo de saída.

```
Region         PublicAccessState
------         -----------------
ap-south-1     unblocked
eu-north-1     unblocked
eu-west-3      unblocked
...
```

------

# Compartilhar uma AMI com organizações e unidades organizacionais
<a name="share-amis-with-organizations-and-OUs"></a>

 O [AWS Organizations](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_integrate_services_list.html) é um serviço de gerenciamento de contas que permite consolidar várias Contas da AWS em uma só organização, que você cria e gerencia centralmente. É possível compartilhar uma AMI com uma organização ou uma unidade organizacional (UO) que você criou, além de [compartilhá-la com contas específicas](sharingamis-explicit.md).

Uma organização é uma entidade que você cria para consolidar e gerenciar suas Contas da AWS. É possível organizar as contas em uma estrutura em árvore hierárquica, com uma [raiz](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_getting-started_concepts.html#root) no alto e [unidades organizacionais](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_getting-started_concepts.html#organizationalunit) aninhadas abaixo da raiz. Cada conta pode ser adicionada diretamente na raiz ou ser colocada em uma das UOs na hierarquia. Para obter mais informações, consulte [Terminologia e conceitos das organizações da AWS](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_getting-started_concepts.html) no *Guia do usuário do AWS Organizations*.

Quando você compartilha uma AMI com uma organização ou uma UO, todas as contas subordinadas ganham acesso à AMI. Por exemplo, no diagrama a seguir, a AMI é compartilhada com uma UO de nível superior (indicada pela seta no número **1**). Todas as UOs e contas aninhadas sob essa UO de nível superior (indicadas pela linha pontilhada no número **2**) também têm acesso à AMI. As contas na organização e UO fora da linha pontilhada (indicadas pelo número **3**) não têm acesso à AMI porque não são filhas da UO com a qual a AMI é compartilhada.

![\[A AMI é compartilhada com uma UO, e todas as UOs e contas filhas têm acesso à AMI.\]](http://docs.aws.amazon.com/pt_br/AWSEC2/latest/UserGuide/images/ami-share-with-orgs-and-ous.png)


**Topics**
+ [Considerações](#considerations-org-ou)
+ [Obter o ARN de uma organização ou unidade organizacional](get-org-ou-ARN.md)
+ [Permitir que organizações e UOs usem uma chave do KMS](allow-org-ou-to-use-key.md)
+ [Gerenciar o compartilhamento de uma AMI com uma organização ou uma UO](share-amis-org-ou-manage.md)

## Considerações
<a name="considerations-org-ou"></a>

Considere as informações a seguir ao compartilhar AMIs com organizações ou unidades organizacionais específicas.
+ **Propriedade**: para compartilhar uma AMI, sua Conta da AWS deve ser proprietária da AMI.
+ **Limites de compartilhamento:** o proprietário da AMI pode compartilhar uma AMI com qualquer organização ou UO, incluindo organizações e UOs às quais ele não pertence.

  Para saber o número máximo de entidades com as quais uma AMI pode ser compartilhada em uma região, consulte [Service Quotas do Amazon EC2](https://docs.aws.amazon.com//general/latest/gr/ec2-service.html#limits_ec2).
+ **Tags**: você não pode compartilhar tags definidas pelo usuário (tags que você anexa a uma AMI). Quando você compartilha uma AMI, as tags definidas pelo usuário não estão disponíveis para nenhuma Conta da AWS em uma organização ou UO com a qual a AMI é compartilhada.
+ **Formato de ARN**: ao especificar uma organização ou UO em um comando, verifique se usou o formato de ARN correto. Você receberá um erro se especificar apenas o ID, por exemplo, se você especificar apenas `o-123example` ou `ou-1234-5example`.

  Formatos corretos de ARN:
  + ARN de organização: `arn:aws:organizations::111122223333:organization/organization-id`
  + ARN de UO: `arn:aws:organizations::111122223333:ou/organization-id/ou-id`

  Em que:
  + *`111122223333`* é um exemplo do ID de conta de 12 dígitos para a conta gerencial. Se você não souber o número da conta de gerenciamento, poderá descrever a organização ou a unidade organizacional para obter o ARN, que inclui o número da conta de gerenciamento. Para obter mais informações, consulte [Obter o ARN de uma organização ou unidade organizacional](get-org-ou-ARN.md).
  + *`organization-id`* é o ID da organização, por exemplo, `o-123example`.
  + *`ou-id`* é o ID da unidade organizacional, por exemplo, `ou-1234-5example`.

  Para obter mais informações sobre o formato dos ARNs, consulte [Nome do recurso da Amazon (ARN)](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html) no *Guia do usuário do IAM*.
+ **Criptografia e chaves**: é possível compartilhar AMIs que tenham snapshots criptografados e não criptografados.
  + Os snapshots criptografados devem ser criptografados com uma chave gerenciada pelo cliente. Não é possível compartilhar AMIs que tenham snapshots que sejam criptografados com a chave gerenciada pela AWS padrão.
  + Se você compartilhar uma AMI que tenha snapshots criptografados, deverá permitir que as organizações ou UOs usem as chaves gerenciadas pelo cliente que foram usadas para criptografar os snapshots. Para obter mais informações, consulte [Permitir que organizações e UOs usem uma chave do KMS](allow-org-ou-to-use-key.md).
+ **Region**: as AMIs são um recurso regional. Quando você compartilha uma AMI, ela só está disponível na região de onde foi compartilhada. Para disponibilizar uma AMI em uma região diferente, copie a AMI para a região e compartilhe-a. Para obter mais informações, consulte [Copiar uma AMI do Amazon EC2](CopyingAMIs.md).
+ **Uso**: quando você compartilha uma AMI, os usuários podem apenas iniciar instâncias pela AMI. Eles não podem excluí-la, compartilhá-la nem modificá-la. Porém, após iniciarem uma instância usando sua AMI, poderão criar uma AMI com base na instância que iniciaram.
+ **Faturamento**: você não é cobrado quando sua AMI é usada por outras Contas da AWS para executar instâncias. As contas que iniciam instâncias usando a AMI são cobradas pelas instâncias que iniciam.

# Obter o ARN de uma organização ou unidade organizacional
<a name="get-org-ou-ARN"></a>

Os ARNs de organizações e de unidades organizacionais contêm o número da conta de gerenciamento de 12 dígitos. Se você não souber o número da conta de gerenciamento, poderá descrever a organização e a unidade organizacional para obter o ARN para cada uma delas. Nos exemplos a seguir, `123456789012` é o ID da conta gerencial.

**Permissões obrigatórias**  
Antes de obter os ARNs, é necessário ter permissão para descrever organizações e unidades organizacionais. O modelo de política a seguir fornece as permissões necessárias.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "organizations:Describe*"
            ],
            "Resource": "*"
        }
    ]
}
```

------

------
#### [ AWS CLI ]

**Para obter o ARN de uma organização**  
Use o comando [https://docs.aws.amazon.com/cli/latest/reference/organizations/describe-organization.html](https://docs.aws.amazon.com/cli/latest/reference/organizations/describe-organization.html). Adicione a opção `--query` para retornar apenas o ARN da organização.

```
aws organizations describe-organization --query 'Organization.Arn'
```

O seguinte é um exemplo de saída.

```
"arn:aws:organizations::123456789012:organization/o-1234567abc"
```

**Para obter o ARN de uma unidade organizacional**  
Use o comando [https://docs.aws.amazon.com/cli/latest/reference/organizations/describe-organizational-unit.html](https://docs.aws.amazon.com/cli/latest/reference/organizations/describe-organizational-unit.html). Use o parâmetro `--query` para retornar apenas o ARN da unidade organizacional.

```
aws organizations describe-organizational-unit \
    --organizational-unit-id ou-a123-b4567890 \
    --query 'OrganizationalUnit.Arn'
```

O seguinte é um exemplo de saída.

```
"arn:aws:organizations::123456789012:ou/o-1234567abc/ou-a123-b4567890"
```

------
#### [ PowerShell ]

**Para obter o ARN de uma organização**  
Use o cmdlet [Get-ORGOrganization](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-ORGOrganization.html).

```
(Get-ORGOrganization).Arn
```

O seguinte é um exemplo de saída.

```
arn:aws:organizations::123456789012:organization/o-1234567abc
```

**Para obter o ARN de uma unidade organizacional**  
Use o cmdlet [Get-ORGOrganizationalUnit](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-ORGOrganizationalUnit.html).

```
(Get-ORGOrganizationalUnit -OrganizationalUnitId "ou-a123-b4567890").Arn
```

O seguinte é um exemplo de saída.

```
arn:aws:organizations::123456789012:ou/o-1234567abc/ou-a123-b4567890
```

------

# Permitir que organizações e UOs usem uma chave do KMS
<a name="allow-org-ou-to-use-key"></a>

Se você compartilhar uma AMI que tenha snapshots criptografados, também deverá permitir que as organizações ou unidades organizacionais (UOs) usem as chaves do KMS que foram usadas para criptografar os snapshots.

**nota**  
Os snapshots criptografados devem ser criptografados com uma chave *gerenciada pelo cliente*. Não é possível compartilhar AMIs que tenham snapshots que sejam criptografados com a chave gerenciada pela AWS padrão.

Para controlar o acesso à chave do KMS, na [política de chave](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html), é possível usar as chaves de condição [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principalorgid](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principalorgid) e [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principalorgpaths](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principalorgpaths) para conceder permissão somente a determinadas entidades principais para as ações especificadas. Uma entidade principal pode ser um usuário, um perfil do IAM, um usuário federado ou um usuário-raiz da Conta da AWS.

As chaves de condição são usadas da seguinte forma:
+ `aws:PrincipalOrgID`: permite qualquer entidade principal pertencente à organização representada pelo ID especificado.
+ `aws:PrincipalOrgPaths`: permite qualquer entidade principal pertencente às UOs representadas pelos caminhos especificados.

Para conceder a uma organização (incluindo as UOs e contas que pertençam a ela) permissão para usar uma chave do KMS, adicione a instrução a seguir à política de chave.

```
{
    "Sid": "Allow access for organization root",
    "Effect": "Allow",
    "Principal": "*",
    "Action": [
        "kms:Describe*",
        "kms:List*",
        "kms:Get*",
        "kms:Encrypt",
        "kms:Decrypt",
        "kms:ReEncrypt*",
        "kms:GenerateDataKey*",
        "kms:CreateGrant"
    ],
    "Resource": "*",
    "Condition": {
        "StringEquals": {
            "aws:PrincipalOrgID": "o-123example"
        }
    }
}
```

Para dar permissão a UOs específicas (e às contas que pertençam a elas) para usar uma chave do KMS, é possível usar uma política semelhante ao exemplo a seguir.

```
{
        "Sid": "Allow access for specific OUs and their descendants",
        "Effect": "Allow",
        "Principal": "*",
        "Action": [
            "kms:Describe*",
            "kms:List*",
            "kms:Get*",
            "kms:Encrypt",
            "kms:Decrypt",
            "kms:ReEncrypt*",
            "kms:GenerateDataKey*",
            "kms:CreateGrant"
        ],
        "Resource": "*",
        "Condition": {
            "StringEquals": {
                "aws:PrincipalOrgID": "o-123example"
            },
            "ForAnyValue:StringLike": {
                "aws:PrincipalOrgPaths": [
                    "o-123example/r-ab12/ou-ab12-33333333/*",
                    "o-123example/r-ab12/ou-ab12-22222222/*"
                ]
            }
        }
}
```

Para obter mais exemplos de instruções de condição, consulte [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principalorgid](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principalorgid) e [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principalorgpaths](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principalorgpaths) no *Guia do usuário do IAM*. 

Para obter mais informações sobre acesso entre contas, consulte [Permissão para que usuários de outras contas usem uma chave do KMS](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-modifying-external-accounts.html) no *Guia do desenvolvedor do AWS Key Management Service*.

# Gerenciar o compartilhamento de uma AMI com uma organização ou uma UO
<a name="share-amis-org-ou-manage"></a>

É possível gerenciar o compartilhamento de AMIs com organizações e unidades organizacionais (UO) para controlar se elas podem executar instâncias do Amazon EC2.

## Veja as organizações e as UOs com as quais uma AMI é compartilhada
<a name="decribe-ami-launch-permissions"></a>

É possível descobrir as organizações e UOs com as quais você compartilhou sua AMI.

------
#### [ Console ]

**Para verificar com quais organizações e UOs você compartilhou sua AMI**

1. Abra o console do Amazon EC2 em [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. No painel de navegação, selecione **AMIs**.

1. Selecione sua AMI na lista, escolha a guia **Permissions** (Permissões) e role para baixo até **Shared organizations/OUs** (Organizações/UOs compartilhadas).

   Para localizar as AMIs que são compartilhadas com você, consulte [Encontre AMIs compartilhadas para usar em instâncias do Amazon EC2](usingsharedamis-finding.md).

------
#### [ AWS CLI ]

**Para verificar com quais organizações e UOs você compartilhou sua AMI**  
Use o comando [https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-image-attribute.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-image-attribute.html) com o atributo `launchPermission`.

```
aws ec2 describe-image-attribute \
    --image-id ami-0abcdef1234567890 \
    --attribute launchPermission
```

O seguinte é um exemplo de resposta.

```
{
    "ImageId": "ami-0abcdef1234567890",
    "LaunchPermissions": [
        {
            "OrganizationalUnitArn": "arn:aws:organizations::111122223333:ou/o-123example/ou-1234-5example"
        }
    ]
}
```

------
#### [ PowerShell ]

**Para verificar com quais organizações e UOs você compartilhou sua AMI**  
Use o cmdlet [Get-EC2ImageAttribute](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2ImageAttribute.html).

```
Get-EC2ImageAttribute `
    -ImageId ami-0abcdef1234567890 `
    -Attribute launchPermission
```

------

## Compartilhar uma AMI com uma organização ou uma UO
<a name="share-amis-org-ou"></a>

É possível compartilhar uma AMI com uma organização ou UO

**nota**  
Você não precisa compartilhar os snapshots do Amazon EBS aos quais a AMI faz referência para compartilhar a AMI. Apenas a própria AMI precisa ser compartilhada, e o sistema fornece automaticamente à instância acesso aos snapshots do EBS referenciados para a execução. Mas, você precisa compartilhar todas as chaves do KMS usadas para criptografar os snapshots referenciados pela AMI. Para obter mais informações, consulte [Permitir que organizações e UOs usem uma chave do KMS](allow-org-ou-to-use-key.md).

------
#### [ Console ]

**Para compartilhar uma AMI com uma organização ou uma UO**

1. Abra o console do Amazon EC2 em [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. No painel de navegação, selecione **AMIs**.

1. Selecione sua AMI na lista e escolha **Actions** (Ações), **Edit AMI permissions** (Editar permissões de AMI).

1. Em **AMI availability** (Disponibilidade da AMI), escolha **Private** (Privado).

1. Próximo a **Shared organizations/OUs** (Organizações/UOs compartilhadas), escolha **Add organization/OU ARN** (Adicionar ARN de organização/UO).

1. Em **Organization/OU ARN** (ARN de organização/UO), insira o ARN da organização ou o ARN da UO com o qual você deseja compartilhar a AMI e, em seguida, escolha **Share AMI** (Compartilhar AMI). Observe que especifique o ARN completo, e não apenas o ID.

   Para compartilhar essa AMI com várias organizações ou UOs, repita essa etapa até adicionar todas as organizações ou UOs necessárias.

1. Após terminar, escolha **Save changes** (Salvar alterações).

1. (Opcional) Para visualizar as organizações ou UOs com as quais você compartilhou a AMI, selecione a AMI na lista, escolha a guia **Permissions** (Permissões) e role para baixo até **Shared organizations/OUs** Organizações/UOs compartilhadas. Para localizar as AMIs que são compartilhadas com você, consulte [Encontre AMIs compartilhadas para usar em instâncias do Amazon EC2](usingsharedamis-finding.md).

------
#### [ AWS CLI ]

**Para compartilhar uma AMI com uma organização**  
Use o comando [https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-image-attribute.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-image-attribute.html) para conceder à organização especificada permissões de execução para a AMI especificada.

```
aws ec2 modify-image-attribute \
    --image-id ami-0abcdef1234567890 \
    --launch-permission "Add=[{OrganizationArn=arn:aws:organizations::123456789012:organization/o-123example}]"
```

**Para compartilhar uma AMI com uma UO**  
O comando [modify-image-attribute](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-image-attribute.html) concede permissões de execução para a AMI especificada à UO especificada. Observe que especifique o ARN completo, e não apenas o ID.

```
aws ec2 modify-image-attribute \
    --image-id ami-0abcdef1234567890 \
    --launch-permission "Add=[{OrganizationalUnitArn=arn:aws:organizations::123456789012:ou/o-123example/ou-1234-5example}]"
```

------
#### [ PowerShell ]

Use o comando [https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2ImageAttribute.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2ImageAttribute.html) (Tools for Windows PowerShell) para compartilhar uma AMI conforme exibido nos exemplos a seguir.

**Para compartilhar uma AMI com uma organização ou uma UO**  
O comando a seguir concede permissões de execução para a AMI especificada à organização especificada.

```
Edit-EC2ImageAttribute `
    -ImageId ami-0abcdef1234567890 `
    -Attribute launchPermission `
    -OperationType add `
    -OrganizationArn "arn:aws:organizations::123456789012:organization/o-123example"
```

**Para interromper o compartilhamento de uma AMI com uma organização ou uma UO**  
O comando a seguir remove as permissões de execução para a AMI especificada da organização especificada:

```
Edit-EC2ImageAttribute `
    -ImageId ami-0abcdef1234567890 `
    -Attribute launchPermission `
    -OperationType remove `
    -OrganizationArn "arn:aws:organizations::123456789012:organization/o-123example"
```

**Para interromper o compartilhamento de uma AMI com todas as organizações, UOs e Contas da AWS**  
O comando a seguir remove todas as permissões de execução explícita e pública da AMI especificada. Observe que o proprietário da AMI sempre tem permissões de execução e, portanto, não é afetado por este comando.

```
Reset-EC2ImageAttribute `
    -ImageId ami-0abcdef1234567890 `
    -Attribute launchPermission
```

------

## Interromper o compartilhamento de uma AMI com uma organização ou uma UO
<a name="stop-sharing-amis-org-ou"></a>

É possível interromper o compartilhamento de uma AMI com uma organização ou UO.

**nota**  
Você não pode interromper o compartilhamento de uma AMI com uma conta específica se ela estiver em uma organização ou UO com a qual uma AMI é compartilhada. Se você tentar parar de compartilhar a AMI removendo as permissões de execução da conta, o Amazon EC2 retornará uma mensagem de êxito. Porém, a AMI continua sendo compartilhada com a conta.

------
#### [ Console ]

**Para interromper o compartilhamento de uma AMI com uma organização ou uma UO**

1. Abra o console do Amazon EC2 em [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. No painel de navegação, selecione **AMIs**.

1. Selecione sua AMI na lista e escolha **Actions** (Ações), **Edit AMI permissions** (Editar permissões de AMI).

1. Em **Shared organizations/OUs** (Organizações/UOs compartilhadas), selecione as organizações ou UOs com as quais você deseja parar de compartilhar a AMI e, em seguida, escolha **Remove selected** (Remover selecionado).

1. Após terminar, escolha **Save changes** (Salvar alterações).

1. (Opcional) Para confirmar que você parou de compartilhar a AMI com as organizações ou UOs, selecione a AMI na lista, escolha a guia **Permissions** (Permissões) e role para baixo até **Shared organizations/OUs** (Organizações/UOs compartilhadas).

------
#### [ AWS CLI ]

**Para interromper o compartilhamento de uma AMI com uma organização ou uma UO**  
Use o comando [modify-image-attribute](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-image-attribute.html). Este exemplo remove da organização especificada as permissões de execução para a AMI especificada.

```
aws ec2 modify-image-attribute \
    --image-id ami-0abcdef1234567890 \
    --launch-permission "Remove=[{OrganizationArn=arn:aws:organizations::123456789012:organization/o-123example}]"
```

**Para interromper o compartilhamento de uma AMI com todas as organizações, UOs e Contas da AWS**  
Use o comando [https://docs.aws.amazon.com/cli/latest/reference/ec2/reset-image-attribute.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/reset-image-attribute.html). Este exemplo remove todas as permissões de execução explícita e pública da AMI especificada. Observe que o proprietário da AMI sempre tem permissões de execução e, portanto, não é afetado por este comando.

```
aws ec2 reset-image-attribute \
    --image-id ami-0abcdef1234567890 \
    --attribute launchPermission
```

------
#### [ PowerShell ]

**Para interromper o compartilhamento de uma AMI com uma organização ou uma UO**  
Use o cmdlet [Edit-EC2ImageAttribute](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2ImageAttribute.html). Este exemplo remove da organização especificada as permissões de execução para a AMI especificada.

```
Edit-EC2ImageAttribute `
    -ImageId ami-0abcdef1234567890 `
    -Attribute launchPermission `
    -OperationType remove `
    -OrganizationArn "arn:aws:organizations::123456789012:organization/o-123example"
```

**Para interromper o compartilhamento de uma AMI com todas as organizações, UOs e Contas da AWS**  
Use o cmdlet [Reset-EC2ImageAttribute](https://docs.aws.amazon.com/powershell/latest/reference/items/Reset-EC2ImageAttribute.html). Este exemplo remove todas as permissões de execução explícita e pública da AMI especificada. Observe que o proprietário da AMI sempre tem permissões de execução e, portanto, não é afetado por este comando.

```
Reset-EC2ImageAttribute `
    -ImageId ami-0abcdef1234567890 `
    -Attribute LaunchPermission
```

------

# Compartilhar uma AMI com contas específicas da AWS
<a name="sharingamis-explicit"></a>

É possível compartilhar uma AMI com Contas da AWS específicas sem torná-la pública. Basta ter os IDs de Conta da AWS.

Um ID de Conta da AWS é um número de 12 dígitos, como `012345678901`, que identifica de forma exclusiva uma Conta da AWS. Para obter mais informações, consulte [View Conta da AWS identifiers](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-identifiers.html) no *AWS Gerenciamento de contas Reference Guide*.



## Considerações
<a name="considerations-for-sharing-AMI-with-accounts"></a>

Considere as informações a seguir ao compartilhar AMIs com Contas da AWS específicas.
+ **Propriedade**: para compartilhar uma AMI, sua Conta da AWS deve ser proprietária da AMI.
+ **Limites de compartilhamento**: para saber o número máximo de entidades com as quais uma AMI pode ser compartilhada em uma região, consulte [Service Quotas do Amazon EC2](https://docs.aws.amazon.com//general/latest/gr/ec2-service.html#limits_ec2).
+ **Tags**: você não pode compartilhar tags definidas pelo usuário (tags que você anexa a uma AMI). Quando você compartilha uma AMI, suas tags definidas pelo usuário não estão disponíveis para nenhuma Conta da AWS com a qual a AMI é compartilhada.
+ **Snapshots**: não é necessário compartilhar os snapshots do Amazon EBS referenciados por uma AMI para compartilhá-la. É possível compartilhar apenas a própria AMI, e o sistema fornecerá à instância acesso imediato aos snapshots do Amazon EBS referenciados para a inicialização. Porém, você deve compartilhar todas as chaves do KMS usadas para criptografar os snapshots referenciados por uma AMI. Para obter mais informações, consulte [Compartilhar um snapshot do Amazon EBS](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-modifying-snapshot-permissions.html) no *Guia do usuário do Amazon EBS*.
+ **Criptografia e chaves**: é possível compartilhar AMIs que tenham snapshots criptografados e não criptografados.
  + Os snapshots criptografados devem ser criptografados com uma chave do KMS. Não é possível compartilhar AMIs que tenham snapshots que sejam criptografados com a chave gerenciada pela AWS padrão.
  + Se você compartilhar uma AMI que tenha snapshots criptografados, permita que as Contas da AWS usem as chaves do KMS que foram usadas para criptografar os snapshots. Para obter mais informações, consulte [Permitir que organizações e UOs usem uma chave do KMS](allow-org-ou-to-use-key.md). Para configurar a política de chave de que você precisa para executar instâncias do Auto Scaling ao usar uma chave gerenciada pelo cliente para criptografia, consulte [Política necessária de AWS KMS key para uso com volumes criptografados](https://docs.aws.amazon.com/autoscaling/ec2/userguide/key-policy-requirements-EBS-encryption.html) no *Guia do usuário do Amazon EC2 Auto Scaling*. 
+ **Region**: as AMIs são um recurso regional. Quando você compartilha uma AMI, ela só está disponível naquela região. Para disponibilizar uma AMI em uma região diferente, copie a AMI para a região e compartilhe-a. Para obter mais informações, consulte [Copiar uma AMI do Amazon EC2](CopyingAMIs.md).
+ **Uso**: quando você compartilha uma AMI, os usuários podem apenas iniciar instâncias pela AMI. Eles não podem excluí-la, compartilhá-la nem modificá-la. Porém, após iniciarem uma instância usando a sua AMI, eles podem criar uma AMI a partir da instância deles.
+ **Cópias de AMIs compartilhadas**: se os usuários em outra conta quiserem copiar uma AMI compartilhada, você deverá conceder a eles permissões de leitura para o armazenamento que oferece suporte à AMI. Para obter mais informações, consulte [Cópia entre contas](how-ami-copy-works.md#copy-ami-across-accounts).
+ **Faturamento**: você não é cobrado quando sua AMI é usada por outras Contas da AWS para executar instâncias. As contas que iniciam instâncias usando a AMI são cobradas pelas instâncias que iniciam.

------
#### [ Console ]

**Para conceder permissões de execução explícitas**

1. Abra o console do Amazon EC2 em [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. No painel de navegação, selecione **AMIs**.

1. Selecione sua AMI na lista e escolha **Actions** (Ações), **Edit AMI permissions** (Editar permissões de AMI).

1. Selecione **Private (Privado)**.

1. Em **Shared accounts** (Contas compartilhadas), escolha **Add account ID** (Adicionar ID de conta).

1. Em **Conta da AWS ID** (ID da ), insira o ID da Conta da AWS com a qual você deseja compartilhar a AMI e, em seguida, escolha **Share AMI** (Compartilhar AMI).

   Para compartilhar essa AMI com várias contas, repita as Etapas 5 e 6 até adicionar todos os ID de conta necessários.

1. Quando concluir, escolha **Salvar alterações**.

1. (Opcional) Para visualizar os IDs de Conta da AWS com a qual você compartilhou a AMI, selecione a AMI na lista e escolha a guia **Permissions** (Permissões). Para localizar as AMIs que são compartilhadas com você, consulte [Encontre AMIs compartilhadas para usar em instâncias do Amazon EC2](usingsharedamis-finding.md).

------
#### [ AWS CLI ]

Use o comando [https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-image-attribute.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-image-attribute.html) para compartilhar uma AMI conforme indicado nos exemplos a seguir.

**Para conceder permissões de execução explícitas**  
O exemplo a seguir concede permissões de execução da AMI especificada à Conta da AWS especificada.

```
aws ec2 modify-image-attribute \
    --image-id ami-0abcdef1234567890 \
    --launch-permission "Add=[{UserId=123456789012}]"
```

**Para remover as permissões de execução de uma conta**  
O exemplo a seguir remove permissões de execução da AMI especificada da Conta da AWS especificada.

```
aws ec2 modify-image-attribute \
    --image-id ami-0abcdef1234567890 \
    --launch-permission "Remove=[{UserId=123456789012}]"
```

**Para remover todas as permissões de execução**  
O exemplo a seguir remove todas as permissões de execução explícita e pública da AMI especificada. Observe que o proprietário da AMI sempre tem permissões de execução e, portanto, não é afetado por este comando.

```
aws ec2 reset-image-attribute \
    --image-id ami-0abcdef1234567890 \
    --attribute launchPermission
```

------
#### [ PowerShell ]

Use o comando [https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2ImageAttribute.html](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2ImageAttribute.html) (Tools for Windows PowerShell) para compartilhar uma AMI conforme exibido nos exemplos a seguir.

**Para conceder permissões de execução explícitas**  
O exemplo a seguir concede permissões de execução da AMI especificada à Conta da AWS especificada.

```
Edit-EC2ImageAttribute `
    -ImageId ami-0abcdef1234567890 ` 
    -Attribute launchPermission `
    -OperationType add `
    -UserId "123456789012"
```

**Para remover as permissões de execução de uma conta**  
O exemplo a seguir remove permissões de execução da AMI especificada da Conta da AWS especificada.

```
Edit-EC2ImageAttribute `
    -ImageId ami-0abcdef1234567890 `
    -Attribute launchPermission -OperationType remove `
    -UserId "123456789012"
```

**Para remover todas as permissões de execução**  
O exemplo a seguir remove todas as permissões de execução explícita e pública da AMI especificada. Observe que o proprietário da AMI sempre tem permissões de execução e, portanto, não é afetado por este comando.

```
Reset-EC2ImageAttribute `
    -ImageId ami-0abcdef1234567890 `
    -Attribute launchPermission
```

------

# Cancelar o compartilhamento de uma AMI com sua Conta da AWS
<a name="cancel-sharing-an-AMI"></a>

Uma imagem de máquina da Amazon (AMI) pode ser [compartilhada com Contas da AWS específicas](sharingamis-explicit.md) adicionando as contas às permissões de execução da AMI. Se uma AMI tiver sido compartilhada com sua Conta da AWS e você não quiser mais compartilhá-la com sua conta, poderá remover sua conta das permissões de execução da AMI. É possível fazer isso executando o comando `cancel-image-launch-permission` da AWS CLI. Ao executar esse comando, sua Conta da AWS é removida das permissões de execução para a AMI especificada. Para localizar as AMIs que são compartilhadas com sua Conta da AWS, consulte [Encontre AMIs compartilhadas para usar em instâncias do Amazon EC2](usingsharedamis-finding.md).

É possível cancelar o compartilhamento de uma AMI com sua conta, p. ex., para reduzir a probabilidade de executar uma instância com uma AMI não utilizada ou obsoleta que tenha sido compartilhada com você. Quando você cancela o compartilhamento de uma AMI com sua conta, ela não aparece mais em nenhuma lista de AMI no console do EC2 ou na saída do comando [describe-images](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-images.html).

**Topics**
+ [Limitações](#cancel-sharing-an-AMI-limitations)
+ [Cancelar o compartilhamento de uma AMI com sua conta](#cancel-image-launch-permission)

## Limitações
<a name="cancel-sharing-an-AMI-limitations"></a>
+ É possível remover sua conta das permissões de execução de uma AMI que seja compartilhada apenas com a sua Conta da AWS. Você não pode usar `cancel-image-launch-permission` para remover sua conta das permissões de execução de uma [AMI compartilhada com uma organização ou unidade organizacional (UO)](share-amis-with-organizations-and-OUs.md) ou para remover o acesso a AMIs públicas.
+ Você não pode remover permanentemente sua conta das permissões de execução de uma AMI. O proprietário de uma AMI pode compartilhar uma AMI com sua conta novamente.
+ As AMIs são um recurso regional. Ao executar `cancel-image-launch-permission`, você deve especificar a região na qual a AMI está localizada. Especifique uma região no comando ou use a [variável de ambiente](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-envvars.html) AWS\$1DEFAULT\$1REGION.
+ Somente a AWS CLI e os SDKs são compatíveis com a remoção de sua conta das permissões de execução de uma AMI. No momento, o console do EC2 não é compatível com essa ação.

## Cancelar o compartilhamento de uma AMI com sua conta
<a name="cancel-image-launch-permission"></a>

**nota**  
Após cancelar o compartilhamento de uma AMI com sua conta, você não poderá desfazer essa ação. Para recuperar o acesso à AMI, o proprietário da AMI deverá compartilhá-la com sua conta.

------
#### [ AWS CLI ]

**Para cancelar o compartilhamento de uma AMI com sua conta**  
Use o comando [https://docs.aws.amazon.com/cli/latest/reference/ec2/cancel-image-launch-permission.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/cancel-image-launch-permission.html).

```
aws ec2 cancel-image-launch-permission \
    --image-id ami-0abcdef1234567890 \
    --region us-east-1
```

------
#### [ PowerShell ]

**Para cancelar o compartilhamento de uma AMI com sua conta**  
Use o cmdlet [https://docs.aws.amazon.com/powershell/latest/reference/index.html](https://docs.aws.amazon.com/powershell/latest/reference/index.html).

```
Stop-EC2ImageLaunchPermission `
    -ImageId ami-0abcdef1234567890 `
    -Region us-east-1
```

------

# Recomendações para criar AMIs compartilhadas no Linux
<a name="building-shared-amis"></a>

Use as diretrizes a seguir para reduzir a superfície de ataque e melhorar a confiabilidade das AMIs criadas.

**Importante**  
Nenhuma lista de diretrizes de segurança consegue ser exaustiva. Crie suas AMIs compartilhadas cuidadosamente e tire um tempo para considerar onde é possível expor dados confidenciais.

**Topics**
+ [Desabilitar logins remotos com senha para o usuário raiz](#public-amis-disable-password-logins-for-root)
+ [Desabilitar o acesso à raiz local](#restrict-root-access)
+ [Remover pares de chave do host SSH](#remove-ssh-host-key-pairs)
+ [Instalação de credenciais de chave pública](#public-amis-install-credentials)
+ [Desabilitação de verificações de DNS para SSHD (opcional)](#public-amis-disable-ssh-dns-lookups)
+ [Remover dados confidenciais](#public-amis-protect-yourself)

Se você estiver criando AMIs para o AWS Marketplace, consulte [Práticas recomendadas para a criação de AMIs](https://docs.aws.amazon.com/marketplace/latest/userguide/best-practices-for-building-your-amis.html) no *Guia do vendedor do AWS Marketplace* para obter diretrizes, políticas e práticas recomendadas.

## Desabilitar logins remotos com senha para o usuário raiz
<a name="public-amis-disable-password-logins-for-root"></a>

Usar uma senha de raiz fixa com uma AMI pública é um risco de segurança que pode rapidamente ficar conhecido. Até mesmo depender dos usuários para alterar a senha depois do primeiro login abre uma pequena janela de oportunidade para potencial abuso. 

Para resolver esse problema, desabilite logins remotos com senha para o usuário raiz.

**Para desabilitar logins remotos com senha para o usuário raiz**

1. Abra o arquivo `/etc/ssh/sshd_config` com um editor de texto e localize a seguinte linha:

   ```
   #PermitRootLogin yes
   ```

1. Altere a linha para:

   ```
   PermitRootLogin without-password
   ```

   O local desse arquivo de configuração pode diferir para sua distribuição ou se você não estiver executando OpenSSH. Se esse for o caso, consulte a documentação apropriada. 

## Desabilitar o acesso à raiz local
<a name="restrict-root-access"></a>

Quando você trabalha com AMIs compartilhadas, a prática recomendada é desabilitar logins diretos na raiz. Para isso, faça login na sua instância em execução e emita o seguinte comando:

```
[ec2-user ~]$ sudo passwd -l root
```

**nota**  
Esse comando não afeta o uso de `sudo`.

## Remover pares de chave do host SSH
<a name="remove-ssh-host-key-pairs"></a>

 Se você pretende compartilhar uma AMI derivada de uma AMI pública, remova os pares de chaves do host SSH existentes localizadas em `/etc/ssh`. Isso força o SSH a gerar novos pares de chaves SSH exclusivos quando alguém executar uma instância usando sua AMI, melhorando a segurança e reduzindo a probabilidade de ataques "man-in-the-middle". 

Elimine todos os arquivos de chave a seguir presentes no seu sistema.
+  ssh\$1host\$1dsa\$1key 
+  ssh\$1host\$1dsa\$1key.pub 
+  ssh\$1host\$1key 
+  ssh\$1host\$1key.pub 
+  ssh\$1host\$1rsa\$1key 
+  ssh\$1host\$1rsa\$1key.pub 
+ ssh\$1host\$1ecdsa\$1key
+ ssh\$1host\$1ecdsa\$1key.pub
+ ssh\$1host\$1ed25519\$1key
+ ssh\$1host\$1ed25519\$1key.pub

É possível remover com segurança todos esses arquivos com o comando a seguir.

```
[ec2-user ~]$ sudo shred -u /etc/ssh/*_key /etc/ssh/*_key.pub
```

**Atenção**  
Utilitários de exclusão segura, como **shred**, podem não remover todas as cópias de um arquivo da sua mídia de armazenamento. Podem ser criadas cópias ocultas de arquivos ao criar registros dos sistemas de arquivos (incluindo Amazon Linux padrão ext4), snapshots, backups, RAID e cache temporário. Para obter mais informações, consulte a [documentação de shred](https://www.gnu.org/software/coreutils/manual/html_node/shred-invocation.html).

**Importante**  
Se você se esquecer de remover o par de chaves existente do host SSH da AMI pública, nosso processo de auditoria de rotina notificará você e todos os clientes que executam instâncias da sua AMI sobre o risco potencial à segurança. Após um breve período de carência, marcamos a AMI como privada. 

## Instalação de credenciais de chave pública
<a name="public-amis-install-credentials"></a>

Depois de configurar a AMI para impedir o login usando uma senha, é necessário garantir que os usuários possam fazer login usando outro mecanismo. 

O Amazon EC2 permite que os usuários especifiquem um nome de par de chaves público-privado ao executarem uma instância. Quando um nome válido de par de chaves for fornecido para a chamada de API `RunInstances` (ou pelas ferramentas de API da linha de comando), a chave pública (a parte do par de chaves que o Amazon EC2 retém no servidor depois de uma chamada para `CreateKeyPair` ou `ImportKeyPair`) será disponibilizada para a instância por meio de uma consulta HTTP contra os metadados de instância. 

Para fazer login com SSH, sua AMI deve recuperar o valor da chave na inicialização e anexá-la a `/root/.ssh/authorized_keys` (ou o equivalente para qualquer outra conta de usuário na AMI). Os usuários podem executar instâncias da sua AMI com um par de chaves e fazer login sem exigir uma senha raiz. 

Muitas distribuições, inclusive Amazon Linux e Ubuntu, usam o pacote `cloud-init` para injetar credenciais de chave pública a um usuário configurado. Se sua distribuição não oferecer suporte a `cloud-init`, é possível adicionar o código a seguir a um script de inicialização do sistema (como `/etc/rc.local`) para puxar a chave pública especificada na execução para o usuário raiz.

**nota**  
No exemplo a seguir, o endereço IP do http://169.254.169.254/ é um endereço local de link e é válido apenas a partir da instância.

------
#### [ IMDSv2 ]

```
if [ ! -d /root/.ssh ] ; then
        mkdir -p /root/.ssh
        chmod 700 /root/.ssh
fi
# Fetch public key using HTTP
TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"` \
&& curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key > /tmp/my-key
if [ $? -eq 0 ] ; then
        cat /tmp/my-key >> /root/.ssh/authorized_keys
        chmod 700 /root/.ssh/authorized_keys
        rm /tmp/my-key
fi
```

------
#### [ IMDSv1 ]

```
if [ ! -d /root/.ssh ] ; then
        mkdir -p /root/.ssh
        chmod 700 /root/.ssh
fi
# Fetch public key using HTTP
curl http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key > /tmp/my-key
if [ $? -eq 0 ] ; then
        cat /tmp/my-key >> /root/.ssh/authorized_keys
        chmod 700 /root/.ssh/authorized_keys
        rm /tmp/my-key
fi
```

------

 Isso pode se aplicar a qualquer usuário; não precisa ficar restrito ao `root`.

**nota**  
Reempacotar uma instância baseada nessa AMI inclui a chave com a qual ela foi executada. Para evitar a inclusão de chaves, é necessário desmarcar (ou excluir) o arquivo `authorized_keys` ou excluir esse arquivo do reempacotamento. 

## Desabilitação de verificações de DNS para SSHD (opcional)
<a name="public-amis-disable-ssh-dns-lookups"></a>

Desabilitar as verificações de DNS sshd enfraquece levemente a segurança de sshd. Contudo, se uma solução de DNS falhar, o login de SSH continuará funcionando. Se você não desabilitar verificações de sshd, falhas de resolução de DNS impedirão todos os logins. 

**Para desabilitar as verificações de DNS sshd**

1. Abra o arquivo `/etc/ssh/sshd_config` com um editor de texto e localize a seguinte linha:

   ```
   #UseDNS yes
   ```

1. Altere a linha para: 

   ```
   UseDNS no
   ```

**nota**  
O local desse arquivo de configuração pode diferir para sua distribuição ou se você não estiver executando OpenSSH. Se esse for o caso, consulte a documentação apropriada. 

## Remover dados confidenciais
<a name="public-amis-protect-yourself"></a>

Não recomendamos armazenar dados confidenciais ou software em nenhuma AMI compartilhada. Os usuários que executarem uma AMI compartilhada podem ser capazes de reempacotá-la e registrá-la como própria. Siga estas diretrizes para ajudá-lo a evitar alguns riscos de segurança facilmente negligenciados: 
+ Recomendamos usar a opção `--exclude directory` em `ec2-bundle-vol` para ignorar todos os diretórios e subdiretórios que contêm informações secretas que você não gostaria de incluir no seu pacote. Mais especificamente, exclua todos os arquivos `authorized_keys` de pares de chaves públicas/privadas e SSH de propriedade do usuário ao empacotar a imagem. As AMIs públicas da Amazon os armazenam na `/root/.ssh` do usuário raiz e `/home/user_name/.ssh/` para os usuário regulares. Para obter mais informações, consulte [ec2-bundle-vol](ami-tools-commands.md#ami-bundle-vol).
+ Sempre exclua o histórico do shell antes de empacotar. Se você tentar fazer mais de um upload de bundle na mesma AMI, o histórico do shell conterá sua chave de acesso. O exemplo a seguir deve ser o último comando executado antes de empacotar na instância.

  ```
  [ec2-user ~]$ shred -u ~/.*history
  ```
**Atenção**  
As limitações de **shred** descritas no alerta acima aplicam-se aqui também.   
Esteja ciente de que, ao sair, o bash grava o histórico da sessão atual no disco. Se você fizer logout da sua instância após a exclusão de `~/.bash_history`, e depois fizer login de volta, descobrirá que `~/.bash_history` foi recriado e contém todos os comandos executados durante a sessão anterior.  
Outros programas além do bash também gravam históricos no disco. Use com cuidado e remova ou exclua arquivos-ponto ou diretórios-ponto desnecessários.
+ O empacotamento de uma instância em execução requer sua chave privada e o certificado X.509. Coloque essas e outras credenciais em um local que não seja empacotado (como armazenamento de instâncias).