8.2. 使用安全组和密钥对保护实例访问
安全组是一组 IP 过滤规则,它们控制网络和协议对实例的访问,如 ICMP,允许您 ping 实例,以及 SSH 允许您连接实例。
所有项目都有一个名为 default
的默认安全组,当您没有为实例指定安全组时使用。默认情况下,默认安全组允许所有传出流量,并拒绝来自同一安全组中实例以外的任何来源的所有传入流量。您可以在实例创建过程中将一个或多个安全组应用到实例。要将安全组应用到正在运行的实例,请将该安全组应用到与实例连接的端口。
有关安全组的更多信息,请参阅管理网络资源 中的 配置安全组。
要在云上执行 openstack
客户端命令,您必须指定 clouds.yaml
文件中详述的云名称。您可以使用以下方法之一指定云的名称:
在每个命令中使用
--os-cloud
选项,例如:openstack flavor list --os-cloud <cloud_name>
$ openstack flavor list --os-cloud <cloud_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您访问多个云,则使用此选项。
在
bashrc
文件中为云名称创建一个环境变量:`export OS_CLOUD=<cloud_name>`
`export OS_CLOUD=<cloud_name>`
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
您无法在实例创建过程中将基于角色的访问控制 (RBAC) 共享安全组直接应用到实例。要将 RBAC 共享安全组应用到实例,您必须首先创建端口,将共享安全组应用到该端口,然后将该端口分配给实例。请参阅 创建和管理实例 中的 向端口添加安全组。
密钥对是 SSH 或 x509 凭据,在实例启动时注入到实例中,以启用对实例的远程访问。您可以在 RHOSP 中创建新密钥对,或导入现有的密钥对。每个用户应至少有一个密钥对。密钥对可用于多个实例。
您无法在项目中的用户间共享密钥对,因为每个密钥对属于创建或导入密钥对的单独用户,而不是项目。
8.2.1. 将安全组添加到端口 复制链接链接已复制到粘贴板!
default
安全组应用于没有指定替代安全组的实例。您可以将替代安全组应用到正在运行的实例上的端口。
先决条件
-
管理员已为您创建一个项目,并为您提供了一个
clouds.yaml
文件来访问云。 -
已安装
python-openstackclient
软件包。
流程
确定您要将安全组应用到的实例上的端口:
openstack port list --server myInstancewithSSH
$ openstack port list --server myInstancewithSSH
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将安全组应用到端口:
openstack port set --security-group <sec_group> <port>
$ openstack port set --security-group <sec_group> <port>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 <
;sec_group
> 替换为您要应用到正在运行的实例端口的安全组的名称或 ID。您可以根据需要多次使用--security-group
选项应用多个安全组。
8.2.2. 从端口中删除安全组 复制链接链接已复制到粘贴板!
要从端口中删除安全组,首先需要删除所有安全组,然后重新添加您要分配给端口的安全组。
先决条件
-
管理员已为您创建一个项目,并为您提供了一个
clouds.yaml
文件来访问云。 -
已安装
python-openstackclient
软件包。
流程
列出与端口关联的所有安全组,并记录您要与端口关联的安全组 ID:
openstack port show <port>
$ openstack port show <port>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 删除与端口关联的所有安全组:
openstack port set --no-security-group <port>
$ openstack port set --no-security-group <port>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将安全组重新应用到端口:
openstack port set --security-group <sec_group> <port>
$ openstack port set --security-group <sec_group> <port>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 <
sec_group
> 替换为您要重新应用到运行的实例的安全组的 ID。您可以根据需要多次使用--security-group
选项应用多个安全组。
8.2.3. 生成一个新的 SSH 密钥对 复制链接链接已复制到粘贴板!
您可以创建一个新的 SSH 密钥对,以便在项目内使用。
使用 x509 证书为 Windows 实例创建密钥对。
先决条件
-
管理员已为您创建一个项目,并为您提供了一个
clouds.yaml
文件来访问云。 -
已安装
python-openstackclient
软件包。
流程
创建密钥对,并将私钥保存在您的本地
.ssh
目录中:ssh-keygen -f '<RSA key>' -e -m pem > ~/.ssh/<keypair>.pem
$ ssh-keygen -f '<RSA key>' -e -m pem > ~/.ssh/<keypair>.pem
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
<keypair
> 替换为新密钥对的名称。
-
将
保护私钥:
chmod 600 ~/.ssh/<keypair>.pem
$ chmod 600 ~/.ssh/<keypair>.pem
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
8.2.4. 导入现有的 SSH 密钥对 复制链接链接已复制到粘贴板!
您可以在 OpenShift (RHOSO)外部创建 Red Hat OpenStack Services (RHOSO)项目导入 SSH 密钥,方法是在创建新密钥对时提供公钥文件。
先决条件
-
管理员已为您创建一个项目,并为您提供了一个
clouds.yaml
文件来访问云。 -
已安装
python-openstackclient
软件包。
流程
从现有公钥文件创建密钥对,并将私钥保存在您的本地
.ssh
目录中:openstack keypair create --private-key ~/.ssh/<private_key> \ <keypair> > ~/.ssh/<keypair>.pem
$ openstack keypair create --private-key ~/.ssh/<private_key> \ <keypair> > ~/.ssh/<keypair>.pem
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将 <
private_key
> 替换为您要用来创建密钥对的公钥文件的名称。 -
将
<keypair
> 替换为新密钥对的名称。
-
将 <
保护私钥:
chmod 600 ~/.ssh/<keypair>.pem
$ chmod 600 ~/.ssh/<keypair>.pem
Copy to Clipboard Copied! Toggle word wrap Toggle overflow