前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何使用Tarian保护Kubernetes云端应用的安全

如何使用Tarian保护Kubernetes云端应用的安全

作者头像
FB客服
发布2022-02-25 14:07:26
5890
发布2022-02-25 14:07:26
举报
文章被收录于专栏:FreeBuf

关于Tarian

Tarian是一款针对Kubernetes云端应用程序的安全保护工具,该工具可以通过预注册可信进程和可信文件签名,保护在Kubernetes上运行的应用程序免受恶意攻击。Tarian能够检测未知进程和注册文件的更改,然后发送警报并采取自动操作,从而保护我们的K8s环境免受恶意攻击或勒索软件的侵扰。

工具架构

工具要求

一个支持运行Falco的Kubernetes集群。

准备命名空间

代码语言:javascript
复制
kubectl create namespace tarian-system

kubectl create namespace falco

通过Tarian和自定义规则安装Falco

首先,将下列代码拷贝至falco-values.yaml中:

代码语言:javascript
复制
falcosidekick:

  enabled: true

  config:

    webhook:

      address: http://tarian-cluster-agent.tarian-system.svc:8088

接下来,使用Helm来安装Falco:

代码语言:javascript
复制
helm repo add falcosecurity https://falcosecurity.github.io/charts

helm repo update



helm upgrade -i falco falcosecurity/falco -n falco -f falco-values.yaml \

  --set-file customRules."tarian_rules\.yaml"=https://raw.githubusercontent.com/kube-tarian/tarian/main/dev/falco/tarian_rules.yaml

在GKE中,Falco将使用ebpf,因此我们还需要设置下列参数:

代码语言:javascript
复制
--set ebpf.enabled=true

设置一个Postgresql数据库

你可以将一个数据库以云端服务的形式使用,或者直接在集群中使用。比如说,我们可以通过下列命令在集群中安装数据库:

代码语言:javascript
复制
helm repo add bitnami https://charts.bitnami.com/bitnami



helm install tarian-postgresql bitnami/postgresql -n tarian-system \

  --set postgresqlUsername=postgres \

  --set postgresqlPassword=tarian \

  --set postgresqlDatabase=tarian

安装Tarian

首先,我们需要使用Helm来安装Tarian:

代码语言:javascript
复制
helm repo add tarian https://kube-tarian.github.io/tarian

helm repo update



helm upgrade -i tarian-server tarian/tarian-server --devel -n tarian-system

helm upgrade -i tarian-cluster-agent tarian/tarian-cluster-agent --devel -n tarian-system

接下来,等待所有的Pods就绪:

代码语言:javascript
复制
kubectl wait --for=condition=ready pod --all -n tarian-system

执行数据库初始化,并创建所有需要的数据库表:

代码语言:javascript
复制
kubectl exec -ti deploy/tarian-server -n tarian-system -- ./tarian-server db migrate

至此,工具安装就算完成了。

工具使用

使用tarianctl控制tarian-server

1、从该项目的【Release页面】下载Tarian;

2、提取文件并将tarianctl拷贝至本地目录中;

3、在设备上通过Ingress或port-forward功能开放tarian-server:

代码语言:javascript
复制
kubectl port-forward svc/tarian-server -n tarian-system 41051:80

4、使用env环境变量配置服务器地址:

代码语言:javascript
复制
export TARIAN_SERVER_ADDRESS=localhost:41051

查看违规事件

代码语言:javascript
复制
tarianctl get events

添加进程限制

代码语言:javascript
复制
tarianctl add constraint --name nginx --namespace default \

  --match-labels run=nginx \

  --allowed-processes=pause,tarian-pod-agent,nginx
代码语言:javascript
复制
tarianctl get constraints

添加文件限制

代码语言:javascript
复制
tarianctl add constraint --name nginx-files --namespace default \

  --match-labels run=nginx \

  --allowed-file-sha256sums=/usr/share/nginx/html/index.html=38ffd4972ae513a0c79a8be4573403edcd709f0f572105362b08ff50cf6de521
代码语言:javascript
复制
tarianctl get constraints

在一个pod中运行Tarian代理

代码语言:javascript
复制
metadata:

  annotations:

pod-agent.k8s.tarian.dev/threat-scan: "true"
代码语言:javascript
复制
kubectl apply -f https://raw.githubusercontent.com/kube-tarian/tarian/main/dev/config/monitored-pod/configmap.yaml

kubectl apply -f https://raw.githubusercontent.com/kube-tarian/tarian/main/dev/config/monitored-pod/pod.yaml



# wait for it to become ready

kubectl wait --for=condition=ready pod nginx



# simulate unknown process runs
kubectl exec -ti nginx -c nginx -- sleep 15
# you should see it reported in tarian
tarianctl get events

通知警报管理器整合

Tarian自带了Prometheus警报管理工具,如果你想使用其他的警报管理实例的话,可以使用下列命令:

代码语言:javascript
复制
helm install tarian-server tarian/tarian-server --devel \

  --set server.alert.alertManagerAddress=http://alertmanager.monitoring.svc:9093 \

  --set alertManager.install=false \

  -n tarian-system

项目地址

https://github.com/kube-tarian/tarian

参考资料

https://falco.org/docs/getting-started/

https://falco.org/docs/getting-started/third-party/production/

https://cloud.google.com/kubernetes-engine/docs/how-to/private-clusters#add_firewall_rules

https://join.slack.com/t/kube-tarian/shared_invite/zt-118iqu4g6-wopEIyjqD_uy5uXRDChaLA

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-02-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeBuf 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 准备命名空间
  • 通过Tarian和自定义规则安装Falco
  • 设置一个Postgresql数据库
  • 使用tarianctl控制tarian-server
  • 查看违规事件
  • 添加进程限制
  • 添加文件限制
  • 在一个pod中运行Tarian代理
  • 通知警报管理器整合
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档