

# AMI에 대한 퍼블릭 액세스 치단 이해
<a name="block-public-access-to-amis"></a>

AMI의 퍼블릭 공유를 방지하려면 계정 수준에서 *AMI에 대한 퍼블릭 액세스 차단*을 활성화할 수 있습니다.

퍼블릭 액세스 차단을 활성화하면 AMI를 퍼블릭으로 설정하려는 모든 시도가 자동으로 차단됩니다. 하지만 이미 퍼블릭 AMI가 있는 경우에는 계속 공개적으로 사용할 수 있습니다.

AMI를 공개적으로 공유하려면 퍼블릭 액세스 차단을 비활성화해야 합니다. 공유를 완료한 후에는 퍼블릭 액세스 차단을 다시 활성화하여 의도하지 않은 AMI의 퍼블릭 공유를 방지하는 것이 좋습니다.

**참고**  
이 설정은 계정 수준에서 직접 구성되거나 선언적 정책을 사용하여 구성됩니다. AMI의 퍼블릭 공유를 방지하려는 각 AWS 리전에 구성해야 합니다. 선언적 정책을 사용하면 여러 리전과 여러 계정에 동시에 설정을 적용할 수 있습니다. 선언적 정책을 사용 중인 경우 계정 내에서 직접 설정을 수정할 수 없습니다. 이 주제에서는 계정 내에서 직접 설정을 구성하는 방법을 설명합니다. 선언적 정책 사용에 대한 자세한 내용은 *AWS Organizations 사용 설명서*의 [선언적 정책](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_declarative.html)을 참조하세요.

관리자 사용자만 AMI에 대한 퍼블릭 액세스 차단을 활성화하거나 비활성화할 수 있도록 IAM 권한을 제한할 수 있습니다.

**Topics**
+ [기본 설정](#block-public-access-to-amis-default-settings)
+ [AMI에 대한 퍼블릭 액세스 차단 설정 관리](manage-block-public-access-for-amis.md)

## 기본 설정
<a name="block-public-access-to-amis-default-settings"></a>

**AMI에 대한 퍼블릭 액세스 차단** 설정은 계정이 신규 또는 기존 계정인지와 퍼블릭 AMI가 있는지 여부에 따라 기본적으로 활성화 또는 비활성화됩니다. 다음 표 기본 설정이 나와 있습니다.


| AWS 계정 | AMI에 대한 퍼블릭 액세스 차단 기본 설정 | 
| --- | --- | 
| 신규 계정 | 활성화됨 | 
|  퍼블릭 AMI가 없는 기존 계정¹  | 활성화됨 | 
|  하나 이상의 퍼블릭 AMI가 있는 기존 계정  | 비활성화됨 | 

¹ 2023년 7월 15일 또는 그 이후에 계정에 하나 이상의 퍼블릭 AMI가 있는 경우, 이후에 모든 AMI를 프라이빗으로 전환했더라도 **AMI에 대한 퍼블릭 액세스 차단**은 계정에 대해 기본적으로 비활성화됩니다.

# AMI에 대한 퍼블릭 액세스 차단 설정 관리
<a name="manage-block-public-access-for-amis"></a>

AMI에 대한 퍼블릭 액세스 차단 설정을 관리하여 AMI를 공개적으로 공유할 수 있는지 여부를 제어할 수 있습니다. Amazon EC2 콘솔 또는 AWS CLI를 사용하여 AMI에 대한 현재 퍼블릭 액세스 차단 상태를 활성화하거나 비활성화하거나 볼 수 있습니다.

## AMI에 대한 퍼블릭 액세스 차단 상태 보기
<a name="get-block-public-access-state-for-amis"></a>

AMI의 퍼블릭 공유가 계정에서 차단되었는지 확인하려면 AMI에 대한 퍼블릭 액세스 차단 상태를 확인해 볼 수 있습니다. AMI의 퍼블릭 공유가 차단되었는지 여부를 확인하고자 하는 각 AWS 리전의 상태를 확인해야 합니다.

**필수 권한**  
AMI에 대한 현재 퍼블릭 액세스 치단 설정을 가져오려면 `GetImageBlockPublicAccessState` IAM 권한이 있어야 합니다.

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

**지정된 리전의 AMI에 대한 퍼블릭 액세스 차단 상태를 보는 방법**

1. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)에서 Amazon EC2 콘솔을 엽니다.

1. 탐색 모음(화면 상단)에서 AMI에 대한 퍼블릭 액세스 차단 상태를 확인하고자 하는 리전을 선택합니다.

1. 탐색 창에서 **대시보드**를 선택합니다.

1. **계정 속성** 카드의 **설정**에서 **데이터 보호 및 보안**을 선택합니다.

1. **AMI에 대한 공개 액세스 차단**에서 **퍼블릭 액세스** 필드를 선택합니다. 값은 **새 퍼블릭 공유 차단됨** 또는 **새 퍼블릭 공유 허용됨**으로 표시됩니다.

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

**AMI의 퍼블릭 액세스 차단 상태를 가져오려면**  
[get-image-block-public-access-state](https://docs.aws.amazon.com/cli/latest/reference/ec2/get-image-block-public-access-state.html) 명령을 사용합니다. 이때 값은 `block-new-sharing` 또는 `unblocked`입니다.

**예제: 특정 리전**

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

`ManagedBy` 필드는 설정을 구성한 엔터티를 나타냅니다. 이 예제의 `account`는 해당 설정이 계정에서 직접 구성되었음을 나타냅니다. 값이 `declarative-policy`이면 설정이 선언적 정책에 의해 구성되었음을 의미합니다. 자세한 내용은 *AWS Organizations 사용 설명서*의 [선언적 정책](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_declarative.html)을 참조하세요.

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

**예제 계정 내 모든 리전**

```
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
```

다음은 예제 출력입니다.

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

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

**AMI의 퍼블릭 액세스 차단 상태를 가져오려면**  
[Get-EC2ImageBlockPublicAccessState](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2ImageBlockPublicAccessState.html) cmdlet을 사용합니다. 이때 값은 `block-new-sharing` 또는 `unblocked`입니다.

**예제: 특정 리전**

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

다음은 예제 출력입니다.

```
block-new-sharing
```

**예제 계정 내 모든 리전**

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

다음은 예제 출력입니다.

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

------

## AMI에 대한 퍼블릭 액세스 치단 활성화
<a name="enable-block-public-access-for-amis"></a>

AMI의 퍼블릭 공유를 방지하려면 계정 수준에서 AMI에 대한 퍼블릭 액세스 차단을 활성화합니다. AMI의 퍼블릭 공유를 방지하려는 각 AWS 리전에서 AMI에 대한 퍼블릭 액세스 차단을 활성화해야 합니다. 이미 퍼블릭 AMI가 있는 경우에는 계속 공개적으로 사용할 수 있습니다.

**필수 권한**  
AMI에 대해 퍼블릭 액세스 차단 설정을 활성화하려면 `EnableImageBlockPublicAccess` IAM 권한이 있어야 합니다.

**고려 사항**
+ 이 설정을 구성하는 데에는 최대 10분이 걸릴 수 있습니다. 이 시간 동안 퍼블릭 액세스 상태를 설명하면 응답은 `unblocked`입니다. 구성이 완료되면 응답은 `block-new-sharing`입니다.

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

**지정된 리전의 AMI에 대한 퍼블릭 액세스 차단 활성화**

1. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)에서 Amazon EC2 콘솔을 엽니다.

1. 탐색 모음(화면 상단)에서 AMI에 대한 공개 액세스 차단을 활성화하려는 리전을 선택합니다.

1. 탐색 창에서 **대시보드**를 선택합니다.

1. **계정 속성** 카드의 **설정**에서 **데이터 보호 및 보안**을 선택합니다.

1. **AMI에 대한 퍼블릭 액세스 차단**에서 **관리**를 선택합니다.

1. **새 퍼블릭 공유 차단** 확인란을 선택한 다음 **업데이트**를 선택합니다.

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

**AMI에서 퍼블릭 액세스 차단을 활성화하려면**  
[enable-image-block-public-access](https://docs.aws.amazon.com/cli/latest/reference/ec2/enable-image-block-public-access.html) 명령을 사용합니다.

**예제: 특정 리전**

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

다음은 예제 출력입니다.

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

**예제 계정 내 모든 리전**

```
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
```

다음은 예제 출력입니다.

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

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

**AMI에서 퍼블릭 액세스 차단을 활성화하려면**  
[Enable-EC2ImageBlockPublicAccess](https://docs.aws.amazon.com/powershell/latest/reference/items/Enable-EC2ImageBlockPublicAccess.html) 명령을 사용합니다.

**예제: 특정 리전**

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

다음은 예제 출력입니다.

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

**예제 계정 내 모든 리전**

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

다음은 예제 출력입니다.

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

------

## AMI에 대한 퍼블릭 액세스 치단 비활성화
<a name="disable-block-public-access-for-amis"></a>

계정의 사용자가 AMI를 공개적으로 공유할 수 있도록 허용하려면 계정 수준에서 퍼블릭 액세스 차단을 비활성화하세요. AMI의 퍼블릭 공유를 허용하려는 각 AWS 리전에서 AMI에 대한 퍼블릭 액세스 차단을 비활성화해야 합니다.

**필수 권한**  
AMI에 대해 퍼블릭 액세스 차단 설정을 비활성화하려면 `DisableImageBlockPublicAccess` IAM 권한이 있어야 합니다.

**고려 사항**
+ 이 설정을 구성하는 데에는 최대 10분이 걸릴 수 있습니다. 이 시간 동안 퍼블릭 액세스 상태를 설명하면 응답은 `block-new-sharing`입니다. 구성이 완료되면 응답은 `unblocked`입니다.

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

**지정된 리전의 AMI에 대한 퍼블릭 액세스 차단 비활성화**

1. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)에서 Amazon EC2 콘솔을 엽니다.

1. 탐색 모음(화면 상단)에서 AMI에 대한 퍼블릭 액세스 차단을 비활성화할 리전을 선택합니다.

1. 탐색 창에서 **대시보드**를 선택합니다.

1. **계정 속성** 카드의 **설정**에서 **데이터 보호 및 보안**을 선택합니다.

1. **AMI에 대한 퍼블릭 액세스 차단**에서 **관리**를 선택합니다.

1. **새 퍼블릭 공유 차단** 확인란을 선택 취소한 다음 **업데이트**를 선택합니다.

1. 확인 메시지가 나타나면 **confirm**을 입력한 다음 **퍼블릭 공유 허용**을 선택합니다.

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

**AMI에서 퍼블릭 액세스 차단을 비활성화하려면**  
[disable-image-block-public-access](https://docs.aws.amazon.com/cli/latest/reference/ec2/disable-image-block-public-access.html) 명령을 사용합니다.

**예제: 특정 리전**

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

다음은 예제 출력입니다.

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

**예제 계정 내 모든 리전**

```
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
```

다음은 예제 출력입니다.

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

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

**AMI에서 퍼블릭 액세스 차단을 비활성화하려면**  
[Disable-EC2ImageBlockPublicAccess](https://docs.aws.amazon.com/powershell/latest/reference/items/Disable-EC2ImageBlockPublicAccess.html) cmdlet을 사용합니다.

**예제: 특정 리전**

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

다음은 예제 출력입니다.

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

**예제 계정 내 모든 리전**

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

다음은 예제 출력입니다.

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

------