配置对 EC2 Serial Console 的访问 - Amazon Elastic Compute Cloud
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

配置对 EC2 Serial Console 的访问

要配置对串行控制台的访问权限,您必须在账户级别授予串行控制台访问权限,然后配置 IAM policy 以向用户授予访问权限。

在开始之前,请务必查看先决条件

EC2 Serial Console 的访问级别

默认情况下,在账户级别无法访问串行控制台。您需要在账户级别明确授予对串行控制台的访问权限。有关更多信息,请参阅管理账户对 EC2 Serial Console 的访问权限

您可以使用服务控制策略 (SCP) 来允许在组织内访问串行控制台。然后,您可以使用 IAM policy 控制访问,从而在用户级别实现精确的访问控制。通过使用 SCP 和 IAM policy 的组合,您可以对串行控制台进行不同级别的访问控制。

组织级别

您可以使用服务控制策略 (SCP) 来允许组织内的成员账户访问串行控制台。有关 SCP 的更多信息,请参阅 Amazon Organizations 用户指南中的服务控制策略

实例级别

您可以通过使用 IAM PrincipalTag 和 ResourceTag 构造以及通过其 ID 指定实例,来配置串行控制台访问策略。有关更多信息,请参阅为 EC2 Serial Console 访问配置 IAM policy

用户级别

您可以通过配置 IAM policy 以允许或拒绝指定用户将 SSH 公钥推送到特定实例的串行控制台服务的权限,来配置用户级别的访问权限。有关更多信息,请参阅为 EC2 Serial Console 访问配置 IAM policy

管理账户对 EC2 Serial Console 的访问权限

默认情况下,在账户级别无法访问串行控制台。您需要在账户级别明确授予对串行控制台的访问权限。

授予用户账户访问管理权限

要允许用户管理对 EC2 Serial Console 的账户访问权限,您需要授予其所需的 IAM 权限。

以下策略授予查看账户状态以及允许和阻止账户访问 EC2 Serial Console 的权限。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:GetSerialConsoleAccessStatus", "ec2:EnableSerialConsoleAccess", "ec2:DisableSerialConsoleAccess" ], "Resource": "*" } ] }

有关更多信息,请参阅 IAM 用户指南 中的创建 IAM 策略

查看账户对串行控制台的访问权限状态

查看账户对串行控制台的访问权限状态(控制台)
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 在左侧导航窗格上,选择 EC2 Dashboard (EC2 控制面板)

  3. Account attributes(账户属性)中,选择 EC2 Serial Console

    EC2 Serial Console access(EC2 Serial Console 访问)字段指示账户访问权限为 Allowed(允许)还是 Prevented(阻止)。

    以下屏幕截图显示,阻止了该账户使用 EC2 Serial Console。

    
                对 EC2 Serial Console 的访问被阻止。
查看账户对串行控制台的访问权限状态 (Amazon CLI)

使用 get-serial-console-access-status 命令查看串行控制台的账户访问状态。

aws ec2 get-serial-console-access-status --region us-east-1

在以下输出中,true 表示允许该账户访问串行控制台。

{ "SerialConsoleAccessEnabled": true }

授予账户访问串行控制台的权限。

授予账户访问串行控制台的权限(控制台)
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 在左侧导航窗格上,选择 EC2 Dashboard (EC2 控制面板)

  3. Account attributes(账户属性)中,选择 EC2 Serial Console

  4. 选择管理

  5. 要允许访问账户中所有实例的 EC2 Serial Console,请选中 Allow(允许)复选框。

  6. 选择更新

授予账户访问串行控制台的权限 (Amazon CLI)

使用 enable-serial-console-access 命令允许账户访问串行控制台。

aws ec2 enable-serial-console-access --region us-east-1

在以下输出中,true 表示允许该账户访问串行控制台。

{ "SerialConsoleAccessEnabled": true }

拒绝账户访问串行控制台

拒绝账户访问串行控制台(控制台)
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 在左侧导航窗格上,选择 EC2 Dashboard (EC2 控制面板)

  3. Account attributes(账户属性)中,选择 EC2 Serial Console

  4. 选择管理

  5. 要阻止访问账户中所有实例的 EC2 Serial Console,请清除 Allow(允许)复选框。

  6. 选择更新

拒绝账户访问串行控制台 (Amazon CLI)

使用 disable-serial-console-access 命令阻止账户访问串行控制台。

aws ec2 disable-serial-console-access --region us-east-1

在以下输出中,false 表示拒绝该账户访问串行控制台。

{ "SerialConsoleAccessEnabled": false }

为 EC2 Serial Console 访问配置 IAM policy

默认情况下,用户无权访问串行控制台。您的组织必须配置 IAM policy 以授予用户所需的访问权限。有关更多信息,请参阅 IAM 用户指南 中的创建 IAM 策略

对于串行控制台访问,请创建包含 ec2-instance-connect:SendSerialConsoleSSHPublicKey 操作的 JSON 策略文档。此操作会授予用户将公钥推送到串行控制台服务的权限,该服务将启动串行控制台会话。我们建议限制对特定 EC2 实例的访问。否则,具有此权限的所有用户都可以连接到所有 EC2 实例的串行控制台。

明确允许访问串行控制台

默认情况下,没有人可以访问串行控制台。要授予对串行控制台的访问权限,您需要将策略配置为明确允许访问。我们建议配置一个策略以限制对特定实例的访问。

以下策略允许访问由实例 ID 标识的特定实例的串行控制台。

请注意,DescribeInstancesDescribeInstanceTypesGetSerialConsoleAccessStatus 操作不支持资源级权限,因此必须为这些操作指定以 *(星号)表示的所有资源。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowDescribeInstances", "Effect": "Allow", "Action": [ "ec2:DescribeInstances", "ec2:DescribeInstanceTypes", "ec2:GetSerialConsoleAccessStatus" ], "Resource": "*" }, { "Sid": "AllowinstanceBasedSerialConsoleAccess", "Effect": "Allow", "Action": [ "ec2-instance-connect:SendSerialConsoleSSHPublicKey" ], "Resource": "arn:aws:ec2:region:account-id:instance/i-0598c7d356eba48d7" } ] }

明确拒绝访问串行控制台

以下 IAM policy 允许访问标有 *(星号)的所有实例的串行控制台,并明确拒绝访问由 ID 标识的特定实例的串行控制台。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowSerialConsoleAccess", "Effect": "Allow", "Action": [ "ec2-instance-connect:SendSerialConsoleSSHPublicKey", "ec2:DescribeInstances", "ec2:DescribeInstanceTypes", "ec2:GetSerialConsoleAccessStatus" ], "Resource": "*" }, { "Sid": "DenySerialConsoleAccess", "Effect": "Deny", "Action": [ "ec2-instance-connect:SendSerialConsoleSSHPublicKey" ], "Resource": "arn:aws:ec2:region:account-id:instance/i-0598c7d356eba48d7" } ] }

使用资源标签控制对串行控制台的访问

您可以使用资源标签来控制对实例的串行控制台的访问。

基于属性的访问控制是一种授权策略,它根据可附加到用户和 Amazon 资源的标签来定义权限。例如,只有当实例的资源标签和委托人标签具有相同的标签键 SerialConsole 值时,以下策略才会允许用户启动该实例的串行控制台连接。

有关使用标签控制对Amazon资源的访问的更多信息,请参阅 IAM 用户指南中的控制对Amazon资源的访问

请注意,DescribeInstancesDescribeInstanceTypesGetSerialConsoleAccessStatus 操作不支持资源级权限,因此必须为这些操作指定以 *(星号)表示的所有资源。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowDescribeInstances", "Effect": "Allow", "Action": [ "ec2:DescribeInstances", "ec2:DescribeInstanceTypes", "ec2:GetSerialConsoleAccessStatus" ], "Resource": "*" }, { "Sid": "AllowTagBasedSerialConsoleAccess", "Effect": "Allow", "Action": [ "ec2-instance-connect:SendSerialConsoleSSHPublicKey" ], "Resource": "arn:aws:ec2:region:account-id:instance/*", "Condition": { "StringEquals": { "aws:ResourceTag/SerialConsole": "${aws:PrincipalTag/SerialConsole}" } } } ] }