【Azure】处理创建Azure AD用户时的密码情况在创建Azure AD用户时,处理密码问题

简而言之

在使用Terraform创建AzureAD用户时,需要在Terraform代码中包含要设置为AzureAD用户的密码。然而,如果在Terraform代码中以明文形式包含密码,那么密码信息将包含在用于代码管理的存储库中。

在AWS中,可以使用GnuPG来加密IAM用户的密码和机密访问密钥,就像参考网址中所示的方法一样。

请参考以下URL:https://qiita.com/takkii1010/items/eef57e29be6cb7061d95

然而,在Azure上不能使用类似的方法。
因此,我们使用了Terraform的random提供程序,在Terraform代码中实现了不包含密码信息的方法。

要在Terraform中处理变量时处理机密信息的常见方法是什么?

如果想要将密码等秘密信息以Terraform的变量方式处理,通常需要将其写入环境变量或外部文件,并在执行Terraform代码时进行读取。
同时,需要在.gitignore中指定外部文件,以避免将其注册到代码仓库中。

在这种方法中,Terraform的代码中不包含密码信息。
然而,需要管理包含环境变量和密码信息的外部文件,这会增加信息泄漏的风险和管理的工作量。

关于此次实施的方法

这是一种将随机生成的字符串分配给初始密码,并在首次登录时强制更改密码的方法。

您可以通过将随机生成的密码输出到tfstate或Terraform执行时的Output中来确认。通过使用生成的密码进行登录并更改密码,可以确保tfstate和Terraform代码中不包含有效密码。

使用随机提供程序生成的随机字符串,应设置为符合Azure密码策略的要求,包括至少包含一个大写字母、一个小写字母、一个数字和一个特殊字符。

当使用特殊字符时,默认情况下包含一些Azure不支持的字符,因此需要使用名为”override_special”的参数重新定义要使用的特殊字符。

关于具体实现方法

在这里,我们将设置一个随机字符串作为初始密码,并记录了关于如何具体实施在首次登录时强制用户更改密码的方法。

版本信息

在实施过程中使用的各个版本如下所示。

    • Terraform: 0.15.4

 

    • hashicorp/random: 3.1.0

 

    hashicorp/azuread: 1.5.0

Terraform 代码

可以使用名为random_password的资源来生成指定长度和字符的随机字符串。
通过将生成的字符串设置为azuread_user的密码,可以创建一个被分配了随机密码的AzureAD用户。

另外,您可以通过启用”azuread_user”用户的”force_password_change”来强制要求在AzureAD用户首次登录时进行密码更改。

resource "random_password" "password" {
  length      = 15
  number      = true
  lower       = true
  upper       = true
  special     = true
  min_numeric = 1
  min_lower   = 1
  min_upper   = 1
  min_special = 1
  override_special = "!@#$%&*()-_=+[]{}:?"
}

resource "azuread_user" "user" {
  user_principal_name     = "sample.user@example.com"
  display_name            = "sample.user"
  password                = random_password.password.result
  force_password_change   = true
  usage_location          = "JP"
}

指定长度
指定生成随机字符串的字符数量。
在AzureAD密码策略中,要求密码长度至少为8个字符,但在此处我们根据《用密码构建数字防御》的建议,将密码设定为15个字符。

在AzureAD密码策略中,要求至少使用大写字母、小写字母、数字和特殊字符中的三种以上,因此您需要将上述参数中至少有三个设置为true。

override_special 用于设置可在密码中使用的特殊字符。
如果将 special 设置为 true,则默认情况下 AzureAD 不允许使用的特殊字符将被包含在其中,因此需要通过 override_special 进行覆盖。
有关可在 AzureAD 中使用的特殊字符,请参考 AzureAD 密码策略。

強制密码更改

有关其他参数的详细信息,请参阅以下Terraform官方文档。

    • random_password

 

    azuread_user

总结

在使用Terraform创建AzureAD用户时,有几种处理密码的方法可供选择,但本次记录的是将随机生成的字符串分配给AzureAD用户,以在首次登录时强制用户更改密码的方法。

如果您使用Terraform来管理AzureAD账户,请参考以下内容。

广告
将在 10 秒后关闭
bannerAds