

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 管理封鎖 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. 在導覽窗格中，選擇 **Dashboard (儀表板)**。

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. 在導覽窗格中，選擇 **Dashboard (儀表板)**。

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 的公有存取權」。在您要允許公開共用 AMIs 的每個 AWS 區域 中，您必須停用封鎖 AMIs的公開存取。

**所需的許可**  
若要停用封鎖 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. 在導覽窗格中，選擇 **Dashboard (儀表板)**。

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

------