为什么我无法删除附加到 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)实例关联。

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

"error: Client.CannotDelete"

您无法删除默认安全组。但是,可以更改默认安全组的规则。有关更多信息,请参阅 您的 VPC 的默认安全组

该安全组规则引用自己的安全组,或者其他安全组的规则引用该安全组

如果安全组自己的规则引用了这个安全组,则您可能会遇到错误。要解决此问题,请在删除安全组之前删除该规则。

要删除引用该安全组的规则,请完成以下步骤:

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

有关修改安全组规则的更多信息,请参阅安全组规则

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

"An error occurred (DependencyViolation) when calling the DeleteSecurityGroup operation: resource sg-xyz has a dependent object"

如果其他安全组的规则引用了您要删除的安全组,请在删除该安全组之前删除相关规则。

另一个 Amazon VPC 中已建立对等连接的安全组可能会引用要删除的安全组。在删除该安全组之前,请删除这个规则或删除 Amazon VPC 对等连接

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

该安全组与 AWS 资源关联

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

您会收到以下错误:

"Some security groups can't be deleted.The following security groups can't be deleted.These security groups are the default security groups, referenced by other security groups, or are associated with instances or network interfaces."

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

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

要更改分配给实例的安全组,请参阅使用安全组

该安全组与网络接口关联

您无法删除与请求者托管的网络接口相关联的安全组。请求者托管的网络接口是为托管资源(例如应用程序负载均衡器节点)自动创建的。某些 AWS 服务和资源具有始终附加到弹性网络接口的安全组。示例包括 AWS Lambda、Amazon FSx、Amazon ElastiCache for Redis 和 ElastiCache for Memcached。

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

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

当您尝试删除安全组时,会收到以下错误:

"An error occurred (DependencyViolation) when calling the DeleteSecurityGroup operation: resource sg-xyz has a dependent object"

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

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

运行 AWS CLI 命令 describe-network-interfaces 查找与安全组关联的网络接口。将 <group-id> 替换为您的安全组 ID,并将 <region> 替换为您的 AWS 区域:

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

查看命令输出。如果输出为空,则表示没有资源与该安全组关联。

命令输出示例:

{
    "NetworkInterfaces": []
}

您无权执行 DeleteSecurityGroup 操作

您必须设置适当的 AWS Identity and Access Management(IAM)权限,才能使用 DeleteSecurityGroup API。

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

当您尝试删除安全组,但没有正确的权限时,您会收到以下错误:

"Failed to delete security groups.An unknown error happened.You are not authorized to perform "DeleteSecurityGroup" operation"

要故障排除 DeleteSecurityGroup 操作错误,请完成以下步骤:

  1. 打开 AWS CloudTrail 控制台
  2. 在导航窗格中,选择事件历史记录
  3. 查找属性下拉列表中,选择事件名称
  4. 在搜索框中,输入 DeleteSecurityGroup 以查看该操作的 API 调用。
  5. 事件历史记录列表中的以下错误消息表明该错误与 IAM 权限有关:
    "You are not authorized to perform this operation."
  6. 检查是否已将 DeleteSecurityGroup 操作添加到执行删除操作的用户或角色的必要 AWS IAM 策略。
    有关更多信息,请参阅添加和删除 IAM 身份权限
  7. 在 AWS Organizations 中,更改组织的服务控制策略(SCP)。接着更改 IAM 用户或角色的权限。
    **注意:**如果您不是主账户所有者,请要求主账户所有者更改 SCP。

有关 SCP 的更多信息,请参阅 SCP 对权限的影响

用户无法删除 VPC 所有者创建的安全组

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

"You are not authorized to perform DeleteSecurityGroup operation.A subnet in this vpc is shared but the provided object is not owned by you."

要故障排除 DeleteSecurityGroup 操作错误,请完成以下步骤:

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

相关信息

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

AWS 官方
AWS 官方已更新 6 个月前
没有评论