Azure Terraform(十四)Azure Key Vault 的机密管理
一,引言
最近有网友私信我,将 Terraform 部署到 Azure 是一种将基础结构作为代码进行管理的好方法,但是如何使用 Azure Key Vault 来存储我们的 Secret ?在这篇博文中,我将给大家展示一下展示如何使用 Terraform 引用 Azure Key Vault Secret。
1)这个时候就有人问了,Secret 信息为什么要存储在 Azure Key Vault ?
Azure Key Vault 是在 Azure 中存储机密的好方法。它是存储和访问 Secret 的安全场所。您可以生成、存储和控制对令牌、密码、证书、API 密钥和其他秘密的访问。
让我们一起开始今天的内容来展示如何做到这一点 ?
二,正文
1,使用 Terraform 创建 Azure Key Vault
让我们使用Terraform 创建一个 Key Vault
data "azurerm_resource_group" "cnbate_resource_group" {
name = "Web_Test_TF_RG"
} resource "azurerm_key_vault" "keyvault1" {
name = "cnbateblogwebkv"
resource_group_name = data.azurerm_resource_group.cnbate_resource_group.name
tenant_id = data.azurerm_client_config.current.tenant_id
sku_name = "standard"
location = data.azurerm_resource_group.cnbate_resource_group.location
access_policy {
tenant_id = data.azurerm_client_config.current.tenant_id
object_id = data.azurerm_client_config.current.object_id secret_permissions = [
"Get",
"List",
"Set",
"Delete"
]
}
}
2,使用 Terraform 和 Azure CLI 创建 Secret
Terraform:
resource "azurerm_key_vault_secret" "keyvault_secret1" {
name = "Name1"
value = "cnbatelisi"
key_vault_id = azurerm_key_vault.kv.id
}
使用 Azure CLI 创建第二个 Key Vault 机密
az keyvault secret set --vault-name cnabteblogwebkv --name Name2 --value cnbatewangwu
登录 Azure Portal,找到资源组 " Web_Test_TF_RG " 下的名字叫 “” 的 Key vault
下面创建的两个 Secret :
3,引用 Terraform 中的两个秘密
在这个例子中,我在上面添加了两个 Secret 。我现在将展示如何在 Terraform 中引用它们。
第一个将根据 Terraform 创建的 Secret 创建一个 Storage Account。第二个将根据 Azure CLI 创建的机密创建一个存储帐户。
resource "azurerm_storage_account" "storage_account1" {
name = azurerm_key_vault_secret.keyvault_secret1.value
resource_group_name = data.azurerm_resource_group.cnbate_resource_group.name
location = data.azurerm_resource_group.cnbate_resource_group.location
account_tier = "Standard"
account_replication_type = "LRS" depends_on = [
data.azurerm_resource_group.cnbate_resource_group,
azurerm_key_vault_secret.keyvault_secret1
]
}
对于第二个示例,我将使用 datasource 来引用 Azure CLI 创建的 keyvault_secret2
完整代码:


terraform {
# backend "azurerm" {
# storage_account_name = "cnbatestorestatefile004"
# container_name = "terraform-state"
# key = "cnbate.terraform.stats"
# } required_providers {
azurerm = {
}
}
} provider "azurerm" {
features {}
} locals {
location_eastAsia = "East Asia"
} data "azurerm_client_config" "current" { } data "azurerm_resource_group" "cnbate_resource_group" {
name = "Web_Test_TF_RG"
} resource "azurerm_key_vault" "keyvault1" {
name = "cnbateblogwebkv"
resource_group_name = data.azurerm_resource_group.cnbate_resource_group.name
tenant_id = data.azurerm_client_config.current.tenant_id
sku_name = "standard"
location = data.azurerm_resource_group.cnbate_resource_group.location
access_policy {
tenant_id = data.azurerm_client_config.current.tenant_id
object_id = data.azurerm_client_config.current.object_id secret_permissions = [
"Get",
"List",
"Set",
"Delete"
]
}
} resource "azurerm_key_vault_secret" "keyvault_secret1" {
name = "Name1"
value = "cnbatelisi"
key_vault_id = azurerm_key_vault.keyvault1.id
} resource "azurerm_storage_account" "storage_account1" {
name = azurerm_key_vault_secret.keyvault_secret1.value
resource_group_name = data.azurerm_resource_group.cnbate_resource_group.name
location = data.azurerm_resource_group.cnbate_resource_group.location
account_tier = "Standard"
account_replication_type = "LRS" depends_on = [
data.azurerm_resource_group.cnbate_resource_group,
azurerm_key_vault_secret.keyvault_secret1
]
} data "azurerm_key_vault_secret" "keyvault_secret2" {
name = "Name2"
key_vault_id = azurerm_key_vault.keyvault1.id
} resource "azurerm_storage_account" "storage_account2" {
name = data.azurerm_key_vault_secret.keyvault_secret2.value
resource_group_name = data.azurerm_resource_group.cnbate_resource_group.name
location = data.azurerm_resource_group.cnbate_resource_group.location
account_tier = "Standard"
account_replication_type = "LRS" depends_on = [
data.azurerm_resource_group.cnbate_resource_group
]
}
Terraform Code
登录 Azure Portal,查看利用Terraform 创建好的 Storage Account
Bingo!!!!! ️️
三,结尾
在这篇博文中,主要向大家展示了如何使用 Azure Key Vault 来存储 Terraform 创建的 Secret。我希望您觉得这很有用。本文所分享的内容也存在着很多我自己的一些理解,有理解不到位的,望包含,并且指出不足之处!!!!!
参考链接:Terraform Key vault
作者:Allen
版权:转载请在文章明显位置注明作者及出处。如发现错误,欢迎批评指正。
Azure Terraform(十四)Azure Key Vault 的机密管理的更多相关文章
- VMware vSphere 服务器虚拟化之二十四 桌面虚拟化之手动池管理物理机
VMware vSphere 服务器虚拟化之二十四 桌面虚拟化之手动池管理物理机 VMwareView手动池可以管理物理计算机 说明: 环境基于实验二十三 1.准备一台Windows 7的物理计算机名 ...
- Azure Terraform(四)状态文件存储
一,引言 我们都知道在执行部署计划之后,当前目录中就产生了名叫 "" 的 Terraform 的状态文件,该文件中记录了已部署资源的状态.默认情况下,在执行部署计划后,Terraf ...
- Azure Devops(十四) 使用Azure的私有Nuget仓库
哈喽大家好,最近因为工作的原因没有时间写文章,断更了俩月,今天我们开始继续研究Azure上的功能. 今天我们开始研究一下Azure的制品仓库,在之前的流水线的相关文章中,我们都使用到了制品仓库用来保存 ...
- linux(十四)之linux NFS服务管理
学到这里差不多就结束了linux的基础学习了,其实linux的内容并不难,我们要经常的反复的去操作它,多多和它去联络感情才能很好的掌握这个linux. 加油!今天是星期二.没有什么比努力让人更加热血沸 ...
- Linux系列教程(十四)——Linux用户和用户组管理之相关配置文件
前面我们介绍了软件包管理.首先介绍了rpm包的相关命令,但是我们发现直接安装rpm包会被其依赖性折磨的不行,然后解决办法是yum在线管理,通过yum命令安装rpm包能自动帮助我们解决依赖性.最后又介绍 ...
- (二十四)JDBC应用的事务管理(转账事例)
目录 利用 Dbutils 进行事务操作(以转账为例) 转账实现方式(不优雅的方式) ThreadLocal 类 转账实现方式(优雅的方式) 利用 Dbutils 进行事务操作(以转账为例) 我们只在 ...
- Android核心分析之二十四Android GDI之显示缓冲管理
Android GDI之屏幕设备管理-动态链接库 万丈高楼从地起,从最根源的硬件帧缓冲区开始.我们知道显示FrameBuffer在系统中就是一段内存,GDI的工作就是把需要输出的内容放入到该段内存的某 ...
- Java开发笔记(八十四)文件与目录的管理
程序除了处理内存中的数据结构,还要操作磁盘上的各类文件,这里的磁盘是个统称,泛指可以持久保留数据的存储介质,包括但不限于:插在软驱中的软盘.固定在机箱中的硬盘.插在光驱中的光盘.插在USB接口上的U盘 ...
- spring boot(十四)shiro登录认证与权限管理
这篇文章我们来学习如何使用Spring Boot集成Apache Shiro.安全应该是互联网公司的一道生命线,几乎任何的公司都会涉及到这方面的需求.在Java领域一般有Spring Security ...
- 一百三十四:CMS系统之版块管理二
编辑 html,将数据渲染到tr上,方便js取值 js //编辑板块$(function () { $('.edit-board-btn').click(function (event) { var ...
随机推荐
- Oracle 定时任务job实际应用
目录 一.Oracle定时任务简介 二.dbms_job涉及到的知识点 三.初始化相关参数job_queue_processes 四.实际创建一个定时任务(一分钟执行一次),实现定时一分钟往表中插入数 ...
- 大米cms爆破后台及支付逻辑漏洞
又找到个网站挖洞,我来康康. 大米手机是个什么鬼手机??看一下吧 这个支付页面好熟悉,可能存在支付逻辑漏洞,咱们用burp改个包看看. 先支付一个看看 把包里那个=1改成0试试~ 证实确实存在支付逻辑 ...
- 2021-12-26:给定一个长度为n的数组arr,求有多少个子数组满足 : 子数组两端的值,是这个子数组的最小值和次小值,最小值和次小值谁在最左和最右无所谓。 n<=100000(10^5) n*
2021-12-26:给定一个长度为n的数组arr,求有多少个子数组满足 : 子数组两端的值,是这个子数组的最小值和次小值,最小值和次小值谁在最左和最右无所谓. n<=100000(10^5) ...
- flask目录结构
- 2014年蓝桥杯C/C++大学B组省赛真题(李白打酒)
题目描述: 题目描述 话说大诗人李白,一生好饮.幸好他从不开车. 一天,他提着酒壶,从家里出来,酒壶中有酒2斗.他边走边唱: 无事街上走,提壶去打酒. 逢店加一倍,遇花喝一斗. 这一路上,他一共遇到店 ...
- ES6迭代器(Iterator)和生成器(Generator)
平时我们迭代数据用得最多的应该就是for循环了 来看个简单的例子 var colors = ["red", "green", "blue"] ...
- 基于AIGC的京东购物助手的技术方案设想
灵感来源 随着AIGC的爆火,ChatGPT,GPT-4的发布,我作为一个算法工作者,深感AI发展的迅猛.最近,OpenAI的插件和联网功能陆续向用户公开,我也在第一时间试用了这些最新的功能.在Ope ...
- OCR -- 文本检测 - 训练DB文字检测模型
百度飞桨(PaddlePaddle) - PP-OCRv3 文字检测识别系统 预测部署简介与总览 百度飞桨(PaddlePaddle) - PP-OCRv3 文字检测识别系统 Paddle Infer ...
- kotlin 函数格式大赏
fun main() { // 一个有引用的lambda表达式 val f11: (Int, Int) -> Unit = {n1, n2 -> println("f11 is ...
- 曲线艺术编程 coding curves 第七章 抛物线(Parabolas)
抛物线 Parabolas 原作:Keith Peters https://www.bit-101.com/blog/2022/11/coding-curves/ 译者:池中物王二狗(sheldon) ...