具有 Azure AD 访问权限的 Terraform Azure Linux VM
Terraform Azure Linux VM with Azure AD Access
我正在尝试使用 Terraform 提供一个简单的 Ubuntu Linux VM,允许用户使用他们的 Azure AD 凭据进行连接。我是 Terraform 的新手,我正在尝试寻找正确的资源 section/command 以启用下面屏幕截图 link 中显示的 GUI 中的“使用 Azure AD 登录”设置。
https://i.stack.imgur.com/Gg9p8.png
这是配置 VM 的代码片段:
resource "azurerm_linux_virtual_machine" "dev" {
name = "devhost01"
resource_group_name = azurerm_resource_group.dev.name
location = azurerm_resource_group.ev.location
size = "Standard_D2s_v3"
admin_username = "admin"
network_interface_ids = [
azurerm_network_interface.dev.id,
]
admin_ssh_key {
username = "admin"
public_key = file("~/.ssh/admin.pub")
}
os_disk {
caching = "ReadWrite"
storage_account_type = "Standard_LRS"
}
source_image_reference {
publisher = "Canonical"
offer = "UbuntuServer"
sku = "18.04-LTS"
version = "latest"
}
}
我也有一个相关但次要的问题;我不确定它是否需要一个单独的 question/post。我通过启用“使用 Azure AD 登录”的 GUI 手动创建了一个 VM,尝试连接
az ssh vm --ip XXX.XXX.XXX.XXX
并收到
Permission denied (publickey).
我没有指定用户需要使用 ssh 密钥进行连接(至少不是故意的)。我是否需要添加另一部分以允许经过身份验证的 AD 用户进行基本 SSH 访问?
使用 Azure AD 登录 linux 虚拟机。您需要执行以下操作。
- 安装 AAD linux 扩展,它似乎已按照您的屏幕截图安装
- 启用系统分配的托管标识,这有助于 AD 登录。我看到这个也在创建中。
- 如屏幕截图的“Azure AD”部分所述,您需要通过 RBAC 在 VM 资源上分配
Virtual Machine Administrator Login
或 Virtual Machine User Login
角色之一。
第三个和它的前辈一样重要,允许AD登录。
执行所有三个步骤后,az ssh vm --ip XXX.XXX.XXX.XXX
会让您登录到 VM。
更新
----按评论要求添加tf代码-----
将托管标识添加到 VM 资源
resource "azurerm_linux_virtual_machine" "dev" {
// blah-blah
identity {
type = "SystemAssigned"
}
}
添加角色分配
resource "azurerm_role_assignment" "assign-vm-role" {
scope = azurerm_linux_virtual_machine.dev.id
role_definition_name = "Virtual Machine Administrator Login"
principal_id = <id-of-group/user/sp>
}
我正在尝试使用 Terraform 提供一个简单的 Ubuntu Linux VM,允许用户使用他们的 Azure AD 凭据进行连接。我是 Terraform 的新手,我正在尝试寻找正确的资源 section/command 以启用下面屏幕截图 link 中显示的 GUI 中的“使用 Azure AD 登录”设置。
https://i.stack.imgur.com/Gg9p8.png
这是配置 VM 的代码片段:
resource "azurerm_linux_virtual_machine" "dev" {
name = "devhost01"
resource_group_name = azurerm_resource_group.dev.name
location = azurerm_resource_group.ev.location
size = "Standard_D2s_v3"
admin_username = "admin"
network_interface_ids = [
azurerm_network_interface.dev.id,
]
admin_ssh_key {
username = "admin"
public_key = file("~/.ssh/admin.pub")
}
os_disk {
caching = "ReadWrite"
storage_account_type = "Standard_LRS"
}
source_image_reference {
publisher = "Canonical"
offer = "UbuntuServer"
sku = "18.04-LTS"
version = "latest"
}
}
我也有一个相关但次要的问题;我不确定它是否需要一个单独的 question/post。我通过启用“使用 Azure AD 登录”的 GUI 手动创建了一个 VM,尝试连接
az ssh vm --ip XXX.XXX.XXX.XXX
并收到
Permission denied (publickey).
我没有指定用户需要使用 ssh 密钥进行连接(至少不是故意的)。我是否需要添加另一部分以允许经过身份验证的 AD 用户进行基本 SSH 访问?
使用 Azure AD 登录 linux 虚拟机。您需要执行以下操作。
- 安装 AAD linux 扩展,它似乎已按照您的屏幕截图安装
- 启用系统分配的托管标识,这有助于 AD 登录。我看到这个也在创建中。
- 如屏幕截图的“Azure AD”部分所述,您需要通过 RBAC 在 VM 资源上分配
Virtual Machine Administrator Login
或Virtual Machine User Login
角色之一。
第三个和它的前辈一样重要,允许AD登录。
执行所有三个步骤后,az ssh vm --ip XXX.XXX.XXX.XXX
会让您登录到 VM。
更新
----按评论要求添加tf代码-----
将托管标识添加到 VM 资源
resource "azurerm_linux_virtual_machine" "dev" {
// blah-blah
identity {
type = "SystemAssigned"
}
}
添加角色分配
resource "azurerm_role_assignment" "assign-vm-role" {
scope = azurerm_linux_virtual_machine.dev.id
role_definition_name = "Virtual Machine Administrator Login"
principal_id = <id-of-group/user/sp>
}