azure - 如何使用网络安全策略访问 Azure Key Vault?
问题描述
我有2 个部署如下:
- 东方数据库部署。
- Web 服务部署。
最初,为了访问 Orient DB,Web 服务获取存储在Azure Key Vault中的 Orient DB 用户名和密码。
为了提供额外的安全性,我创建了一个网络安全策略,它只允许具有namespaceSelector "application: production"和podSelector "application: production"的 pod 。应用的网络安全策略如下:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: nmsp
namespace: production
spec:
podSelector:
matchLabels:
application: production
ingress:
- from:
- namespaceSelector:
matchLabels:
application: production
podSelector:
matchLabels:
application: production
egress:
- to:
- namespaceSelector:
matchLabels:
application: production
podSelector:
matchLabels:
application: production
但是,应用网络安全策略后,Web 服务无法与 Orient DB 连接,因为 Web 服务无法从Azure 密钥库获取用户名和密码。它给出了错误,
Unhandled Rejection at: FetchError: request to https://in-keyvault-kv.vault.azure.net/secrets?api-version=7.1 failed, reason: getaddrinfo EAI_AGAIN in-aks-keyvault-kv.vault.azure.net
at ClientRequest. (/usr/src/app/node_modules/node-fetch/lib/index.js:1461:11)
at ClientRequest.emit (events.js:314:20)
at TLSSocket.socketErrorListener (_http_client.js:428:9)
at TLSSocket.emit (events.js:314:20)
at emitErrorNT (internal/streams/destroy.js:92:8)
at emitErrorAndCloseNT (internal/streams/destroy.js:60:3)
at processTicksAndRejections (internal/process/task_queues.js:84:21) {
type: 'system',
errno: 'EAI_AGAIN',
code: 'EAI_AGAIN'
}
那么如何在启用网络安全策略的情况下访问此密钥库以获取用户名和密码?并与东方数据库服务连接?
如果有人知道,请帮助我。谢谢你。
解决方案
您可以添加启用端口 443 的出口规则(如果要限制流量,则可以添加 Key Vault 服务的 IP 范围)或使用类似Azure Key Vault 提供程序的 Secret Store CSI 驱动程序来获取存储在 Azure 中的机密内容Key Vault 实例并使用 Secret Store CSI 驱动程序接口将它们挂载到 Kubernetes pod 中。
推荐阅读
- r - 直接在R中从网页中获取csv数据
- php - TypeError:网络请求使用 fetch ReactNative 和 Laravel 响应失败
- php - 如何从php中的文本文件中检索特定用户的数据
- email - Spring集成:imap,imap-idle-channel-adapter中属性mail-filter-expression引起的持续远程服务轮询
- postman - 如何确保始终禁用“自动遵循重定向”设置?
- reactjs - Next.js 链接到组件而不是页面
- angular - 当值从父级传递给子级时,ngOnChanges 不起作用
- vb.net - 使用在单独模块中声明的公共类
- webauthn - 确保使用 FIDO2 认证的安全密钥
- java - 如果您决定重命名类中的字段,如何读取旧的 json 字符串(使用 gson)