Terraform Azure 服务器访问问题
Terraform Azure Server Access Issue
在 terraform Azure 服务器中,我已将 ips 列入白名单,但除了管理员登录外无法访问服务器。是否需要额外的 configuration/role 来允许我缺少的活动目录访问权限?
脚本:
# Create Server using keyvault secrets for user/pw
resource "azurerm_sql_server" "sqlserver" {
name = "sql-${var.suffix}"
resource_group_name = var.resource_group_name
location = var.location
version = "12.0"
administrator_login = data.azurerm_key_vault_secret.sqlserverusr.value
administrator_login_password = data.azurerm_key_vault_secret.sqlserverpw.value
}
# Create SQL Server firewall rule for Azure resouces access
resource "azurerm_sql_firewall_rule" "azureservicefirewall" {
name = "allow-azure-service"
resource_group_name = var.resource_group_name
server_name = azurerm_sql_server.sqlserver.name
start_ip_address = "0.0.0.0"
end_ip_address = "0.0.0.0"
}
当您在 SQL 服务器防火墙中设置 start_ip_address = "0.0.0.0"
和 end_ip_address = "0.0.0.0"
时,实际上它设置了 允许 Azure 服务和资源访问此服务器 到 Yes
。这意味着您的服务器接受来自 Azure 边界内任何子网的通信,即源自被识别为在为 Azure 数据中心定义的范围内的 IP 地址之一。
如果您想从 Internet 访问您的 SQL 服务器,您需要添加客户端的 public IP 地址。然后这样改:
start_ip_address = "73.118.x.x"
end_ip_address = "73.118.x.x"
如果要将用户或组设置为 Azure SQL 服务器的 AD 管理员,可以使用 azurerm_sql_active_directory_administrator
data "azurerm_client_config" "current" {}
resource "azurerm_sql_active_directory_administrator" "example" {
server_name = azurerm_sql_server.sqlserver.name
resource_group_name = azurerm_resource_group.example.name
login = "sqladmin"
tenant_id = data.azurerm_client_config.current.tenant_id
object_id = data.azurerm_client_config.current.object_id
}
无论您使用何种身份验证方法,您仍然需要确保网络连接成功。
在 terraform Azure 服务器中,我已将 ips 列入白名单,但除了管理员登录外无法访问服务器。是否需要额外的 configuration/role 来允许我缺少的活动目录访问权限?
脚本:
# Create Server using keyvault secrets for user/pw
resource "azurerm_sql_server" "sqlserver" {
name = "sql-${var.suffix}"
resource_group_name = var.resource_group_name
location = var.location
version = "12.0"
administrator_login = data.azurerm_key_vault_secret.sqlserverusr.value
administrator_login_password = data.azurerm_key_vault_secret.sqlserverpw.value
}
# Create SQL Server firewall rule for Azure resouces access
resource "azurerm_sql_firewall_rule" "azureservicefirewall" {
name = "allow-azure-service"
resource_group_name = var.resource_group_name
server_name = azurerm_sql_server.sqlserver.name
start_ip_address = "0.0.0.0"
end_ip_address = "0.0.0.0"
}
当您在 SQL 服务器防火墙中设置 start_ip_address = "0.0.0.0"
和 end_ip_address = "0.0.0.0"
时,实际上它设置了 允许 Azure 服务和资源访问此服务器 到 Yes
。这意味着您的服务器接受来自 Azure 边界内任何子网的通信,即源自被识别为在为 Azure 数据中心定义的范围内的 IP 地址之一。
如果您想从 Internet 访问您的 SQL 服务器,您需要添加客户端的 public IP 地址。然后这样改:
start_ip_address = "73.118.x.x"
end_ip_address = "73.118.x.x"
如果要将用户或组设置为 Azure SQL 服务器的 AD 管理员,可以使用 azurerm_sql_active_directory_administrator
data "azurerm_client_config" "current" {}
resource "azurerm_sql_active_directory_administrator" "example" {
server_name = azurerm_sql_server.sqlserver.name
resource_group_name = azurerm_resource_group.example.name
login = "sqladmin"
tenant_id = data.azurerm_client_config.current.tenant_id
object_id = data.azurerm_client_config.current.object_id
}
无论您使用何种身份验证方法,您仍然需要确保网络连接成功。