• 关于

    RBAC介绍

    的搜索结果

回答

Re钉钉升级 升级成4.0的 钉钉回调有小问题  这个是我之前免登的http://192.168.100.11:18003/Rbac/E500  但是升级后 免登 回调会变成  http://192.168.100.11:18003/Rbac/E500&code=xxx,  回调地址改为ttp://192.168.100.11:18003/Rbac/E500?1=1可以正常使用了 ------------------------- 回 2楼seahouse的帖子         public ActionResult E500()         {             //页面初始载入判断是否已存登录用户             if (string.IsNullOrEmpty(Request["code"]))             {                 //用户未登录,通过oauth授权去钉钉服务器拿取授权                 //去拿授权成功后带着code与state的回调地址,可以是当前项目中的任意其它地址,这里使用当前页面                 string redirecturi = Server.UrlEncode("http://192.168.100.11:18003/Rbac/E500?1=1");                 //string redirecturi = Server.UrlEncode("http://192.168.100.11:18003/Rbac/E500");//4.0以下的版本返回时正常                 //state 在 oauth中是为了随止跨站攻击的,所以回调之后一定要比较回调来的state与这个session["state]是否相等                 //具体的是什么原理可以参考oauth中关于state的介绍                 string state = Helper.state();                 Session["state"] = state;                 //这里的含义是说,我当前的网站没登录,我带着我的合法的认证(Config.SCorpId)去钉钉要一个当前登录用户分配的code,拿到这个code可以去换取当前的用户信息,来实现免登                 string url = "https://oapi.dingtalk.com/connect/oauth2/authorize?appid=" + "xxxxx" + "&redirect_uri=" + redirecturi + "&response_type=code&scope=snsapi_base&state=" + state;                             Response.Redirect(url);             }             else             {                 string code = Request["code"].ToString(); ..... }} 是其他方式  我微应用配置的直接跳转到这边  后面重定向返回那次参数拼接有问题

luobenabc 2019-12-01 23:48:22 0 浏览量 回答数 0

问题

权限系统设计相关

montos 2020-04-20 18:27:09 4 浏览量 回答数 1

回答

本文介绍如何免密拉取阿里云容器镜像仓库中的私有镜像。 前提条件 您已经成功创建一个Kubernetes 集群,参见创建 Kubernetes 集群。 背景信息 免密拉取功能: 仅支持拉取当前用户阿里云容器镜像仓库中的私有镜像,无法拉取其余用户的私有镜像。 支持跨地域拉取阿里云容器镜像仓库中的私有镜像。 支持多命名空间免密拉取。 支持配置免密拉取阿里云容器镜像服务企业版中的私有镜像。 支持的集群: 专有版Kubernetes集群 托管版Kubernetes集群 Serverless Kubernetes集群 支持的版本: 专有版Kubernetes集群:高于或等于1.11.2的版本默认支持免密拉取镜像。版本低于1.11.2的版本请参考操作步骤。 托管版Kubernetes集群:所有版本。 Serverless Kubernetes集群:所有版本。 操作步骤 登录容器服务管理控制台。 在 Kubernetes 菜单下,单击左侧导航栏的集群 > 集群,进入集群列表页面。 单击目标集群的名称,查看集群的详细信息。 单击集群资源区域的Worker RAM角色,跳转到RAM访问控制台的RAM角色管理页面。 集群资源 说明 本文以新版RAM访问控制台为例进行介绍。 若您使用的是旧版的RAM访问控制台: 方法一 单击左侧导航栏角色管理,在角色名中输入Worker RAM角色的名称进行搜索。单击角色名称。角色管理 在基本信息区域,单击页面右上角的编辑基本信息。基本信息 方法二 单击页面右下角体验新版,切换到新版RAM访问控制台。在容器服务管理控制台单击Worker RAM 角色重新登录RAM访问控制台。RAM概览 在RAM角色管理页面,单击权限管理区域的权限策略名称,查看具体的权限策略。 在权限策略管理页面,单击策略内容区域的修改策略内容。 修改策略内容 在策略内容区域增加以下字段后,单击确定。 { "Action": [ "cr:Get*", "cr:List*", "cr:PullRepository" ], "Resource": "*", "Effect": "Allow" } 添加策略 创建aliyun-acr-credential-helper服务,定时刷新容器镜像服务的临时token密码。 apiVersion: v1 kind: ConfigMap metadata: name: acr-configuration namespace: kube-system data: #具体配置说明参考下文 acr-api-version: "2018-12-01" #acr-registry: "xxx-registry.*.cr.aliyuncs.com,xxx-registry-vpc.*.cr.aliyuncs.com" #watch-namespace: "all" #expiring-threshold: "15m" --- apiVersion: v1 kind: ServiceAccount metadata: name: aliyun-acr-credential-helper namespace: kube-system --- apiVersion: rbac.authorization.k8s.io/v1beta1 kind: ClusterRole metadata: name: aliyun-acr-credential-helper rules: - apiGroups: - "" resources: - namespaces - configmaps verbs: - get - list - watch - apiGroups: - "" resources: - serviceaccounts - secrets verbs: - create - update - patch - get - list - watch --- apiVersion: rbac.authorization.k8s.io/v1beta1 kind: ClusterRoleBinding metadata: name: aliyun-acr-credential-helper roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: aliyun-acr-credential-helper subjects: - kind: ServiceAccount name: aliyun-acr-credential-helper namespace: kube-system --- apiVersion: apps/v1beta2 kind: Deployment metadata: name: aliyun-acr-credential-helper namespace: kube-system annotations: component.version: "v19.05.22" component.revision: "v1" labels: app: aliyun-acr-credential-helper spec: replicas: 1 selector: matchLabels: app: aliyun-acr-credential-helper template: metadata: labels: app: aliyun-acr-credential-helper spec: serviceAccountName: aliyun-acr-credential-helper containers: - name: aliyun-acr-credential-helper image: registry.cn-hangzhou.aliyuncs.com/acs/aliyun-acr-credential-helper:v19.05.22.0-e324a5a-aliyun imagePullPolicy: Always env: - name: POD_NAME valueFrom: fieldRef: fieldPath: metadata.name - name: POD_NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespace volumeMounts: - name: localtime mountPath: /etc/localtime readOnly: true volumes: - name: localtime hostPath: path: /etc/localtime type: File nodeSelector: beta.kubernetes.io/os: linux ACR Credential Helper组件配置项可通过 ConfigMap 的方式来进行配置,并会自动实时生效。 表 1. 配置说明 配置项 配置项说明 默认值 acr-api-version 期望使用的CR OpenAPI Version 2018-12-01 (支持企业版Registy API) acr-registry 期望能免密拉取镜像的Registry registry.*.aliyuncs.com,registry-vpc.*.aliyuncs.com,xxx-registry.*.cr.aliyuncs.com,xxx-registry-vpc.*.cr.aliyuncs.com 说明 如果需要配置多个Registry时,以逗号分隔。 watch-namespace 期望能免密拉取镜像的Namespace default 说明 当取值为all时,表示期望所有Namespace都能免密拉取。 如果需要配置多个Namespace时,以逗号分隔。 expiring-threshold 本地Cache Token快过期阈值 15m

1934890530796658 2020-03-25 14:21:56 0 浏览量 回答数 0

阿里云高校特惠,助力学生创业梦!0元体验,快速入门云计算!

学生动手场景应用,快速了解并掌握云服务器的各种新奇玩法!

回答

[健] 一个系统最基本的功能就是  登录权限 但是往往别人觉得没技术含量 其实里面学问挺大 可以贴出来一起探讨下 比如数据权限 菜单权限 登录和验证方式啥的 [犀利豆] 好巧,我之前也做个一个,我主要介绍的是技术上的一些点 「如何利用 Spring Hibernate 高级特性设计实现一个权限系统」**[元清] 树描述组织结构少不了,但是我觉得用rbac 思想指导更好[犀利豆] 主要是业务有一些要求,要根据组织架构做一些数据的隔离[元清] 嗯,数据隔离是少不了的,我是把角色作为一个租户id [犀利豆] 先有的系统,后有的权限系统,考虑了很多 接入方怎么快速接入,怎么做到无侵入[元清] 为什么要做到数据库层呢,做到数据库层已经侵入了吧,我这个就是配置一下,就可以了,配置一层filter [犀利豆] 这个的问题是比较具体的,我们的数据要按照公司的组织架构做数据隔离[元清] 都是按照组织架构做数据隔离的[犀利豆] 比如,公司分成了华南,华东,华北。三个地区的用户之间看到的信息是隔离的。[元清] 嗯,这个当然是的,用一个租户id 就可以了[犀利豆] 是的,所以这个租户id 要拼接到sql 里面,查询数据[元清] 哦,你们没有在原有表上面加字段是吧[犀利豆] 这个隔离不是全部隔离,还有横向部门的人,可以看见某几个区域的数据。[元清] 哦,你们是没有改数据库表结构,通过命名方式,来做数据查询么,比如命名规则租户id+xxxx,这个就是树形结构的描述了,我的树形是父拥有所有子的权限,我们还是侵入的,业务端的表都要加租户id 去标示[犀利豆] 没有 系统运行很长一段时间了 不太有时间改 所以想到的方法是用hibernate 的filter 在session层级做的 [元清] 可以的,hibernate我都没用过[犀利豆] 我们也要加租户id,只是已经有了。用hibernate的filter的好处只是,不需要改动controller和service层级,dao层级需要在entity 实际上配置,一个隔离租户的sql,在执行查询的时候,利用aop 把查询的session取出来,自动把过滤的条件拼接在业务sql上[元清] **听起来就很复杂,不过思路还蛮好的,应该也不难维护 来源:云原生后端社区https://www.yuque.com/server_mind/answer

montos 2020-04-20 18:27:23 0 浏览量 回答数 0

回答

演示如何在kubernetes集群,部署virtual-kubelet,为集群增加虚拟节点,以下简称:VK节点;使kubenetes集群通过VK节点接入ECI平台,在ECI平台上创建Pod。 kubernetes集群分类: 自建kuberenetes集群: 可以是基于阿里云ECS搭建的kubenetes集群。 可以是基于其他云平台搭建的kubenetes集群。 可以是基于机房搭建的kubenetes集群。 可以是基于台式机或笔记本搭建的kubernetes集群。 阿里云容器服务kubernetes集群: 专有版 Kubernetes(Dedicated Kubernetes)。 托管版 Kubernetes(Managed Kubernetes)。 Serverless Kubernetes。 下面我们,针对不同的kubernetes集群,介绍如何部署virtual-kubeket;由于阿里云Serverless Kubernetes,默认部署virtual-kubelet,是由系统管理员统一管理,本文不涉及阿里云Serverless Kubernetes集群部署virtual-kubelet。 前提条件 您需要开通阿里云弹性容器实例 ECI 服务,登录弹性容器实例控制台开通服务。 kubernetes集群上创建的Pod具有访问外网能力,因为virtual-kubelet是Pod形式部署,需要访问阿里云公网ECI服务。 部署virtual-kubelet 容器服务kubernetes集群 通过安装ack-virtual-node插件,部署vitual-kubelet。 执行部署 登录容器服务管理控制台。 在Kubernetes 菜单下,单击左侧导航栏中的市场 > 应用目录,在右侧选中ack-virtual-node。 在应用目录>ack-virtual-node页面,单击参数,配置虚拟节点参数。 参数 参数含义 获取路径 ECI_ACCESS_KEY 用户AccessKey 请参见如何获取AccessKey ECI_SECRET_KEY 用户SecretKey 请参见如何获取AccessKey ALIYUN_CLUSTERID 集群ID 您可以在集群基本信息,基本信息区域中,获取集群ID的值 ECI_REGION 地域名称 您可以在集群基本信息,基本信息区域中,获取地域的值 ECI_VPC 集群的VPC 您可以在集群基本信息的集群资源区域中,获取虚拟专有网络 VPC的值 ECI_VSWITCH 虚拟交换机 您可以在节点列表单击某个节点,在实例详情页签的配置信息区域中,获取虚拟交换机的值 ECI_SECURITY_GROUP 安全组ID 您可以在节点列表单击某个节点,在本实例安全组页签的安全组列表区域中,获取安全组ID的值 配置完成后,在右侧的创建页面,选择对应的集群,可以看到命名空间已设定为kube-system,发布名称已设定为ack-virtual-node,单击创建。 验证 检查节点列表 安装完成后,您可以通过集群 > 节点,在节点列表页面可以看到添加了一个节点virtual-kubelet。 您可以通过 kubectl 命令,查看节点列表信息。 $ kubectl get node NAME STATUS ROLES AGE VERSION cn-beijing.192.168.0.238 Ready 66d v1.14.6-aliyun.1 cn-beijing.192.168.0.239 Ready 66d v1.14.6-aliyun.1 cn-beijing.192.168.0.240 Ready 66d v1.14.6-aliyun. virtual-kubelet Ready agent 19d v1.11.2 创建Pod到VK节点 当集群中存在虚拟节点时,您可以把Pod调度到虚拟节点上,Virtual Kubelet将会创建出相应的ECI Pod。 在 Kubernetes 菜单下,单击左侧导航栏中的应用 > 无状态,选择集群和命名空间,单击右上角的使用模板创建。 选择样例模板或自定义,然后单击创建,您可以使用如下 yaml 示例模板创建Deployment: apiVersion: apps/v1beta2 # for versions before 1.8.0 use apps/v1beta1 kind: Deployment metadata: name: nginx-deployment-basic labels: app: nginx spec: replicas: 2 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx imagePullPolicy: Always nodeName: virtual-node-eci-0 #virtual node name 在应用 > 无状态中,当出现如下界面时,表示 Deployment 创建成功。 在应用>容器组中,会出现如下界面时,表示 Pod 部署完成 自建kubernetes集群 采用yaml的方式部署virtual-kubelet。 准备工作 部署virtual-kubelet准备工作,需要通过阿里云获取信息: 参数 参数含义 获取路径 ECI_ACCESS_KEY 用户AccessKey 请参见如何获取AccessKey ECI_SECRET_KEY 用户SecretKey 请参见如何获取AccessKey ALIYUN_CLUSTERID 集群ID 用户自定义一个唯一标示,作为集群ID ECI_REGION 地域名称 登录弹性容器实例控制台,获取Region信息,例如:华北2,对应RegionID cn-beijing ECI_VPC 集群的VPC 登录专有网络,根据已选Region,获取合适VPC ID ECI_VSWITCH 虚拟交换机 登录专有网络>交换机,根据已选VpcID,获取合适交换机ID ECI_SECURITY_GROUP 安全组 登录专有网络,根据已选VpcID,点击进入专有网络详情>网络资源>安全组,获取合适安全组ID YAML文件 $ cat deployment-vk.yaml apiVersion: v1 kind: ServiceAccount metadata: name: virtual-node-sa namespace: kube-system apiVersion: rbac.authorization.k8s.io/v1beta1 kind: ClusterRoleBinding metadata: name: virtual-node-role-binding roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin subjects: - kind: ServiceAccount name: virtual-node-sa namespace: kube-system apiVersion: apps/v1beta2 kind: Deployment metadata: name: virtual-node-controller namespace: kube-system labels: app: virtual-node-controller spec: replicas: 1 selector: matchLabels: app: virtual-node-controller template: metadata: labels: app: virtual-node-controller spec: serviceAccount: virtual-node-sa containers: - name: alicloud-virtual-kubelet image: registry.cn-hangzhou.aliyuncs.com/acs/virtual-nodes-eci:v1.0.0.1-aliyun imagePullPolicy: Always args: ["--provider", "alibabacloud"] env: - name: KUBELET_PORT value: "10250" - name: VKUBELET_POD_IP valueFrom: fieldRef: fieldPath: status.podIP - name: VKUBELET_TAINT_KEY value: "virtual-kubelet.io/provider" - name: VKUBELET_TAINT_VALUE value: "alibabacloud" - name: VKUBELET_TAINT_EFFECT value: "NoSchedule" - name: ECI_REGION value: ${aliyun_region_name} - name: ECI_VPC value: ${aliyun_vpc_id} - name: ECI_VSWITCH value: ${aliyun_vswitch_id} - name: ECI_SECURITY_GROUP value: ${aliyun_sg_id} - name: ECI_ACCESS_KEY value: ${aliyun_access_key} - name: ECI_SECRET_KEY value: ${aliyun_secret_key} - name: ALIYUN_CLUSTERID value: ${custom_define_cluster_id} 根据之前准备的信息,替换yaml文件中的: aliyun_region_name aliyun_vpc_id aliyun_vswitch_id aliyun_sg_id aliyun_access_key aliyun_secret_key 最后,需要给你的集群设置集群ID,替换custom_define_cluster_id。 执行部署 部署前,集群Node节点信息 [root@k8s-master01 ~]# [root@k8s-master01 ~]# kubectl get node -o wide NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME k8s-master01 Ready 50d v1.14.2 192.168.0.15 CentOS Linux 7 (Core) 3.10.0-957.21.3.el7.x86_64 docker://18.9.6 k8s-master02 Ready 50d v1.14.2 192.168.0.16 CentOS Linux 7 (Core) 3.10.0-957.21.3.el7.x86_64 docker://18.9.6 k8s-master03 Ready 50d v1.14.2 192.168.0.17 CentOS Linux 7 (Core) 3.10.0-957.21.3.el7.x86_64 docker://18.9.6 部署 [root@k8s-master01 ~]# kubectl apply -f deployment-vk.yaml serviceaccount/virtual-node-sa created clusterrolebinding.rbac.authorization.k8s.io/virtual-node-role-binding created deployment.apps/virtual-node-controller created 查看部署情况 [root@k8s-master01 ~]# kubectl get deploy/virtual-node-controller -n kube-system NAME READY UP-TO-DATE AVAILABLE AGE virtual-node-controller 1/1 1 1 161m 获取集群Node列表 [root@k8s-master01 ~]# kubectl get node -o wide NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME k8s-master01 Ready 50d v1.14.2 192.168.0.15 CentOS Linux 7 (Core) 3.10.0-957.21.3.el7.x86_64 docker://18.9.6 k8s-master02 Ready 50d v1.14.2 192.168.0.16 CentOS Linux 7 (Core) 3.10.0-957.21.3.el7.x86_64 docker://18.9.6 k8s-master03 Ready 50d v1.14.2 192.168.0.17 CentOS Linux 7 (Core) 3.10.0-957.21.3.el7.x86_64 docker://18.9.6 virtual-kubelet Ready agent 82m v1.11.2 172.30.176.3 验证 指定节点创建pod。 $ cat test-pod.yaml apiVersion: v1 kind: Pod metadata: name: test-pod spec: containers: - name: centos image: centos:latest args: - /bin/sh - -c - date; sleep 6000h nodeName: virtual-kubelet 创建Pod [root@k8s-master01 ~]# kubectl create -f test-pod.yaml pod/test-pod created 检查Pod创建情况。 [root@k8s-master01 ~]# kubectl get pod/test-pod -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES test-pod 1/1 Running 0 95s 192.168.6.165 virtual-kubelet virtual-kubelet会为运行在VK节点的Pod添加Annotation [root@k8s-master01 ~]# kubectl get pod -o yaml test-pod apiVersion: v1 kind: Pod metadata: annotations: ProviderCreate: done k8s.aliyun.com/eci-instance-id: eci-2zeaak7c7i6xb5uqnw4m 通过ECI控制台查看。

1934890530796658 2020-03-20 17:41:55 0 浏览量 回答数 0

回答

在Kubernetes集群中,apiserver的审计日志可以帮助集群管理人员记录或追溯不同用户的日常操作,是集群安全运维中重要的环节。本文旨在帮助您了解阿里云Kubernetes集群apiserver审计日志的相关配置,以及如何通过日志服务收集、分析审计日志,并根据您的需求为审计日志设置自定义的告警规则。 配置介绍 当前创建Kubernetes集群时勾选使用日志服务后,会默认开启apiserver审计功能,相关的参数配置功能如下: 说明 登录到Master节点,apiserver配置文件的目录是/etc/kubernetes/manifests/kube-apiserver.yaml。 配置 说明 audit-log-maxbackup 审计日志最大分片存储10个日志文件 audit-log-maxsize 单个审计日志最大size为100MB audit-log-path 审计日志输出路径为/var/log/kubernetes/kubernetes.audit audit-log-maxage 审计日志最多保存期为7天 audit-policy-file 审计日志配置策略文件,文件路径为:/etc/kubernetes/audit-policy.yml 登录Master节点机器,审计配置策略文件的目录是/etc/kubernetes/audit-policy.yml,内容如下: apiVersion: audit.k8s.io/v1beta1 # This is required. kind: Policy Don't generate audit events for all requests in RequestReceived stage. omitStages: - "RequestReceived" rules: # The following requests were manually identified as high-volume and low-risk, # so drop them. - level: None users: ["system:kube-proxy"] verbs: ["watch"] resources: - group: "" # core resources: ["endpoints", "services"] - level: None users: ["system:unsecured"] namespaces: ["kube-system"] verbs: ["get"] resources: - group: "" # core resources: ["configmaps"] - level: None users: ["kubelet"] # legacy kubelet identity verbs: ["get"] resources: - group: "" # core resources: ["nodes"] - level: None userGroups: ["system:nodes"] verbs: ["get"] resources: - group: "" # core resources: ["nodes"] - level: None users: - system:kube-controller-manager - system:kube-scheduler - system:serviceaccount:kube-system:endpoint-controller verbs: ["get", "update"] namespaces: ["kube-system"] resources: - group: "" # core resources: ["endpoints"] - level: None users: ["system:apiserver"] verbs: ["get"] resources: - group: "" # core resources: ["namespaces"] # Don't log these read-only URLs. - level: None nonResourceURLs: - /healthz* - /version - /swagger* # Don't log events requests. - level: None resources: - group: "" # core resources: ["events"] # Secrets, ConfigMaps, and TokenReviews can contain sensitive & binary data, # so only log at the Metadata level. - level: Metadata resources: - group: "" # core resources: ["secrets", "configmaps"] - group: authentication.k8s.io resources: ["tokenreviews"] # Get repsonses can be large; skip them. - level: Request verbs: ["get", "list", "watch"] resources: - group: "" # core - group: "admissionregistration.k8s.io" - group: "apps" - group: "authentication.k8s.io" - group: "authorization.k8s.io" - group: "autoscaling" - group: "batch" - group: "certificates.k8s.io" - group: "extensions" - group: "networking.k8s.io" - group: "policy" - group: "rbac.authorization.k8s.io" - group: "settings.k8s.io" - group: "storage.k8s.io" # Default level for known APIs - level: RequestResponse resources: - group: "" # core - group: "admissionregistration.k8s.io" - group: "apps" - group: "authentication.k8s.io" - group: "authorization.k8s.io" - group: "autoscaling" - group: "batch" - group: "certificates.k8s.io" - group: "extensions" - group: "networking.k8s.io" - group: "policy" - group: "rbac.authorization.k8s.io" - group: "settings.k8s.io" - group: "storage.k8s.io" # Default level for all other requests. - level: Metadata 说明 在收到请求后不立即记录日志,当返回体header发送后才开始记录。 对于大量冗余的kube-proxy watch请求,kubelet和system:nodes对于node的get请求,kube组件在kube-system下对于endpoint的操作,以及apiserver对于namespaces的get请求等不作审计。 对于/healthz*,/version*/swagger*等只读url不作审计。 对于可能包含敏感信息或二进制文件的secrets,configmaps,tokenreviews接口的日志等级设为metadata,该level只记录请求事件的用户、时间戳、请求资源和动作,而不包含请求体和返回体。 对于一些如authenticatioin、rbac、certificates、autoscaling、storage等敏感接口,根据读写记录相应的请求体和返回体。 查看审计报表 容器服务Kubernetes版内置了3个审计日志报表。通过报表,您可以获取以下内容: 所有用户以及系统组件对集群执行的重要操作。 操作的源地址、源地址所属区域以及分布。 各类资源的详细操作列表。 子账号操作详细列表。 重要操作(登录容器、访问保密字典、删除资源等)的详细列表。 说明 创建的集群中,若已经选择日志服务,则会自动开通审计报表相关功能。日志服务的计费详情请参见计费说明。若未开通,请参考手动开通审计报表。 请不要修改审计报表。如果您有自定义审计报表的需求,请在日志服务管理控制台创建新的报表。 您可以通过以下几种方式访问审计报表: 登录容器服务管理控制台。在集群列表的操作列表中,单击更多 > 集群审计。集群审计 登录容器服务管理控制台。在集群列表中单击集群名称,进入到集群信息页面。在左侧导航栏列表中单击集群审计。集群审计 审计报表说明 apiserver审计共3个报表。分别是:审计中心概览、资源操作概览以及资源操作详细列表。 审计中心概览 审计中心概览展示Kubernetes集群中的事件整体概览以及重要事件(公网访问、命令执行、删除资源、访问保密字典等)的详细信息。 审计报表 说明 在该报表中,默认显示一周的统计信息。您可以自定义选择统计时间范围。此外,该报表支持指定Namespace、子账号ID、状态码进行筛选。您可以选择任一一项或多项组合筛选指定范围的事件。 资源操作概览 资源操作概览展示Kubernetes集群中常见的计算资源、网络资源以及存储资源的操作统计信息。操作包括创建、更新、删除、访问。其中: 计算资源包括:Deployment、StatefulSet、CronJob、DaemonSet、Job、Pod。 网络资源包括:Service、Ingress。 存储资源包括:ConfigMap、Secret、PersistentVolumeClaim。 资源概览 说明 在该报表中,默认显示一周的统计信息。您可以自定义选择统计时间范围。此外,该报表支持指定Namespace、子账号ID进行筛选。您可以选择任一一项或多项组合筛选指定范围的事件。 若您需要查看对应资源的详细操作事件,请使用资源操作详细列表。 资源操作详细列表 该报表用于展示Kubernetes集群中某类资源的详细操作列表。您需要选择或输入指定的资源类型进行实时查询。该报表会显示:资源操作各类事件的总数、Namespace分布、成功率、时序趋势以及详细操作列表等。 资源列表 说明 若您需要查看Kubernetes中注册的CRD(CustomResourceDefinition)资源或列表中没有列举的其他资源,可以手动输入资源名的复数形式。例如CRD资源为AliyunLogConfig,则输入AliyunLogConfigs。 在该报表中,默认显示一周的统计信息。您可以自定义选择统计时间范围。此外,该报表支持指定Namespace、子账号ID、状态码进行筛选。您可以选择任一一项或多项组合筛选指定范围的事件。 查看详细日志记录 如果您有自定义查询、分析审计日志的需求,可以进入日志服务管理控制台查看详细的日志记录。 登录日志服务控制台。 选择创建集群时设置的日志Project,单击名称进入日志Project页面。 选择名称为audit-${clustered}的日志库(logstore),单击右侧的查询分析图标,选择查询分析,查看对应的审计日志。 说明 在集群创建过程中,指定的日志Project中会自动添加一个名为audit-${clustereid}的日志库。 审计日志的Logstore默认已经配置好索引。请不要修改索引,以免报表失效。 常见的审计日志搜索方式如下: 查询某一子账号的操作记录,直接输入子账号id,单击查询/分析。 查询某一资源的操作,直接输入资源名,单击查询/分析。 过滤掉系统组件的操作,输入NOT user.username: node NOT user.username: serviceaccount NOT user.username: apiserver NOT user.username: kube-scheduler NOT user.username: kube-controller-manager,单击查询/分析。 更多查询、统计方式,请参考日志服务查询分析方法。 设置告警 若您需要对某些资源的操作进行实时告警,可以通过日志服务的告警功能实现。告警方式支持短信、钉钉机器人、邮件、自定义WebHook和通知中心。详细操作方式请参考日志服务告警配置。 说明 对于审计日志的更多查询方式,可以参考审计报表中的查询语句。操作方式为:在日志服务Project详情页中,单击左侧导航栏中的仪表盘,进入指定的仪表盘(报表),展开指定分析图表右上角的折叠列表,并单击查看分析详情。详细操作方式请参考查看分析详情。 示例1:对容器执行命令时告警 某公司对于Kubernetes集群使用有严格限制,不允许用户登录容器或对容器执行命令,如果有用户执行命令时需要立即给出告警,并希望告警时能够显示用户登录的具体容器、执行的命令、操作人、事件ID、时间、操作源IP等信息。 查询语句为: verb : create and objectRef.subresource:exec and stage: ResponseStarted | SELECT auditID as "事件ID", date_format(from_unixtime(time), '%Y-%m-%d %T' ) as "操作时间", regexp_extract("requestURI", '([^?])/exec?.', 1)as "资源", regexp_extract("requestURI", '?(.)', 1)as "命令" ,"responseStatus.code" as "状态码", CASE WHEN "user.username" != 'kubernetes-admin' then "user.username" WHEN "user.username" = 'kubernetes-admin' and regexp_like("annotations.authorization.k8s.io/reason", 'RoleBinding') then regexp_extract("annotations.authorization.k8s.io/reason", ' to User "(\w+)"', 1) ELSE 'kubernetes-admin' END as "操作账号", CASE WHEN json_array_length(sourceIPs) = 1 then json_format(json_array_get(sourceIPs, 0)) ELSE sourceIPs END as "源地址" limit 100 条件表达式为:操作事件 =~ "."。 示例2:apiserver公网访问失败告警 某集群开启了公网访问,为防止恶意攻击,需要监控公网访问的次数以及失败率,若访问次数到达一定阈值(10次)且失败率高于一定阈值(50%)则立即告警,并希望告警时能够显示用户的IP所属区域、操作源IP、是否高危IP等信息。 查询语句为: * | select ip as "源地址", total as "访问次数", round(rate * 100, 2) as "失败率%", failCount as "非法访问次数", CASE when security_check_ip(ip) = 1 then 'yes' else 'no' end as "是否高危IP", ip_to_country(ip) as "国家", ip_to_province(ip) as "省", ip_to_city(ip) as "市", ip_to_provider(ip) as "运营商" from (select CASE WHEN json_array_length(sourceIPs) = 1 then json_format(json_array_get(sourceIPs, 0)) ELSE sourceIPs END as ip, count(1) as total, sum(CASE WHEN "responseStatus.code" < 400 then 0 ELSE 1 END) * 1.0 / count(1) as rate, count_if("responseStatus.code" = 403) as failCount from log group by ip limit 10000) where ip_to_domain(ip) != 'intranet' having "访问次数" > 10 and "失败率%" > 50 ORDER by "访问次数" desc limit 100 条件表达式为:源地址 =~ ".*"。 手动开通审计报表 若您还未开通审计报表,需手动开通审计报表。 登录容器服务管理控制台。 在 Kubernetes 菜单下,单击左侧导航栏中的集群 > 集群,在目标集群右侧单击管理。 在集群详情页面,单击左侧导航栏中的集群审计。 集群审计 单击开启集群审计功能,选择使用已有 Project或者创建新Project后,单击确定。 当出现如下页面时,表示集群审计功能已开启。开启审计功能 计费说明 您可以在费用账单的账单总览页面,查看计费明细,包含审计日志的费用信息。请参见费用账单。 审计日志计费方式,请参见按量付费。 支持第三方日志解决 您可以在集群Master各节点,在 /var/log/kubernetes/kubernetes.audit 路径下找到审计日志的源文件。该文件是标准的json格式,您可以在部署集群时选择不使用阿里云的日志服务,根据需要对接其他的日志解决方案,完成相关审计日志的采集和检索。

1934890530796658 2020-03-31 15:45:41 0 浏览量 回答数 0
阿里云大学 云服务器ECS com域名 网站域名whois查询 开发者平台 小程序定制 小程序开发 国内短信套餐包 开发者技术与产品 云数据库 图像识别 开发者问答 阿里云建站 阿里云备案 云市场 万网 阿里云帮助文档 免费套餐 开发者工具 企业信息查询 小程序开发制作 视频内容分析 企业网站制作 视频集锦 代理记账服务 2020阿里巴巴研发效能峰会 企业建站模板 云效成长地图 高端建站