华为云用户手册

  • 相关链接 CVE-2021-25745社区漏洞issue:https://github.com/kubernetes/ingress-nginx/issues/8502 CVE-2021-25746社区漏洞issue:https://github.com/kubernetes/ingress-nginx/issues/8503 社区已经发布版本修复: https://github.com/kubernetes/ingress-nginx/releases/tag/controller-v1.2.0
  • 漏洞修复方案 1. 漏洞CVE-2021-25745消减措施:通过实施准入策略,将'networking.k8s.io/Ingress'中的'spec.rules[].http.paths[].path'限制在已知安全字符中(参考社区最新规则,或者采用annotation-value-word-blocklist中的建议值)。 2. 漏洞CVE-2021-25746消减措施:通过实施准入策略,将'metadata.annotations'的值限制在已知的安全字符中(参考社区最新规则,或者采用annotation-value-word-blocklist中的建议值)。
  • 漏洞详情 Kubernetes开源社区中披露了2个nginx-ingress漏洞: 1. 漏洞CVE-2021-25745:用户有权限可以在创建/更新ingress时,利用‘spec.rules[].http.paths[].path’字段,获取到ingress-controller使用的凭证,这个凭证可以获取集群中所有命名空间的密钥。 2. 漏洞CVE-2021-25746:用户有权限可以在创建/更新ingress时,利用‘.metadata.annotations’字段,获取到ingress-controller使用的凭证,这个凭证可以获取集群中所有命名空间的密钥。 表1 漏洞信息 漏洞类型 CVE-ID 漏洞级别 披露/发现时间 权限提升 CVE-2021-25745 中 2022-4-16 权限提升 CVE-2021-25746 中 2022-4-16
  • 漏洞详情 社区在 Kubernetes 中发现了一个安全问题,用户可以创建一个带有subPath volume挂载的容器,访问卷外的文件和目录,包括主机文件系统上的文件和目录。 容器使用subPath去挂载一些文件或者目录时,攻击者可能利用Symlink Exchange 访问除挂载目录之外的目录或者主机上的文件,造成越权。 表1 漏洞信息 漏洞类型 CVE-ID 漏洞级别 披露/发现时间 资源管理错误 CVE-2021-25741 中 2021-09-15
  • 漏洞影响 该漏洞涉及VolumeSubpath特性开关开启场景(默认开启),可能造成以下影响: 若恶意用户可以创建一个带有子路径卷挂载的容器,则可以访问卷外的文件和目录,包括主机文件系统上的文件和目录。 集群管理员已限制创建 hostPath 挂载的能力的集群受到的影响最严重。利用该漏洞可以在不使用 hostPath 功能的情况下进行类似 hostPath 的访问,从而绕过限制。 在默认的 Kubernetes 环境中,漏洞利用可用于掩盖对已授予特权的滥用。
  • 漏洞处理方案 您可以禁用 kubelet 上的VolumeSubpath feature gate,并删除任何使用subPath功能的现有 Pod。 以root用户登录CCE Node节点。 修改kubelet配置参数,关闭VolumeSubpath特性。 vi /opt/cloud/cce/kubernetes/kubelet/kubelet_config.yaml 添加VolumeSubpath: false字段 重启kubelet。 systemctl restart kubelet 确认kubelet新进程已启动,且已关闭VolumeSubpath。 vi /var/paas/sys/log/kubernetes/kubelet.log 搜索VolumeSubpath=false,如果能搜到说明关闭成功。 删除任何使用subPath功能的Pod。
  • VolumeSubpath特性开启或回退 修改kubelet配置文件,删除VolumeSubpath相关字段。 vi /opt/cloud/cce/kubernetes/kubelet/kubelet_config.yaml 重启kubelet。 systemctl restart kubelet 确认kubelet新进程已启动,且重启后的kubelet.log日志中无VolumeSubpath=false相关字段。
  • 创建Pod kubernetes中资源可以使用YAML描述(如果您对YAML格式不了解,可以参考YAML语法),也可以使用JSON,如下示例描述了一个名为nginx的Pod,这个Pod中包含一个名为container-0的容器,使用nginx:alpine镜像,使用的资源为100m CPU、200Mi内存。 apiVersion: v1 # Kubernetes的API Version kind: Pod # Kubernetes的资源类型 metadata: name: nginx # Pod的名称 spec: # Pod的具体规格(specification) containers: - image: nginx:alpine # 使用的镜像为 nginx:alpine name: container-0 # 容器的名称 resources: # 申请容器所需的资源 limits: cpu: 100m memory: 200Mi requests: cpu: 100m memory: 200Mi imagePullSecrets: # 拉取镜像使用的证书,在CCE上必须为default-secret - name: default-secret 如上面YAML的注释,YAML描述文件主要为如下部分: metadata:一些名称/标签/namespace等信息。 spec:Pod实际的配置信息,包括使用什么镜像,volume等。 如果去查询Kubernetes的资源,您会看到还有一个status字段,status描述kubernetes资源的实际状态,创建时不需要配置。这个示例是一个最小集,其他参数定义后面会逐步介绍。 Pod定义好后就可以使用kubectl创建,如果上面YAML文件名称为nginx.yaml,则创建命令如下所示,-f表示使用文件方式创建。 $ kubectl create -f nginx.yaml pod/nginx created
  • 容器组(Pod) 容器组(Pod)是Kubernetes创建或部署的最小单位。一个Pod封装一个或多个容器(container)、存储资源(volume)、一个独立的网络IP以及管理控制容器运行方式的策略选项。 Pod使用主要分为两种方式: Pod中运行一个容器。这是Kubernetes最常见的用法,您可以将Pod视为单个封装的容器,但是Kubernetes是直接管理Pod而不是容器。 Pod中运行多个需要耦合在一起工作、需要共享资源的容器。通常这种场景下应用包含一个主容器和几个辅助容器(SideCar Container),如图1所示,例如主容器为一个web服务器,从一个固定目录下对外提供文件服务,而辅助容器周期性的从外部下载文件存到这个固定目录下。 图1 Pod 实际使用中很少直接创建Pod,而是使用Kubernetes中称为Controller的抽象层来管理Pod实例,例如Deployment和Job。Controller可以创建和管理多个Pod,提供副本管理、滚动升级和自愈能力。通常,Controller会使用Pod Template来创建相应的Pod。
  • 使用环境变量 环境变量是容器运行环境中设定的一个变量。 环境变量为应用提供极大的灵活性,您可以在应用程序中使用环境变量,在创建容器时为环境变量赋值,容器运行时读取环境变量的值,从而做到灵活的配置,而不是每次都重新编写应用程序制作镜像。 环境变量的使用方法如下所示,配置spec.containers.env字段即可。 apiVersion: v1 kind: Pod metadata: name: nginx spec: containers: - image: nginx:alpine name: container-0 resources: limits: cpu: 100m memory: 200Mi requests: cpu: 100m memory: 200Mi env: # 环境变量 - name: env_key value: env_value imagePullSecrets: - name: default-secret 执行如下命令查看容器中的环境变量,可以看到env_key这个环境变量,其值为env_value。 $ kubectl exec -it nginx -- env PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin HOSTNAME=nginx TERM=xterm env_key=env_value 环境变量还可以引用ConfigMap和Secret,具体使用方法请参见在环境变量中引用ConfigMap和在环境变量中引用Secret。
  • 容器启动命令 启动容器就是启动主进程,但有些时候,启动主进程前,需要一些准备工作。比如MySQL类的数据库,可能需要一些数据库配置、初始化的工作,这些工作要在最终的MySQL服务器运行之前做完。这些操作,可以在制作镜像时通过在Dockerfile文件中设置ENTRYPOINT或CMD来完成,如下所示的Dockerfile中设置了ENTRYPOINT ["top", "-b"]命令,其将会在容器启动时执行。 FROM ubuntu ENTRYPOINT ["top", "-b"] 实际使用时,只需配置Pod的containers.command参数,该参数是list类型,第一个参数为执行命令,后面均为命令的参数。 apiVersion: v1 kind: Pod metadata: name: nginx spec: containers: - image: nginx:alpine name: container-0 resources: limits: cpu: 100m memory: 200Mi requests: cpu: 100m memory: 200Mi command: # 启动命令 - top - "-b" imagePullSecrets: - name: default-secret
  • 容器的生命周期 Kubernetes提供了容器生命周期钩子,在容器的生命周期的特定阶段执行调用,比如容器在停止前希望执行某项操作,就可以注册相应的钩子函数。目前提供的生命周期钩子函数如下所示。 启动后处理(PostStart):容器启动后触发。 停止前处理(PreStop):容器停止前触发。 实际使用时,只需配置Pod的lifecycle.postStart或lifecycle.preStop参数,如下所示。 apiVersion: v1 kind: Pod metadata: name: nginx spec: containers: - image: nginx:alpine name: container-0 resources: limits: cpu: 100m memory: 200Mi requests: cpu: 100m memory: 200Mi lifecycle: postStart: # 启动后处理 exec: command: - "/postStart.sh" preStop: # 停止前处理 exec: command: - "/preStop.sh" imagePullSecrets: - name: default-secret
  • 创建Role Role的定义非常简单,指定namespace,然后就是rules规则。如下面示例中的规则就是允许对default命名空间下的Pod进行GET、LIST操作。 kind: Role apiVersion: rbac.authorization.k8s.io/v1 metadata: namespace: default # 命名空间 name: role-example rules: - apiGroups: [""] resources: ["pods"] # 可以访问pod verbs: ["get", "list"] # 可以执行GET、LIST操作
  • ClusterRole和ClusterRoleBinding 相比Role和RoleBinding,ClusterRole和ClusterRoleBinding有如下几点不同: ClusterRole和ClusterRoleBinding不用定义namespace字段 ClusterRole可以定义集群级别的资源 可以看出ClusterRole和ClusterRoleBinding控制的是集群级别的权限。 在Kubernetes中,默认定义了非常多的ClusterRole和ClusterRoleBinding,如下所示。 $ kubectl get clusterroles NAME AGE admin 30d cceaddon-prometheus-kube-state-metrics 6d3h cluster-admin 30d coredns 30d custom-metrics-resource-reader 6d3h custom-metrics-server-resources 6d3h edit 30d prometheus 6d3h system:aggregate-customedhorizontalpodautoscalers-admin 6d2h system:aggregate-customedhorizontalpodautoscalers-edit 6d2h system:aggregate-customedhorizontalpodautoscalers-view 6d2h .... view 30d $ kubectl get clusterrolebindings NAME AGE authenticated-access-network 30d authenticated-packageversion 30d auto-approve-csrs-for-group 30d auto-approve-renewals-for-nodes 30d auto-approve-renewals-for-nodes-server 30d cceaddon-prometheus-kube-state-metrics 6d3h cluster-admin 30d cluster-creator 30d coredns 30d csrs-for-bootstrapping 30d system:basic-user 30d system:ccehpa-rolebinding 6d2h system:cluster-autoscaler 6d1h ... 其中,最重要最常用的是如下四个ClusterRole。 view:拥有查看命名空间资源的权限 edit:拥有修改命名空间资源的权限 admin:拥有命名空间全部权限 cluster-admin:拥有集群的全部权限 使用kubectl describe clusterrole命令能够查看到各个规则的具体权限。 通常情况下,使用这四个ClusterRole与用户做绑定,就可以很好的做到权限隔离。这里的关键一点是理解到Role(规则、权限)与用户是分开的,只要通过Rolebinding来对这两者进行组合就能做到灵活的权限控制。
  • RBAC资源 Kubernetes中完成授权工作的就是RBAC机制,RBAC授权规则是通过四种资源来进行配置。 Role:角色,其实是定义一组对Kubernetes资源(命名空间级别)的访问规则。 RoleBinding:角色绑定,定义了用户和角色的关系。 ClusterRole:集群角色,其实是定义一组对Kubernetes资源(集群级别,包含全部命名空间)的访问规则。 ClusterRoleBinding:集群角色绑定,定义了用户和集群角色的关系。 Role和ClusterRole指定了可以对哪些资源做哪些动作,RoleBinding和ClusterRoleBinding将角色绑定到特定的用户、用户组或ServiceAccount上。如下图所示。 图1 角色绑定
  • 创建RoleBinding 有了Role之后,就可以将Role与具体的用户绑定起来,实现这个的就是RoleBinding了。如下所示。 kind: RoleBinding apiVersion: rbac.authorization.k8s.io/v1 metadata: name: rolebinding-example namespace: default subjects: # 指定用户 - kind: User # 普通用户 name: user-example apiGroup: rbac.authorization.k8s.io - kind: ServiceAccount # ServiceAccount name: sa-example namespace: default roleRef: # 指定角色 kind: Role name: role-example apiGroup: rbac.authorization.k8s.io 这里的subjects就是将Role与用户绑定起来,用户可以是外部普通用户,也可以是ServiceAccount,这两种用户类型在ServiceAccount有过介绍。绑定后的关系如下图所示。 图2 RoleBinding绑定Role和用户 下面来验证一下授权是否生效。 在前面一个章节使用ServiceAccount中,创建一个Pod,使用了sa-example这个ServiceAccount,而刚刚又给sa-example绑定了role-example这个角色,现在进入到Pod,使用curl命令通过API Server访问资源来验证权限是否生效。 使用sa-example对应的ca.crt和Token认证,查询default命名空间下所有Pod资源,对应创建Role中的LIST。 $ kubectl exec -it sa-pod -- /bin/sh # export CURL_CA_BUNDLE=/var/run/secrets/kubernetes.io/serviceaccount/ca.crt # TOKEN=$(cat /var/run/secrets/kubernetes.io/serviceaccount/token) # curl -H "Authorization: Bearer $TOKEN" https://kubernetes/api/v1/namespaces/default/pods { "kind": "PodList", "apiVersion": "v1", "metadata": { "selfLink": "/api/v1/namespaces/default/pods", "resourceVersion": "10377013" }, "items": [ { "metadata": { "name": "sa-example", "namespace": "default", "selfLink": "/api/v1/namespaces/default/pods/sa-example", "uid": "c969fb72-ad72-4111-a9f1-0a8b148e4a3f", "resourceVersion": "10362903", "creationTimestamp": "2020-07-15T06:19:26Z" }, "spec": { ... 返回结果正常,说明sa-example是有LIST Pod的权限的。再查询一下Deployment,返回如下,说明没有访问Deployment的权限。 # curl -H "Authorization: Bearer $TOKEN" https://kubernetes/api/v1/namespaces/default/deployments ... "status": "Failure", "message": "deployments is forbidden: User \"system:serviceaccount:default:sa-example\" cannot list resource \"deployments\" in API group \"\" in the namespace \"default\"", ...
  • 入门实践 当您接入DSC服务后,可以根据业务场景使用DSC提供的一系列常用实践。 表1 常用实践 实践 描述 如何防止个人敏感数据在开发测试中被泄露? 华为云 数据安全中心 (Data Security Center,简称DSC)提供的静态数据脱敏功能,可以按照脱敏规则一次性完成大批量数据的变形转换。例如将生产环境中的敏感数据交付至开发、测试或者外发环境使用时,可以使用静态数据脱敏功能。 静态数据脱敏的应用场景: 开发测试 数据分享 数据研究 OBS数据安全防护最佳实践 介绍如何使用数据安全中心(DSC),对OBS中存储的敏感数据进行识别、分类分级和保护。 等保合规安全解决方案 华为云依托自身安全能力与安全合规生态,为客户提供一站式的安全解决方案,帮助客户快速、低成本完成安全整改,轻松满足等保合规要求。
  • OneAccess 授权项 策略包含系统策略和自定义策略,如果系统策略不满足授权要求,管理员可以创建自定义策略,并通过给用户组授予自定义策略来进行精细的访问控制。策略支持的操作与API相对应,授权项列表说明如下: 权限:允许或拒绝某项操作。 授权项:自定义策略中支持的Action,在自定义策略中的Action中写入授权项,可以实现授权项对应的权限功能。 IAM 项目(Project)/企业项目(Enterprise Project):自定义策略的授权范围,包括IAM项目与企业项目。授权范围如果同时支持IAM项目和企业项目,表示此授权项对应的自定义策略,可以在IAM和企业管理两个服务中给用户组授权并生效。如果仅支持IAM项目,不支持企业项目,表示仅能在IAM中给用户组授权并生效,如果在企业管理中授权,则该自定义策略不生效。关于IAM项目与企业项目的区别,详情请参见:IAM项目与企业项目的区别。 权限 授权项 IAM项目 (Project) 企业项目 (Enterprise Project) 开通产品实例 oneaccess:instances:create √ × 查询产品实例列表 oneaccess:instances:get √ × 自定义 域名 oneaccess:domains:create √ × 解绑自定义域名 oneaccess:domains:delete √ × 查询域名证书详情 oneaccess:certificates:get √ × 修改域名证书 oneaccess:certificates:update √ × 变更规格 oneaccess:instances:update √ × 授权用户实例访问权限 oneaccess:permissions:grantRoleToUser √ × 移除用户实例访问权限 oneaccess:permissions:revokeRoleFromUser √ × 查询权限角色 oneaccess:permissions:listRoles √ × 查询权授权用户的权限角色 oneaccess:permissions:listRolesForUser √ × 查询实例的授权用户列表 oneaccess:permissions:listUsersOnInstance √ ×
  • OneAccess控制台权限 默认情况下,管理员创建的IAM用户没有任何权限,需要将其加入用户组,并给用户组授予策略或角色,才能使得用户组中的用户获得对应的权限,这一过程称为授权。授权后,用户就可以基于被授予的权限对云服务进行操作。 OneAccess部署时不区分物理区域,为全局级服务。授权时,在全局级服务中设置权限,访问OneAccess时,不需要切换区域。 权限根据授权精细程度分为角色和策略。 角色:IAM最初提供的一种根据用户的工作职能定义权限的粗粒度授权机制。该机制以服务为粒度,提供有限的服务相关角色用于授权。由于华为云各服务之间存在业务依赖关系,因此给用户授予角色时,可能需要一并授予依赖的其他角色,才能正确完成业务。角色并不能满足用户对精细化授权的要求,无法完全达到企业对权限最小化的安全管控要求。 策略:IAM最新提供的一种细粒度授权的能力,可以精确到具体服务的操作、资源以及请求条件等。基于策略的授权是一种更加灵活的授权方式,能够满足企业对权限最小化的安全管控要求。多数细粒度策略以API接口为粒度进行权限拆分,权限的最小粒度为API授权项(action),OneAccess支持的API授权项请参见OneAccess授权项。 如表1所示,包括了OneAccess控制台的所有系统权限。 表1 OneAccess控制台权限 系统角色/策略名称 描述 类别 Tenant Administrator 除 统一身份认证 服务外,拥有其他所有服务的管理员权限包括 应用身份管理 服务所有权限。 系统角色 Tenant Guest 除统一身份认证服务外,拥有其他所有服务的只读权限。拥有该权限的IAM用户仅能查看应用身份管理服务,不具备服务配置权限。 系统角色 IAM ReadOnlyAccess 统一身份认证服务的只读权限。 系统策略 OneAccess FullAccess 应用身份管理服务所有权限。 系统策略 OneAccess ReadOnlyAccess 应用身份管理服务只读权限,拥有该权限的用户仅能查看应用身份管理服务,不具备服务配置权限。 系统策略 华为云账号和被授权的子账号、委托账号可以购买应用身份管理服务实例,子账户和委托账号需要实例授权后才能使用应用身份管理服务。
  • AOM 自定义策略样例 示例1:授权用户创建告警规则的权限 { "Version": "1.1", "Statement": [ { "Effect": "Allow", "Action": [ "aom:alarmRule:create" ] } ] } 示例2:拒绝用户删除应用发现规则 拒绝策略需要同时配合其他策略使用,否则没有实际作用。用户被授予的策略中,一个授权项的作用如果同时存在Allow和Deny,则遵循Deny优先。 如果您给用户授予AOM FullAccess的系统策略,但不希望用户拥有AOM FullAccess中定义的删除应用发现规则权限,您可以创建一条拒绝删除应用发现规则的自定义策略,然后同时将AOM FullAccess和拒绝策略授予用户,根据Deny优先原则,则用户可以对AOM执行除了删除应用发现规则外的所有操作。拒绝策略示例如下: { "Version": "1.1", "Statement": [ { "Effect": "Deny", "Action": [ "aom:discoveryRule:delete" ] } ] } 示例3:多个授权项策略 一个自定义策略中可以包含多个授权项,且除了可以包含本服务的授权项外,还可以包含其他服务的授权项,可以包含的其他服务必须跟本服务同属性,即都是项目级服务。多个授权语句策略描述如下: { "Version": "1.1", "Statement": [ { "Effect": "Allow", "Action": [ "aom:*:list", "aom:*:get", "apm:*:list", "apm:*:get" ] }, { "Effect": "Allow", "Action": [ "cce:cluster:get", "cce:cluster:list", "cce:node:get", "cce:node:list" ] } ] }
  • 操作步骤 登录KVS管理控制台。 在KVS管理控制台左侧导航栏选择“仓”,进入存储仓列表。 单击仓名进入要更新KV的仓,单击表名进入要更新KV的表。 选择“KV信息”页签。 找到要更新的KV,在右侧操作列,单击“编辑”,进入KV属性表单。 图1 “编辑”界面 修改KV属性。注意,您只能修改除分区键和排序键以外的属性名称和属性的值。 修改完成后,单击右下角的“确定”,完成KV更新。 查看KV列表,检查KV信息是否为最新值,如果是最新值则更新KV成功。
  • 操作步骤 进入KVS管理控制台。 在KVS管理控制台左侧导航栏选择“仓”。 在页面右上角单击“创建仓”。 根据界面提示,配置“仓详细信息”参数,如表1所示。 图1 “仓详细信息”界面 表1 “仓详细信息”参数说明 类别 参数名称 描述 仓详细信息 仓名称 必选参数。 存储仓的名称。存储仓的名称长度范围为16-52个字符,由数字0-9、字符a-z、A-Z,及特殊符“-”组成,“-”不能出现在名字头部或尾部。仓名称全域唯一,不同租户的仓名不能相同。 存储仓的命名规范为{用户自定义前缀}-{当前控制台所在区域的区域名}-{账号ID} 。 须知: 区域名和账号ID为仓名称的固定部分,用户只需填写自定义前缀部分。 根据界面提示,配置“表详细信息”参数,如表2所示。 图2 “表详细信息”界面 表2 “表详细信息”参数说明 类别 参数名称 描述 表详细信息 表名称 必选参数。 表的名称。表的名称长度范围为3-52个字符,由数字0-9、字符a-z、A-Z,及特殊符“-”、“_”组成,且表名称在存储仓内唯一。 分区键 必选参数。 分区键的长度范围为1-63个字符,由数字0-9、字符a-z、A-Z,及特殊符“-”、“_”组成。 首字母不支持设置为“_”。 排序键 可选参数。 排序键的长度范围为1-63个字符,由数字0-9、字符a-z、A-Z,及特殊符“-”、“_”组成。 首字母不支持设置为“_”。 根据界面提示,配置“二级索引”。支持创建本地二级索引和全局二级索引。 单击“创建本地二级索引”,配置参数信息如表3所示。确认配置信息后单击“确定”。 图3 “创建本地二级索引”界面 表3 “创建本地二级索引”参数说明 类别 参数名称 描述 创建本地二级索引 名称 必选参数。 本地二级索引的名称。名称的长度范围为1-255个字符,由数字0-9、字符a-z、A-Z,及特殊符“-”、“_”、“.”组成。名称不支持设置为“XPriIndex”。 排序键 必选参数。 排序键的长度范围为1-63个字符,由数字0-9、字符a-z、A-Z,及特殊符“-”、“_”组成。首字母不支持设置为“_”。 摘要 可选参数。 本地二级索引的摘要字段。支持创建多个摘要。摘要的长度范围为1-63个字符,由数字0-9、字符a-z、A-Z,及特殊符“-”、“_”组成。 首字母不支持设置为“_”。 单击“创建全局二级索引”,配置参数信息如表4所示。确认配置信息后单击“确定”。 图4 “创建全局二级索引”界面 表4 “创建全局二级索引”参数说明 类别 参数名称 描述 创建全局二级索引 名称 必选参数。 全局二级索引的名称。名称的长度范围为1-255个字符,由数字0-9、字符a-z、A-Z,及特殊符“-”、“_”、“.”组成。名称不支持设置为“XPriIndex”。 分区键 必选参数。 分区键的长度范围为1-63个字符,由数字0-9、字符a-z、A-Z,及特殊符“-”、“_”组成。 首字母不支持设置为“_”。 排序键 可选参数。 排序键的长度范围为1-63个字符,由数字0-9、字符a-z、A-Z,及特殊符“-”、“_”组成。 首字母不支持设置为“_”。 摘要 可选参数。 全局二级索引的摘要字段。支持创建多个摘要。摘要的长度范围为1-63个字符,由数字0-9、字符a-z、A-Z,及特殊符“-”、“_”组成。首字母不支持设置为“_”。 信息设置完成后,单击“确定”。
  • 约束与限制 存储仓的名称长度范围为16-52个字符,由数字0-9、字符a-z、A-Z,及特殊符“-”组成,“-”不能出现在名字头部或尾部。仓名称全域唯一,不同租户的仓名不能相同。存储仓的命名规范为{用户自定义前缀}-{当前控制台所在区域的区域名}-{账号ID} ,例如:exampleprefix-cn-north-4-exampledomainid。 为存储仓命名时字母大小写不敏感。例如,KVS已存在存储仓exampleprefix-cn-north-4-exampledomainid,如果您再创建存储仓Exampleprefix-cn-north-4-exampledomainid,系统会认定为同一种仓名,导致创建存储仓失败。 单个账号支持创建的存储仓数量不超过25个。
  • KV简介 键值数据(Key-Value),以下简称KV,是KVS云服务数据存储的最小单位,用来存储用户具体数据信息,是文档型的数据项。KVS自顶向下按照仓、表、KV的结构存储数据,仓中包含1个或多个表,表中包含0个或多个KV,每个KV都有不同于其他所有KV的唯一标识。例如,用一张表记录某个部门所有员工的信息,每一个KV就代表一个员工,员工的身份证号就是唯一标识。 图1 KV简介 每个KV包含多个属性,属性有必选属性和可选属性,必选属性对应分区键和排序键,每一条KV都必须填写,否则会导致插入KV失败。可选属性您可以根据自身诉求自定义添加,不会影响KV插入。 例如,以下为一个员工信息表,每一条KV代表一个员工。对于KV的属性,身份证号(SSN)是分区键,姓名(Name)是排序键,这两者KV必须赋值。性别(Gender)、职位(Job)、获奖记录(Award Records)等属性是附加的可选属性,用户可以自定义。 Employee { "SSN": 0123456789, "Name": "张三", } { "SSN": 9876543210, "Name": "李四", "Gender": "female", "Job": "O&M staff", "Award Records": "Best Employee Award" } KVS服务支持插入、更新、删除、查询KV。 表1 KVS云服务支持的KV相关功能 功能 描述 插入KV 向指定表中插入新的KV数据。 更新KV 更新指定表中指定KV的数据。 删除KV 删除指定KV。 查询KV 查询指定表中的KV数据。 父主题: KV管理
  • 创建SFS Turbo文件系统 登录华为云弹性文件服务控制台,选择“SFS Turbo”,单击“创建文件系统”,进入“创建文件系统”界面。 在“创建文件系统”界面填写如下参数: 计费模式:根据实际情况选择,推荐按需计费。 弹性文件服务的计费介绍请参见计费说明,计费价格请参见价格计算器。 区域:请选择“华东-上海一”,当前Stable-Diffusion应用仅支持上海一部署。 项目:默认。 可用区:与子网可用区保持一致。 文件系统类型:根据实际需要选择。 存储类型:根据实际需要选择。 容量:根据实际需要选择。 选择网络:请选择上一步创建的VPC和子网。 安全组:请根据提示信息配置。 企业项目:default。 其他保持默认。 参数配置完成后,单击“立即创建”,等待SFS Turbo文件系统创建完成即可。 父主题: 准备
  • 一站式接入 场景介绍 一站式接入购买物理连接,指华为云向用户提供整合基础运营商网络资源和端口的一站式上云服务。 整体接入流程请参考图4 一站式接入功能目前已开通区域:华北-北京一、华北-北京四、华东-上海一、华东-上海二、华南-广州、华南-深圳、西南-贵阳一。 图4 一站式物理连接接入流程 操作步骤 提交需求信息。 登录控制台,选择并进入云专线服务,在物理连接页面单击 “一站式接入”,进入物理连接需求信息页面。 根据界面提示,在物理连接需求信息页面配置机房信息、华为云接入点等信息,详细请参照表2输入相关参数。 图5 一站式接入 表2 购买物理连接参数 参数 取值样例 说明 您的机房地址 - 用户填写机房地址,需要精确到房间和机柜号。例如上海市浦东新区华京路xx号xx楼xx机房xx机柜。 可进线的专线运营商 中国电信 用户机房允许进线的运营商。 设备端口类型 GE 用户机房出口设备的端口类型,物理线路会连接到此端口。 区域 - 物理连接开通的区域。用户可以在管理控制台左上角或购买页面切换区域。 华为云接入点 - 物理连接接入点的位置。 端口类型 1GE 物理连接接入端口的类型:1GE,10GE、40GE、100GE。 物理连接名称 dc-123 用户将要创建的物理连接的名称(可自定义)。 专线带宽 1000Mbit/s 物理连接的带宽大小,请在下拉框中选择对应的带宽。 计费模式 - 专线服务付费方式,目前仅支持包年方式付费。 购买时长 1年 购买服务的时长。 企业项目 default 将物理连接加入已有的企业项目内,支持按企业项目维度管理资源。 联系人姓名 张三 用户侧专线负责人姓名。 联系人手机 13912345678 用户侧专线负责人手机号码。 联系人Email Zhangsan@163.com 用户侧专线负责人邮箱地址。 单击“提交”。 华为云工勘。 华为云评估用户需求和运营商资源,与用户确认可满足用户需求的产品信息,回填信息后将订单返回给用户。 华为云工勘一般需要3个工作日。 确认配置支付订单。 在物理连接页面,单击目标物理连接操作列的“确认配置”。 在确认配置页面,确认物理连接配置方案和费用信息,单击“立即支付”。 用户在购买前须阅读并接受《一站式接入服务声明》,并在确认配置页面中勾选。 在购买页面,选择付款方式,单击“确认付款”。 用户选择“申请线上合同请款后支付”时,前往合同页面中申请并下载合同,线下申请款项后再完成支付;您已选择的折扣优惠会保存至相应的待支付订单。 华为云施工。 运营商线路施工。 华为云与用户侧进线对接。 机房楼内线施工。 工勘回填信息为一站式接入高级且包括楼内线产品时涉及机房楼内线施工。 端口开通。 开通确认。 在物理连接页面,单击目标物理连接操作列的“确认施工完成”。 在弹窗中,单击“确认”。确认物理连接已创建完成,华为云开始计费。
  • 适用于日志和监控的最佳实践 该示例模板中对应的合规规则的说明如下表所示: 表1 合规包示例模板说明 合规规则 规则中文名称 涉及云服务 规则描述 alarm-action-enabled-check 启用了 CES 告警操作 ces CES告警操作未启用,视为“不合规” apig-instances-execution-logging-enabled APIG专享版实例配置访问日志 apig APIG专享版实例未配置访问日志,视为“不合规” as-group-elb-healthcheck-required 弹性伸缩组使用弹性负载均衡健康检查 as 与负载均衡器关联的伸缩组未使用弹性负载均衡健康检查,视为“不合规” cts-kms-encrypted-check CTS 追踪器通过KMS进行加密 cts CTS追踪器未通过KMS进行加密,视为“不合规” cts-lts-enable CTS追踪器启用事件分析 cts CTS追踪器未启用事件分析,视为“不合规” cts-obs-bucket-track CTS追踪器追踪指定的OBS桶 cts 账号下的所有CTS追踪器未追踪指定的OBS桶,视为“不合规” cts-support-validate-check CTS追踪器打开事件文件校验 cts CTS追踪器未打开事件文件校验,视为“不合规” cts-tracker-exists 创建并启用CTS追踪器 cts 账号未创建CTS追踪器,视为“不合规” dws-enable-log-dump DWS集群启用日志转储 dws DWS集群未启用日志转储,视为“不合规” function-graph-concurrency-check 函数工作流 的函数并发数在指定范围内 fgs FunctionGraph函数并发数不在指定的范围内,视为“不合规” multi-region-cts-tracker-exists 在指定区域创建并启用CTS追踪器 cts 账号未在指定region列表创建CTS追踪器,视为“不合规” rds-instance-logging-enabled RDS实例配备日志 rds 未配备任何日志的RDS资源,视为“不合规” vpc-flow-logs-enabled VPC启用流日志 vpc 检查是否为VPC启用了流日志,如果该VPC未启用流日志,视为“不合规” 父主题: 合规规则包示例模板
  • 适用于 云审计 服务(CTS)的最佳实践 该示例模板中对应的合规规则的说明如下表所示: 表1 合规包示例模板说明 合规规则 规则中文名称 涉及云服务 规则描述 cts-kms-encrypted-check CTS追踪器通过KMS进行加密 cts CTS追踪器未通过KMS进行加密,视为“不合规” cts-lts-enable CTS追踪器启用事件分析 cts CTS追踪器未启用事件分析,视为“不合规” cts-support-validate-check CTS追踪器打开事件文件校验 cts CTS追踪器未打开事件文件校验,视为“不合规” cts-tracker-exists 创建并启用CTS追踪器 cts 账号未创建CTS追踪器,视为“不合规” 父主题: 合规规则包示例模板
  • 华为云架构可靠性最佳实践 该示例模板中对应的合规规则的说明如下表所示: 表1 合规包示例模板说明 合规规则 规则中文名称 涉及云服务 规则描述 apig-instances-execution-logging-enabled APIG专享版实例配置访问日志 apig APIG专享版实例未配置访问日志,视为“不合规” as-group-elb-healthcheck-required 弹性伸缩组使用弹性负载均衡健康检查 as 与负载均衡器关联的伸缩组未使用弹性负载均衡健康检查,视为“不合规” cts-lts-enable CTS追踪器启用事件分析 cts CTS追踪器未启用事件分析,视为“不合规” cts-obs-bucket-track CTS追踪器追踪指定的OBS桶 cts 账号下的所有CTS追踪器未追踪指定的OBS桶,视为“不合规” cts-tracker-exists 创建并启用CTS追踪器 cts 账号未创建CTS追踪器,视为“不合规” dws-enable-kms DWS集群启用KMS加密 dws DWS集群未启用KMS加密,视为“不合规” ecs-instance-in-vpc E CS 资源属于指定虚拟私有云ID ecs, vpc 指定虚拟私有云ID,不属于此VPC的ECS资源,视为“不合规” function-graph-concurrency-check 函数工作流的函数并发数在指定范围内 fgs FunctionGraph函数并发数不在指定的范围内,视为“不合规” gaussdb-nosql-enable-disk-encryption GeminiDB使用磁盘加密 gaussdb nosql GeminiDB未使用磁盘加密,视为“不合规” kms-not-scheduled-for-deletion KMS密钥不处于“计划删除”状态 kms KMS密钥处于“计划删除“状态,视为“不合规” multi-region-cts-tracker-exists 在指定区域创建并启用CTS追踪器 cts 账号未在指定region列表创建CTS追踪器,视为“不合规” rds-instance-enable-backup RDS实例开启备份 rds 未开启备份的RDS资源,视为“不合规” rds-instance-multi-az-support RDS实例支持多可用区 rds RDS实例仅支持一个可用区,视为“不合规” rds-instances-enable-kms RDS实例开启存储加密 rds 未开启存储加密的RDS资源,视为“不合规” sfsturbo-encrypted-check 高性能弹性文件服务通过KMS进行加密 sfsturbo 高性能弹性文件服务(SFS Turbo)未通过KMS进行加密,视为“不合规” volumes-encrypted-check 已挂载的云硬盘开启加密 ecs,evs 已挂载的云硬盘未进行加密,视为“不合规” vpc-flow-logs-enabled VPC启用流日志 vpc 检查是否为VPC启用了流日志,如果该VPC未启用流日志,视为“不合规” vpn-connections-active VPN连接状态为“正常” vpnaas 确保VPN连接状态正常。 父主题: 合规规则包示例模板
  • 适用于空闲资产管理的最佳实践 该示例模板中对应的合规规则的说明如下表所示: 表1 合规包示例模板说明 合规规则 规则中文名称 涉及云服务 规则描述 cce-cluster-end-of-maintenance-version CCE集群版本为处于维护的版本 cce CCE集群版本为停止维护的版本,视为“不合规” eip-unbound-check 弹性公网IP未进行任何绑定 vpc 弹性公网IP未进行任何绑定,视为“不合规” eip-use-in-specified-days EIP在指定天数内绑定到资源实例 eip EIP创建指定天数内未使用,视为“不合规” evs-use-in-specified-days 云硬盘创建后在指定天数内绑定资源实例 evs EVS创建指定天数内未使用,视为“不合规” iam-group-has-users-check IAM用户组添加了IAM用户 iam IAM用户组未添加任意IAM用户,视为“不合规” iam-user-last-login-check IAM用户在指定时间内有登录行为 iam IAM用户在指定时间范围内无登录行为,视为“不合规” stopped-ecs-date-diff 关机状态的ECS未进行任意操作的时间检查 ecs 关机状态的ECS未进行任意操作的时间超过了允许的天数,视为“不合规” volume-unused-check 云硬盘闲置检测 evs 云硬盘未挂载给任何云服务器,视为“不合规” vpc-acl-unused-check 未与子网关联的网络ACL vpc 检查是否存在未使用的网络ACL,如果网络ACL没有与子网关联,视为“不合规” 父主题: 合规规则包示例模板
共100000条