Terraform Azure Linux VM with Azure AD Access



我正试图用Terraform提供一个简单的Ubuntu Linux虚拟机,允许用户使用他们的Azure AD凭据进行连接。我是Terraform的新手,我正在努力寻找正确的资源部分/命令;使用Azure AD登录";在下面的屏幕截图链接中显示的GUI中进行设置。

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"
}
}

我还有一个相关但次要的问题;我不确定是否需要单独提问/发帖。我通过GUI手动创建了一个VM;使用Azure AD登录";,尝试连接

az ssh vm --ip XXX.XXX.XXX.XXX

并接收

Permission denied (publickey).

我没有指定用户需要使用ssh密钥进行连接(至少不是有意的(。我是否需要添加另一个部分来允许经过身份验证的AD用户进行基本的SSH访问?

要使用Azure AD登录到linux虚拟机,您需要执行以下操作。

  1. 安装AAD linux扩展,它似乎是根据您的屏幕截图安装的
  2. 启用系统分配的托管标识,方便AD登录。我看到这也是被创造出来的
  3. 如屏幕截图上的"Azure AD"部分所述,您需要通过RBAC在VM资源上分配Virtual Machine Administrator LoginVirtual 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>
}

最新更新