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 ...
随机推荐
- ai问答:使用 Vue3 组合式API 和 TS 配置 axios 拦截器 http错误状态
通过 axios.create() 可以创建一个 axios 实例 axiosInstance,参数如下: baseURL:请求前缀 timeout:超时时间 headers:请求头 默认配置: im ...
- Finalshell
使用VMware可以得到Linux虚拟机,但是在VMware中操作Linux的命令行页面不太方便 1.内容的复制.粘贴跨越VMware不方便 2.文件的上传.下载跨越VMware不方便 3.也就是和L ...
- react之todoList基础小项目
1.项目最终成品和项目目录快照如图: 2.context.js文件 // 使用context进行多级传递数据 // 1. createContext 创建一个可以多级传递的context数据 // 2 ...
- 2022-06-04:给定一个数字n,表示一开始有编号1~n的树木,列成一条直线, 给定一个有序数组arr,表示现在哪些树已经没了,arr[i]一定在[1,n]范围, 给定一个数字m,表示你可以补种多
2022-06-04:给定一个数字n,表示一开始有编号1~n的树木,列成一条直线, 给定一个有序数组arr,表示现在哪些树已经没了,arr[i]一定在[1,n]范围, 给定一个数字m,表示你可以补种多 ...
- blender 3D 建模仿真摄像头视角
前言 摄像头的视角模拟,可以在产品概念设计阶段提供比较直观的视觉效果,通过将模型与实际环境进行校准,基本上可以通过模型来确定摄像头需要FOV,焦距,景深和安装位置及角度等参数. 由于工作需要,第一次自 ...
- L2-004 这是二叉搜索树吗? (25 分)
1.题目描述: 一棵二叉搜索树可被递归地定义为具有下列性质的二叉树:对于任一结点, 其左子树中所有结点的键值小于该结点的键值: 其右子树中所有结点的键值大于等于该结点的键值: 其左右子树都是二叉搜索树 ...
- SignalR+Hangfire 实现后台任务队列和实时通讯
SignalR+Hangfire 实现后台任务队列和实时通讯 1.简介: SignalR是一个.NET的开源框架,SignalR可使用Web Socket, Server Sent Events 和 ...
- 尚医通-day10【微信扫码登录】(内附源码)
第01章-准备工作 1.申请微信登录 https://open.weixin.qq.com (1)注册开发者账号:准备营业执照 (2)邮箱激活 (3)完善开发者资料 (4)开发者资质认证:1-2个工作 ...
- 前端Vue仿滴滴打车百度地图定位查找附近出租车或门店信息(更新版)
前端vue仿滴滴打车百度地图定位查找附近出租车或门店信息, 下载完整代码请访问uni-app插件市场地址:https://ext.dcloud.net.cn/plugin?id=12982 效果图如下 ...
- LLE算法在自然语言处理中的应用:从文本到实体识别和关系抽取
目录 文章介绍: 自然语言处理(Natural Language Processing,NLP)是人工智能领域的重要分支,它研究如何将人类语言转化为计算机可理解的格式.NLP的应用非常广泛,从语言翻译 ...