我正在尝试通过cloud shell
和cloud SDK
连接到没有外部IP地址的google cloud VM实例。
Google文档说我们可以使用IAP进行连接 通过IAP连接:引用 using IAP
a)将roles/iap.tunnelResourceAccessor
角色授予要连接到 VM 的用户。
b)使用以下命令连接到 VM
gcloud compute ssh instance-name --zone zone
或
使用IAP
进行TCP
转发:请参考using TCP forwarding
我们还可以通过使用端口IP
为'35.235.240.0/20'
TCP:22
设置入口防火墙规则来进行连接
并选择一个IAM
角色选择Cloud IAP > IAP-Secured Tunnel User
这两种不同方法之间的区别是什么,这两个独立的IAM角色有什么区别
roles/iap.tunnelResourceAccessor
IAP-secured Tunnel User
我是云的新手,所以请掌握我的基本知识。
答案 0 :(得分:2)
这是完全一样的东西。看this page
IAP保护的隧道用户(roles / iap.tunnelResourceAccessor)
您具有在GUI中看到的角色的显示名称:IAP-Secured Tunnel User
,并且具有在脚本和CLI中必须使用的角色roles/iap.tunnelResourceAccessor
的技术名称>
答案 1 :(得分:1)
问题(“ refer using IAP”)中提到的链接实际上指向 Connecting to instances that do not have external IP addresses > Connecting through a bastion host。 通过堡垒主机进行连接是除通过IAP访问之外的另一种方法。
如文档Connecting to instances that do not have external IP addresses > Connecting through IAP中所述,
IAP的TCP转发功能在HTTPS内包装了SSH连接。 然后,IAP的TCP转发功能会将其发送到远程实例。
因此,问题的两个部分(或之前或之后)都属于同一访问方法:Connect using Identity-Aware Proxy for TCP forwarding。因此,第一个问题的答案是“没有区别” ,因为所有这些都描述了IAP TCP转发的工作方式,以及设置和使用IAP TCP的步骤:
1。。创建一个防火墙规则,该规则:
35.235.240.0/20
(此范围包含IAP用于TCP转发的所有IP地址)的入口流量; 22
。2。。授予使用IAP的权限:
IAP-Secured Tunnel User
(roles/iap.tunnelResourceAccessor
)。Owner
访问项目的用户始终有权使用IAP进行TCP转发。3。。使用以下工具之一连接到目标VM:
SSH
按钮; gcloud compute ssh INSTANCE_NAME
有一个重要的解释,说明如何调用IAP TCP转发来访问没有公共IP的VM实例。参见Identity-Aware Proxy > Doc > Using IAP for TCP forwarding:
注意。如果实例没有公共IP地址,则该连接自动使用IAP TCP隧道。如果实例确实具有公共IP地址,则连接将使用公共IP地址而不是IAP TCP隧道。
您可以使用--tunnel-through-iap
标志,以便gcloud compute ssh
始终使用IAP TCP隧道。
guillaume blaquiere已经注意到,roles/iap.tunnelResourceAccessor
和IAP-secured Tunnel User
不是不同的IAM角色,而是角色名称和角色标题< / strong>。还有一种资源可以方便地表示这一点:
Cloud IAM > Doc > Understanding roles > Predefined roles > Cloud IAP roles