跳至内容

为什么我无法删除附加到 Amazon VPC 的安全组?

2 分钟阅读
0

我在尝试删除 Amazon Virtual Private Cloud (Amazon VPC) 的安全组时收到错误。

解决方案

**注意:**如果您在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请参阅 AWS CLI 错误故障排除。此外,请确保您使用的是最新版本的 AWS CLI

确认该安全组不是默认安全组

每个 Amazon VPC 都有一个默认安全组。如果您启动新的 Amazon Elastic Compute Cloud (Amazon EC2) 实例且未指定默认安全组,则 AWS 会自动关联默认安全组。

如果您尝试删除默认安全组,您会收到以下错误:

“错误: Client.CannotDelete”

您无法删除默认安全组。但是,您可以修改默认安全组的规则

确保安全组规则未引用您的安全组

在删除安全组之前,请完成以下步骤以删除其安全组规则:

  1. 打开 Amazon VPC 控制台
  2. 在导航窗格中,选择安全组
  3. 选择要更新的安全组。
  4. 选择操作编辑入站规则,或选择操作编辑出站规则
  5. 为要删除的规则选择删除
  6. 选择 Save rules(保存规则)。

当您尝试删除被其他安全组的规则引用的安全组时,您会收到以下错误:

“调用 DeleteSecurityGroup 操作时出现错误 (DependencyViolation):资源 sg-xyz 具有依赖的对象”

移除其他安全组中引用您要删除的安全组的所有规则。

如果另一个 Amazon VPC 中已建立对等连接的安全组引用了您的安全组,请删除该规则或连接

**注意:**使用 DescribeSecurityGroupReferences API 来描述引用安全组的 Amazon VPC 对等连接的另一端。

取消与 AWS 资源关联的安全组的关联

如果您要删除的安全组与 AWS 资源关联,请取消其关联。您无法删除与 AWS 资源关联的安全组,如 Amazon EC2 实例或 Amazon API Gateway VPC 链接。

重要事项:创建 VPC 链接后,您无法更改其安全组或子网。

如果您收到以下错误,则说明您的安全组与 AWS 资源相关联:

“有些安全组无法删除。以下安全组无法删除。这些安全组是默认安全组,已由其他安全组引用,或与实例或网络接口关联。”

要确定哪些资源在使用安全组,请参阅如何查找与 Amazon EC2 安全组关联的资源?

删除与网络接口关联的安全组

您无法删除与请求者托管的网络接口关联的安全组。

要删除或分离网络接口,请参阅删除网络接口

您无法删除与 Amazon VPC 端点使用的网络接口关联的安全组。

当您尝试删除与 Amazon VPC 端点使用的网络接口关联的安全组时,您会收到以下错误:

“调用 DeleteSecurityGroup 操作时出现错误 (DependencyViolation):资源 sg-xyz 具有依赖的对象”

要从接口端点删除或替换安全组,请完成以下步骤:

  1. 打开 Amazon VPC 控制台
  2. 在导航窗格中,选择端点
  3. 选择接口端点,然后依次选择操作管理安全组
  4. 选择或清除相关安全组,然后选择 Save(保存)。

运行 AWS CLI 命令 describe-network-interfaces 查找与安全组关联的网络接口:

aws ec2 describe-network-interfaces --filters Name=group-id,Values=example-group-id --region example-region --output json

**注意:**将 example-group-id 替换为您的安全组的 ID,将 example-region 替换为您的 AWS 区域。

查看命令输出。如果输出为空,则您的安全组不与任何 AWS 资源关联。

命令输出示例:

{
    "NetworkInterfaces": []
}

对 Amazon VPC Lattice 服务网络中的安全组进行故障排除

当您删除附加到 Amazon VPC Lattice 服务网络 VPC 关联的安全组时,您会收到以下错误:

“errorCode”: “Client.DependencyViolation”

**注意:**如果您无法识别错误事件的名称,请在您的 CloudTrail 日志中检查 DeleteSecurityGroup 事件。

要对此错误进行故障排除,请完成以下步骤:

  1. 打开 Amazon VPC 控制台
  2. 导航到 VPC 服务。
  3. 在左侧导航窗格中,选择 Service networks(服务网络)。
  4. 从列表中选择一个服务网络
  5. 选择 VPC association(VPC 关联)选项卡,然后检查是否有任何关联 ID 与 snva-123b567891t1112a 相似的 VPC 关联。
  6. 选择与安全组关联的 VPC 关联 ID
  7. 在安全组部分中,选择 Edit(编辑)。然后,删除安全组。

设置执行 DeleteSecurityGroup 的权限

设置适当的 AWS Identity and Access Management (IAM) 权限以使用 DeleteSecurityGroup API。

**重要事项:**当要删除的安全组与某个实例关联或在另一个安全组中被引用时,DeleteSecurityGroup API 将失败。在这些情况下,操作会失败并显示 DependencyViolation 错误。

如果您在缺乏正确权限的情况下尝试删除安全组,则会收到以下错误:

“删除安全组失败。发生未知错误。您无权执行‘DeleteSecurityGroup’操作”

要解决 DeleteSecurityGroup 操作错误,请完成以下步骤:

  1. 打开 AWS CloudTrail 控制台
  2. 在导航窗格中,选择 Event history(事件历史记录)。
  3. Lookup attributes(查找属性)下拉列表中,选择 Event name(事件名称)。
  4. 在搜索框中,输入 DeleteSecurityGroup 查看操作的 API 调用。
    **注意:**Event history(事件历史记录)列表中的“您无权执行此操作”错误消息表明该错误与 IAM 权限有关。
  5. 检查 DeleteSecurityGroup 操作是否已添加到 IAM 用户或角色的策略中。
    有关更多信息,请参阅添加和删除 IAM 身份权限
  6. 在 AWS Organizations 中,更改您的组织的服务控制策略 (SCP)。然后,更改 IAM 用户或角色的权限。
    **注意:**如果您不是主 AWS 账户所有者,请让主账户所有者更改 SCP。有关 SCP 的详细信息,请参阅 SCP 对权限的影响

检查共享 VPC 中是否有安全组

当您尝试删除不归您所有的共享 Amazon VPC 中的安全组时,会收到以下错误:

“您无权执行‘DeleteSecurityGroup’操作。此 VPC 中的子网是共享子网,所提供的对象不归您所有。”

要解决 DeleteSecurityGroup 操作错误,请完成以下步骤:

  1. 打开 AWS CloudTrail 控制台
  2. 在导航窗格中,选择事件历史记录
  3. 查找属性下拉列表中,选择事件名称
  4. 在搜索框中,输入 DeleteSecurityGroup 查看操作的 API 调用。
  5. 确认您的账户不是该安全组的所有者。如果您组织中的另一个账户是该安全组的所有者,请让主所有者来删除安全组。

相关信息

如何删除与其他 AWS 账户共享的 VPC?

管理 VPC Lattice 服务网络的关联

AWS 官方已更新 10 个月前