GCP 操作系统登录创建user_domain帐户



我正在测试操作系统登录并创建了一个元数据为"enable-oslogin=TRUE"的实例。然后,我将操作系统登录角色添加到我的 account(user@mydomainname.com(。当我尝试时:

user@original_host$ gcloud compute ssh my_instance --project my_project --zone my_zone

GCP 允许我登录,但作为用户user_mydomainname而不是我的原始帐户"用户">

当我尝试时:

user@original_host$ ssh my_instance, it denied my login.

当我尝试时:

user@original_host$ ssh user_mydomainname@my_instance, it allowed me login, but as user_mydomainname of course.

我从谷歌阅读了一堆操作系统登录文档,但无法找出原因。在一个文档中:https://cloud.google.com/compute/docs/instances/managing-instance-access#login_messages

Expected login behaviors部分,它写道:"如果用户名不是由G Suite管理员设置的,OS Login会通过组合与用户的Google个人资料关联的电子邮件中的用户名和域来生成默认的Linux用户名。此命名约定可确保唯一性。例如,如果与Google个人资料关联的用户电子邮件是 user@example.com,则他们生成的用户名是user_example_com。

这看起来像我得到的,但我已为我的帐户设置了操作系统登录角色。

我期待使用操作系统登录角色设置,我可以以原始帐户登录实例:用户

我在这里错过了什么,或者这确实是预期的行为?是否可以让我的帐户"用户"使用操作系统登录而不获取user_mydomainname?

谢谢 菲利普

首先,我尝试通过以下文档在我的测试 VM 上检查它的操作系统登录功能:

  1. 创建虚拟机实例:

    $ gcloud compute instances create os-login-instance-1 --machine-type=n1-standard-1 --zone=europe-west3-a              
    Created [https://www.googleapis.com/compute/v1/projects/test-prj/zones/europe-west3-a/instances/os-login-instance-1].
    NAME                 ZONE            MACHINE_TYPE   PREEMPTIBLE  INTERNAL_IP    EXTERNAL_IP     STATUS
    os-login-instance-1  europe-west3-a  n1-standard-1               10.156.15.226  35.XXX.236.XXX  RUNNING
    
  2. 为 VM 启用操作系统登录功能:

    $ cloud compute instances add-metadata os-login-instance-1 --metadata enable-oslogin=TRUE --zone=europe-west3-a              
    Updated [https://www.googleapis.com/compute/v1/projects/test-prj/zones/europe-west3-a/instances/os-login-instance-1].
    
  3. 为 username@domain.com 添加角色roles/compute.osAdminLogin,使其能够使用sudo命令:

    $ gcloud projects add-iam-policy-binding test-prj 
    --member='user:username@domain.com' 
    --role='roles/compute.osAdminLogin'
    Updated IAM policy for project [test-prj].
    

您可以将roles/compute.osLogin用于非根访问权限。

  1. 创建用于连接的 SSH 密钥:

    $ ssh-keygen
    Generating public/private rsa key pair.
    
  2. 将 SSH 密钥上传到项目:

    gcloud compute os-login ssh-keys add --key-file .ssh/id_rsa.pub
    
  3. 连接到您的实例:

    $ ssh username_domain_com@35.242.236.114                          
    Linux os-login-instance-1 4.9.0-12-amd64 #1 SMP Debian 4.9.210-1 (2020-01-20) x86_64
    The programs included with the Debian GNU/Linux system are free software;
    the exact distribution terms for each program are described in the
    individual files in /usr/share/doc/*/copyright.
    Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
    permitted by applicable law.
    Creating directory '/home/username_domain_com'.
    username_domain_com@os-login-instance-1:~$ 
    $ gcloud compute ssh os-login-instance-1
    Linux os-login-instance-1 4.9.0-12-amd64 #1 SMP Debian 4.9.210-1 (2020-01-20) x86_64
    The programs included with the Debian GNU/Linux system are free software;
    the exact distribution terms for each program are described in the
    individual files in /usr/share/doc/*/copyright.
    Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
    permitted by applicable law.
    Last login: Mon Feb 17 12:32:56 2020 from 104.132.189.65
    username_domain_com@os-login-instance-1:~$ whoami
    username_domain_com
    

或者可以使用 FQDN 名称(应解析(而不是 IP。

正如我们所期望的那样,完整的电子邮件地址已转换,所有点和特殊字符都替换为与文档对应的下划线:

如果用户名不是由 G Suite 管理员设置的,则操作系统登录 通过组合用户名和 与用户的 Google 个人资料关联的电子邮件中的域。这 命名约定可确保唯一性。例如,如果用户发送电子邮件 与谷歌个人资料相关联的是user@example.com,然后他们的 生成的用户名为user_example_com

username@domain.com becomes -> username_domain_com

我能够连接到 VM,但名称username_domain_com

让我们看一下文档 如何将username_domain_com更改为同一文档中的username

G Suite 单位可以选择更改其默认设置以移除 新生成的用户名的域后缀。例如,如果 与谷歌个人资料关联的用户电子邮件user@example.com, 然后他们生成的用户名是user.有关详细信息,请参阅 管理操作系统登录 API。

在这里,您可以找到它以这种方式工作的更多详细信息:

操作系统登录将您的 Linux 用户帐户与您的 Google 身份相关联,以便 您具有一致的用户名、UID 和其他 POSIX 信息,在 您登录的每个虚拟机。这允许 VM 授权您的登录 使用 IAM 权限,以便您可以轻松撤销访问权限。这 POSIX 信息对于消费者身份是不可变的(非 G Suite 用户(。这可以防止不良行为者在 项目所有者无法管理的恶意方式。为了防止 不同组织之间的唯一性冲突 (user@gmail.comuser@example.com( 默认情况下包含域名。

因此,您可以在 G Suite 单位中使用username而不是username_domain.com,如果您是个人客户,则不能这样做。

用户名等设置取自目录 API。相关文档页面在这里:https://cloud.google.com/compute/docs/oslogin/manage-oslogin-in-an-org#modify-users

有关更多详细信息,您可能需要查看有关此处链接的目录 API 的文档。

最新更新