• [大咖交流] idou老师教你学istio1:如何为服务提供安全防护能力
    之前,已为大家介绍过 Istio 第一主打功能---连接服务。凡是产生连接关系,就必定带来安全问题,人类社会如此,服务网格世界,亦是如此。今天,我们就来谈谈Istio第二主打功能---保护服务。那么,便引出3个问题:Istio 凭什么保护服务?Istio 具体如何保护服务?如何告诉 Istio 发挥保护能力?Istio凭什么保护服务?将单体应用程序分解为一个个服务,为大型软件系统的开发和维护带来了诸多好处,比如更好的灵活性、可伸缩性和可复用性。但这也带来了一些安全问题:为了抵御中间人攻击,需要对流量进行加密为了提供灵活的服务访问控制,需要 mTLS(双向的安全传输层协议)和细粒度的访问策略要审计谁在什么时候做了什么,需要审计工具Istio 尝试提供全面的安全解决方案来解决这3个问题。如上图所示, Istio 安全的三大目标是:默认安全(Security by default):应用程序代码和基础结构,无需更改。深度防御(Defense in depth):与现有安全系统集成,提供多层防御。零信任网络(Zero-trust network):在不受信任的网络上,构建安全解决方案。为了实现这3个目标,Istio 安全功能提供了4大守护系统:强大的身份(Identity)系统健壮的策略(Policy)系统认证,授权和审计(AAA:Authentication,Authorization,Accounting)系统,用于保护服务和数据透明的 TLS 加密(Encryption)系统。就保护对象而言,Istio 安全系统可以抵御来自内部或外部的威胁,这些威胁主要针对服务网格内的端点(Endpoints),通信(Communication),平台(Platform)和数据(Data)。Istio具体如何保护服务?在安全方面,Istio 具备3个远大的目标,配备了4大守护系统,那么它到底是通过怎样的架构实现这个目标的呢,又通过什么样的安全基础设施,和 kubernetes 配合呢?1、Istio 安全架构如上图,与 Istio 的4大守护系统相对应,Istio 中涉及安全的组件有:Pilot :将授权策略和安全命名信息分发给代理Proxy :实现客户端和服务端之间的安全通信Citadel :用于密钥和证书管理Mixer :管理授权和审计由此可见,Pilot 不仅负责流量规则和策略的分发,还负责安全相关策略的下发,有点像皇上的贴身太监,负责宣读圣旨;Proxy 有点像各州属的州官,负责奉天承运;Citadel 有点像玉玺和虎符,负责鉴真去假;Mixer 有点像三省六部,负责授权审计。2、两个安全基本概念2.1)Identity身份(Identity)是几乎所有安全基础架构的基本概念。在服务和服务的通信开始前,双方必须用其身份信息交换凭证,以达到相互认证的目的。在客户端,根据安全命名(secure naming)信息,检查服务端的标识,以查看它是否是该服务的授权运行程序;在服务端,服务端可以根据授权策略(authorization policies)信息,确定客户端可以访问哪些数据,审计其在什么时间访问了什么,拒绝未授权客户端的访问。在 Istio 身份模型中,Istio 使用一流的服务标识来确定服务的身份。这为表示人类用户,单个服务或一组服务提供了极大的灵活性和粒度。在没有此类身份的平台上,Istio 可以使用可以对服务实例进行分组的其他身份,例如服务名称。不同平台上的 Istio 服务标识:Kubernetes: Kubernetes 服务帐户GKE/GCE: 可以使用 GCP 服务帐户AWS: AWS IAM 用户/角色 帐户On-premises (non-Kubernetes): 用户帐户,自定义服务帐户,服务名称,istio 服务帐户或 GCP 服务帐户。做个类比,京东和天猫都有自己的一套非常成熟的服务账户系统,淘宝只需要复用天猫的账户系统即可,无需重新开发一套,这样我们就可以用天猫的账号,直接登录淘宝。而 Istio 也更倾向于复用业界一流的服务账户系统,如 Kubernetes 和 AWS 的,但也可以自定义服务账户,并按需复用 Kubernetes 的账户系统。2.2)PKIIstio PKI(Public Key Infrastructure)建立在 Istio Citadel 之上,可为每个工作负载提供安全且强大的工作负载标识。Istio 使用 X.509 证书来携带 SPIFFE 格式的身份信息。PKI 还可以大规模自动化地进行密钥和证书轮换。Istio 支持在 Kubernetes pod 和本地计算机上运行的服务。目前,Istio 为每个方案使用不同的证书密钥配置机制,下面试举例 Kubernetes 方案的配置过程:Citadel 监视 Kubernetes apiserver,为每个现有和新的服务帐户创建 SPIFFE 证书和密钥对。 Citadel 将证书和密钥对存储为 Kubernetes secrets。创建 pod 时,Kubernetes 会根据其服务帐户通过 Kubernetes secret volume 将证书和密钥对挂载到 pod。Citadel 监视每个证书的生命周期,并通过重写 Kubernetes secret 自动轮换证书。Pilot 生成安全命名信息,该信息定义了哪些服务帐户可以运行某个服务。接着Pilot 将安全命名信息传递给 Envoy。如何告诉Istio发挥保护能力?如上一章节所言,Istio 基于控制面组件,引入了一流的服务账户系统,结合强大的PKI,实现了对服务网格的安全守护。同时,Istio 也开放了接口,让我们可以进行精细化的配置,全方位满足我们对服务的安全需求。服务安全,总是离不开两个具体过程:认证(Authentication)和鉴权(Authorization)。Istio 通过 Policy 和 MeshPolicy 文件,实现对认证相关功能的定义;通过RbacConfig、ServiceRole 和 ServiceRoleBinding 文件,实现对鉴权相关功能的启用和定义。让我们举个几个通俗的例子来区分认证和鉴权:进火车站需要提供证件和火车票,身份证可以证明你就是你,这是认证;火车票可以证明你有权上那趟火车,这是授权。又例如,你要访问自己淘宝的购物车,需要先登录,这是认证。你要访问朋友的购物车,就需要他的允许,这是授权。再例如,有经验的朋友能发现浏览器经常会面对两个错误码:401和403。通常而言,401就是未登录的意思,需要认证;403就是禁止访问的意思,需要授权。1、认证Istio 提供两种类型的身份认证:A)传输身份认证,也称为服务到服务身份认证:对直连客户端进行验证。Istio 提供双向TLS作为传输身份认证的全栈解决方案。我们可以轻松启用此功能,而无需更改服务代码。这个解决方案:为每个服务提供强大的身份认定,以实现跨群集和跨云的互操作性。保护服务到服务通信和最终用户到服务通信。提供密钥管理系统,以自动执行密钥和证书生成,分发和轮换。B)来源身份认证,也称为终端用户身份认证:对来自终端用户或设备的原始客户端请求进行验证。Istio 通过 JSON Web Token(JWT)、Auth0、Firebase Auth、Google Auth 和自定义身份认证来简化开发者的工作,使之轻松实现请求级别的身份认证。在这两种情况下,Istio 都通过自定义 Kubernetes API 将身份认证策略存储在 Istio 配置存储(Istio config store)中。Pilot 会在适当的时候进行同步,为每个Proxy更新其最新状态以及密钥。此外,Istio 支持在许可模式下进行身份认证,以帮助我们理解策略变更前后,服务的安全状态是如何变化的。1.1)认证架构我们可以使用身份认证策略,为 Istio 网格中接收请求的服务指定身份认证要求。我们使用 .yaml 文件来配置策略,策略将保存在 Istio 配置存储中。在任何策略变更后,Pilot 会将新策略转换为适当的配置,下发给Envoy,告知其如何执行所需的身份认证机制。Pilot 可以获取公钥并将其附加到 JWT 进行配置验证。或者,Pilot 提供 Istio 系统管理的密钥和证书的路径,并将它们安装到负载 Pod 中,以进行双向 TLS。本文多次提到双向TLS认证,让我们理解一下其在 Istio 里的实现。Istio 通过客户端和服务端各自配备的 Envoy 进行通信,也就是说,客户端和服务端的流量,是被各自的 Envoy 接管了的。对于客户端调用服务端,遵循的步骤是:Istio 将出站流量从客户端重新路由到客户端的本地 Envoy。客户端 Envoy 与服务端 Envoy 开始双向 TLS 握手。在握手期间,客户端 Envoy 还执行安全命名检查,以验证服务证书中提供的服务帐户是否有权运行目标服务。客户端 Envoy 和服务端 Envoy 建立了一个双向的 TLS 连接,Istio 将流量从客户端 Envoy 转发到服务端 Envoy。授权后,服务端 Envoy 通过本地 TCP 连接将流量转发到服务端的服务。1.2)认证策略配置和其他的 Istio 配置一样,可以用 .yaml 文件的形式来编写认证策略,然后使用 Istioctl 二进制工具进行部署。如下图的配置,通过配置 Policy 文件,对 reviews 服务进行了传输身份认证的配置,要求其必须使用双向TLS做认证。apiVersion: "authentication.Istio.io/v1alpha1" kind: "Policy" metadata:   name: "reviews" spec:   targets:   - name: reviews       peers:     - mtls: {}2、授权Istio 的授权功能,也称为基于角色的访问控制(RBAC),为 Istio 服务网格中的服务提供命名空间级别,服务级别和方法级别的访问控制。它的特点是:基于角色的语义,简单易用。包含服务到服务和终端用户到服务两种授权模式。通过自定义属性灵活定制授权策略,例如条件,角色和角色绑定。高性能,因为 Istio 授权功能是在 Envoy 里执行的。2.1)授权架构上图显示了基本的 Istio 授权架构。和认证的生效过程一样,运维人员使用.yaml文件指定 Istio 授权策略。部署后,Istio 将策略保存在 Istio Config Store 中。Pilot 会一直监视 Istio 授权策略的变更,如果发现任何更改,它将获取更新的授权策略,并将 Istio 授权策略分发给与服务实例位于同一 pod 内的 Envoy 代理。每个 Envoy 代理都运行一个授权引擎,该引擎在运行时授权请求。当请求到达代理时,授权引擎根据当前授权策略评估请求上下文,并返回授权结果ALLOW或DENY。2.2)授权策略配置我们可以使用 RbacConfig 启用授权策略,并使用 ServiceRole 和ServiceRoleBinding 配置授权策略。 RbacConfig 是一个网格维度的单例,其固定名称值为 default,也就是说我们只能在网格中配置一个 RbacConfig 实例。与其他 Istio 配置对象一样,RbacConfig 被定义为 Kubernetes CustomResourceDefinition (CRD) 对象。在 RbacConfig 中,运算符可以指定 mode 值,它可以是:OFF:禁用 Istio 授权。ON:为网格中的所有服务启用了 Istio 授权。ON_WITH_INCLUSION:仅对包含字段中指定的服务和命名空间启用 Istio 授权。ON_WITH_EXCLUSION:除了排除字段中指定的服务和命名空间外,网格中的所有服务都启用 Istio 授权。在以下示例中,为 default 命名空间启用了 Istio 授权:apiVersion: "rbac.Istio.io/v1alpha1" kind: RbacConfig metadata:   name: default     namespace: Istio-system spec:   mode: 'ON_WITH_INCLUSION'     inclusion:       namespaces: ["default"]针对服务和命名空间启用授权后,我们还需要配置具体的授权策略,这通过配置ServiceRole 和 ServiceRoleBinding 实现。与其他 Istio 配置对象一样,它们同样被定义为CRD对象。ServiceRole 定义了一组访问服务的权限。ServiceRoleBinding 向特定对象授予 ServiceRole,例如用户,组或服务。ServiceRole 和 ServiceRoleBinding 组合规定了: 允许谁在哪些条件下做什么,具体而言:谁指的是 ServiceRoleBinding 中的 subject 部分。做什么指的是 ServiceRole 中的 rule 部分。哪些条件指的是我们可以在 ServiceRole 或 ServiceRoleBinding 中使用 Istio Attributes 指定的 condition 部分。让我们再举一个简单的例子,如下图,ServiceRole 和 ServiceRoleBinding 的配置规定:将所有用户(user=“*”)绑定为(products-viewer)角色,这个角色可以对products 这个服务发起 GET 或 HEAD 请求,但是其限制条件是请求头必须包含version,且值为v1或v2。apiVersion: "rbac.Istio.io/v1alpha1" kind: ServiceRole metadata:   name: products-viewer     namespace: default spec:   rules:     - services: ["products"] methods: ["GET", "HEAD"]     constraints:         - key: request.headers[version]       values: ["v1", "v2"] --- apiVersion: "rbac.Istio.io/v1alpha1" kind: ServiceRoleBinding metadata:   name:binding-products-allusers     namespace:default spec:   subjects:     - user: "*"     roleRef:     kind: ServiceRole         name: "products-viewer"至此,我们做个简单的总结:单体应用程序拆分成成千上百个服务后,带来了安全问题,Istio 尝试在由服务组成的服务网格里,加入了一套全栈解决方案。这套方案里,Istio 默默处理了大部分安全基础设施,但也暴露了认证和授权两个功能让用户进行自定义配置。我们通过 Policy、MeshPolicy 以及 RbacConfig、ServiceRole、ServiceRoleBinding 就可以完成对认证和授权环节所有功能的配置,而不需要侵入地改动任何服务的代码。
  • [技术干货] 方案(设备、应用)认证【转】
    (转自https://developer.huawei.com/ict/forum/thread-49421.html)方案(设备、应用)认证FAQ1.   认证条件、认证意义、认证费用? 1.1条件、费用要想知道为啥会有方案认证这个环节就不得不提MAR、SPP流程了,两者都是华为的合作伙伴管理流程,包含了合作伙伴的合作、开发、测试认证、商业激励和营销推广。认真看会发现在MAR流程里完成了方案开发后就是方案的测试认证环节。所以重点来了,要做华为认证的条件很简单,加入华为合作方案完成开发,最主要的是认证流程、测试流程全免费。 1.2意义认证完成后会收到“金灿灿”的设备或者应用的认证证书,而且后续Marketplace 、社区案例中心都得做过认证才可以哦,测试认证不仅仅是产品实力的体现,更是对客户负责的体现。  2.   OceanConnect平台认证的分类2.1认证的分类、选择、关系从合作伙伴的角度来讲分两类:l  设备类认证(Compatible)l  应用系统类认证(Enabled)从华为解决方案分类来讲分四类:l  NB-IoT设备认证(Compatible)l  AgentLite设备认证(Compatible)l  车联网OBD设备认证(Compatible)l  SmartHome终端认证(Compatible)所有认证均可独立认证、按需选择对应测试认证即可:应用认证通用设备认证NB、AgentLite、OBD、SmartHome 3.   认证流程3.1应用认证流程a)下载并参考测试认证中的《华为IoT应用认证指导(Enabled)》,按要求完成测试用例,相关测试截图,完成测试报告模板的修改。b) 将测试用例、截图、报告反馈给开发阶段对接的华为技术支持工程师。c) 通过后等待证书下发,未通过重复ab两步。 3.2 设备认证流程a) NB类型的设备在开发阶段会有接入规范,测试认证前请再次确认设备功能符合华为NB-IoT终端接入规范。b) 下载并参考测试认证中的《华为XXX认证指导(Compatible)》,按要求完成测试用例,相关测试截图,完成测试报告模板的修改。b) 将测试用例、截图、报告反馈给开发阶段对接的华为技术支持工程师。c) 测试报告未通过请重复abc两步,通过后华为开发相关人员会把开发结果填入系统,登录MAR账号确认开发结果,系统流程会自动转至测试认证阶段。e) 根据提示联系测试工程师,预约openlab并到场测试,openlab内借助环境和工具完成端到端测试。   3.3 注意事项       a.在填测试报告时,发现有些补充内容不清楚,举个栗子:在应用认证指导压缩包内,测试报告中有一个实验室组网,不清楚深圳F5Openlab、上海Openlab组网关系,可以忽略,在原图保持未知部分不动,把已知部分文字和图片换掉即可。一句话概括,不清楚的部分,把已知部分替换,未知部分保持不变。认证的华为同事会帮忙检查处理。       b.在填写测试用例时,发现有些测试用例没有条件测试,举个栗子:在应用NB设备认证指导压缩包内,有认证测试用例表格中有张场景用例的sheet,其中编号为NB_认证_终端入网_002的测试用例,测试步骤里提到打开vEPC跟踪某一IMSI信令,这中没有条件登录后台的只需关注测试结果即可。一句话概括:测试用例不具备测试条件的只需关注结果即可,测试用例优先级为option的可测可不测。       c. 有些不能测试的或者未做此功能的,请不要删除用例,在备注中进行相关说明。       d.  测试报告填写易遗漏点:页眉中要填写公司信息,组网图要提供,版本信息要填写所用到的硬件和软件信息       e.  测试结果截图,数据上报中一定要有电量batteryLevel(0~100%)、信号强度RSRP(-140~-44)=AT+NUESTATS命令返回的Signal power/10 、信号覆盖等级ECL(0~2)、信噪比SNR(-20~30)=AT+NUESTATS命令返回的SNR字段/10
  • [技术干货] not allowed multi path for com.huawei.iam.cache.controller.AgencyController:getAgency
    java.lang.Error: generate operation swagger failed, com.huawei.iam.cache.controller.AgencyController:getAgencygenerate operation swagger failed, com.huawei.iam.cache.controller.AgencyController:getAgencyjava.lang.Error: not allowed multi path for com.huawei.iam.cache.controller.AgencyController:getAgency说明: CSE不允许一个接口定义多个path,比如:@RequestMapping(value = {"/v3-ext/agencies", "/v3-huawei/agencies", "/v3.0/OS-AGENCY/agencies"},                 method = RequestMethod.GET, produces = "application/json;charset=UTF-8") public Map<String, Object> listAgency(@RequestParam("domain_id") String domainId,                                       @RequestParam(value = "name", required = false) String name,                                       HttpServletRequest request) throws BadRequestException {CSE不允许一个接口定义多个path,因为每个接口必须存在唯一的operation id。 这种情况需要将接口拆分为3个接口,比如listAgency1, listAgency2, listAgency3. 
  • [新特性] 视频点播上线新功能(IAM子账号权限管理)啦
    视频点播发布日志管理服务【新功能】:IAM子账号权限管理详细操作与描述:支持在IAM服务中创建视频点播子用户,支持配置四种不同权限:点播服务管理员、用户组管理员、用户组操作员和用户组访客。背景描述统一身份认证服务针对视频点播服务的预置策略及对应权限说明如表1所示。表1 预置策略说明操作步骤在统一身份认证服务上配置的用户组、权限策略、用户关系建议如图1所示。 图1  权限控制配置建议   其中,User5同时属于两个用户组,才能保证User7、User8登录点播服务控制台时,能够看到User5发布的媒体资源。登录统一身份认证服务控制台,单击“用户”并创建IAM用户,例如创建IAM用户“vod_operator”,并设置密码生成方式为“自定义”。单击“用户组”并创建用户组,例如创建用户组“Operator”。返回“用户组”界面,单击“修改”,修改用户组“Operator”的配置。单击“确定”返回。在“用户组权限”中,修改“华北-北京一”的策略,策略对应的权限说明请参考表1。在“包含用户”中,选择需要赋权的IAM用户,例如“vod_operator”。退出当前用户,返回公有云登录框,切换到IAM用户登录,以租户账号、IAM用户和密码登录。
  • 如何解决无法使用自定义词库功能问题
    遇到该问题,请按照如下操作步骤排查解决。排查集群的创建时间登录云搜索服务管理控制台。在左侧导航栏,单击“集群管理”。在“集群管理”页面上集群列表中的“创建时间”列,查看待配置自定义词库的集群的创建时间。如果创建时间早于2018年3月10日,则创建该集群时自定义词库功能尚未上线,当前无法为该集群配置自定义词库。如果创建时间晚于2018年3月10日,则需要排查当前登录所用的账号或IAM用户是否具有使用自定义词库功能的权限,具体操作请参见如下“排查是否有权限”部分。排查是否有权限登录统一身份认证服务管理控制台。查看当前登录所用的账号或IAM用户所属的用户组。具体操作请参见《统一身份认证服务用户指南》中的如何查看或修改用户信息章节。查看用户组的权限中是否包含:“全局服务”中“对象存储服务”项目的“Tenant Administrator”权限、当前所属区域的“Elasticsearch Administrator”权限。具体操作请参见《统一身份认证服务用户指南》中的如何查看或修改用户组章节。如果用户组的权限中不包含以上两个权限,请执行4。如果用户组的权限中包含以上两个权限,请联系人工客服协助解决。为用户组添加:“全局服务”中“对象存储服务”项目的“Tenant Administrator”权限、当前所属区域的“Elasticsearch Administrator”权限。具体操作请参见《统一身份认证服务用户指南》中的如何查看或修改用户组章节。 
  • 如何解决无法备份索引问题
    索引的备份是通过创建集群快照实现的。遇到无法备份索引问题,请按照如下操作步骤排查解决。排查集群的创建时间登录云搜索服务管理控制台。在左侧导航栏,单击“集群管理”。在“集群管理”页面上集群列表中的“创建时间”列,查看待备份索引的集群的创建时间。如果创建时间早于2018年3月10日,则创建该集群时备份与恢复索引功能尚未上线,当前无法为该集群备份索引。如果创建时间晚于2018年3月10日,则需要排查当前登录所用的账号或IAM用户是否具有备份索引的权限,具体操作请参见如下“排查是否有权限”部分。排查是否有权限登录统一身份认证服务管理控制台。查看当前登录所用的账号或IAM用户所属的用户组。具体操作请参见《统一身份认证服务用户指南》中的如何查看或修改用户信息章节。查看用户组的权限中是否包含:“全局服务”中“对象存储服务”项目的“Tenant Administrator”权限、当前所属区域的“Elasticsearch Administrator”权限。具体操作请参见《统一身份认证服务用户指南》中的如何查看或修改用户组章节。    如果用户组的权限中不包含以上两个权限,请执行4。如果用户组的权限中包含以上两个权限,请联系人工客服协助解决。为用户组添加:“全局服务”中“对象存储服务”项目的“Tenant Administrator”权限、当前所属区域的“Elasticsearch Administrator”权限。具体操作请参见《统一身份认证服务用户指南》中的如何查看或修改用户组章节。
  • [其他] 在创建MLS实例时,页面提示“委托配额不足”如何处理?
    问题原因用户在第一次使用MLS服务的时候需要授权,授权过程会在IAM(统一身份认证)页面创建名为“mls_admin_tust”的委托。而一个用户最多只能创建10个委托,委托个数超限之后无法创建委托,所以页面会出现“委托配额不足”解决办法请按照以下步骤删除不用的委托,然后重新授权即可。步骤1:登录华为云官网或机器学习界面之后,在右上角下拉框中,单击进入“账号中心”进入“账号中心”页面。步骤2:进入账号中心界面后,在右上角下拉框中选择“统一身份认证”单击进入“统一身份认证”页面。步骤3:进入“统一身份认证”服务界面之后,在该界面的左侧页签栏中选择“委托”选项,删除页面中一个不用的委托,保证MLS有创建的委托配额即可。步骤4: 删除委托之后,重新进入MLS服务的页面,授权进入MLS页面创建机器学习服务实例即可。
  • [大咖交流] Idou老师教你学Istio:如何为服务提供安全防护能力
    Idou老师教你学Istio:如何为服务提供安全防护能力之前,已为大家介绍过Istio第一主打功能---连接服务。凡是产生连接关系,就必定带来安全问题,人类社会如此,服务网格世界,亦是如此。今天,我们就来谈谈Istio第二主打功能---保护服务。那么,便引出3个问题:l  Istio凭什么保护服务?l  Istio具体如何保护服务?l  如何告诉Istio发挥保护能力?1      Istio凭什么保护服务?将单体应用程序分解为一个个服务,为大型软件系统的开发和维护带来了诸多好处,比如更好的灵活性、可伸缩性和可复用性。但这也带来了一些安全问题:l  为了抵御中间人攻击,需要对流量进行加密l  为了提供灵活的服务访问控制,需要 mTLS(双向的安全传输层协议)和细粒度的访问策略l  要审计谁在什么时候做了什么,需要审计工具Istio 尝试提供全面的安全解决方案来解决这3个问题。如上图所示,Istio 安全的三大目标是:l  默认安全(Security by default):应用程序代码和基础结构,无需更改。l  深度防御(Defense in depth):与现有安全系统集成,提供多层防御。l  零信任网络(Zero-trust network):在不受信任的网络上,构建安全解决方案。为了实现这3个目标,Istio 安全功能提供了4大守护系统:l  强大的身份(Identity)系统l  健壮的策略(Policy)系统l  认证,授权和审计(AAA:Authentication,Authorization,Accounting)系统,用于保护服务和数据l  透明的 TLS 加密(Encryption)系统。就保护对象而言,Istio 安全系统可以抵御来自内部或外部的威胁,这些威胁主要针对服务网格内的端点(Endpoints),通信(Communication),平台(Platform)和数据(Data)。2      Istio具体如何保护服务?在安全方面,Istio具备3个远大的目标,配备了4大守护系统,那么它到底是通过怎样的架构实现这个目标的呢,又通过什么样的安全基础设施,和kubernetes配合呢?2.1      Istio安全架构如上图,与Istio的4大守护系统相对应,Istio 中涉及安全的组件有:l  Pilot :将授权策略和安全命名信息分发给代理l  Proxy :实现客户端和服务端之间的安全通信l  Citadel :用于密钥和证书管理l  Mixer :管理授权和审计由此可见,Pilot不仅负责流量规则和策略的分发,还负责安全相关策略的下发,有点像皇上的贴身太监,负责宣读圣旨;Proxy有点像各州属的州官,负责奉天承运;Citadel有点像玉玺和虎符,负责鉴真去假;Mixer有点像三省六部,负责授权审计。2.2      两个安全基本概念2.2.1        Identity身份(Identity)是几乎所有安全基础架构的基本概念。在服务和服务的通信开始前,双方必须用其身份信息交换凭证,以达到相互认证的目的。在客户端,根据安全命名(secure naming)信息,检查服务端的标识,以查看它是否是该服务的授权运行程序;在服务端,服务端可以根据授权策略(authorization policies)信息,确定客户端可以访问哪些数据,审计其在什么时间访问了什么,拒绝未授权客户端的访问。在 Istio 身份模型中,Istio 使用一流的服务标识来确定服务的身份。这为表示人类用户,单个服务或一组服务提供了极大的灵活性和粒度。在没有此类身份的平台上,Istio 可以使用可以对服务实例进行分组的其他身份,例如服务名称。不同平台上的 Istio 服务标识:l  Kubernetes: Kubernetes 服务帐户l  GKE/GCE: 可以使用 GCP 服务帐户l  AWS: AWS IAM 用户/角色 帐户l  On-premises (non-Kubernetes): 用户帐户,自定义服务帐户,服务名称,istio 服务帐户或 GCP 服务帐户。做个类比,京东和天猫都有自己的一套非常成熟的服务账户系统,淘宝只需要复用天猫的账户系统即可,无需重新开发一套,这样我们就可以用天猫的账号,直接登录淘宝。而Istio也更倾向于复用业界一流的服务账户系统,如Kubernetes和AWS的,但也可以自定义服务账户,并按需复用Kubernetes的账户系统。2.2.2  PKI Istio PKI(Public Key Infrastructure)建立在 Istio Citadel 之上,可为每个工作负载提供安全且强大的工作负载标识。Istio 使用 X.509 证书来携带 SPIFFE 格式的身份信息。PKI 还可以大规模自动化地进行密钥和证书轮换。Istio 支持在 Kubernetes pod 和本地计算机上运行的服务。目前,Istio为每个方案使用不同的证书密钥配置机制,下面试举例Kubernetes方案的配置过程:1.         Citadel 监视 Kubernetes apiserver,为每个现有和新的服务帐户创建 SPIFFE 证书和密钥对。 Citadel 将证书和密钥对存储为 Kubernetes secrets。2.         创建 pod 时,Kubernetes 会根据其服务帐户通过 Kubernetes secret volume 将证书和密钥对挂载到 pod。3.         Citadel 监视每个证书的生命周期,并通过重写 Kubernetes secret 自动轮换证书。4.         Pilot 生成安全命名信息,该信息定义了哪些服务帐户可以运行某个服务。接着Pilot 将安全命名信息传递给 Envoy。3      如何告诉Istio发挥保护能力?如上一章节所言,Istio基于控制面组件,引入了一流的服务账户系统,结合强大的PKI,实现了对服务网格的安全守护。同时,Istio也开放了接口,让我们可以进行精细化的配置,全方位满足我们对服务的安全需求。服务安全,总是离不开两个具体过程:认证(Authentication)和鉴权(Authorization)。Istio通过Policy和MeshPolicy文件,实现对认证相关功能的定义;通过RbacConfig、ServiceRole和ServiceRoleBinding文件,实现对鉴权相关功能的启用和定义。让我们举个几个通俗的例子来区分认证和鉴权:进火车站需要**和火车票,身份证可以证明你就是你,这是认证;火车票可以证明你有权上那趟火车,这是授权。又例如,你要访问自己淘宝的购物车,需要先登录,这是认证。你要访问朋友的购物车,就需要他的允许,这是授权。再例如,有经验的朋友能发现浏览器经常会面对两个错误码:401和403。通常而言,401就是未登录的意思,需要认证;403就是禁止访问的意思,需要授权。3.1      认证Istio 提供两种类型的身份认证:l  传输身份认证,也称为服务到服务身份认证:对直连客户端进行验证。Istio 提供双向TLS作为传输身份认证的全栈解决方案。我们可以轻松启用此功能,而无需更改服务代码。这个解决方案:l  为每个服务提供强大的身份认定,以实现跨群集和跨云的互操作性。l  保护服务到服务通信和最终用户到服务通信。l  提供密钥管理系统,以自动执行密钥和证书生成,分发和轮换。l  来源身份认证,也称为终端用户身份认证:对来自终端用户或设备的原始客户端请求进行验证。Istio 通过 JSON Web Token(JWT)、Auth0、Firebase Auth、Google Auth 和自定义身份认证来简化开发者的工作,使之轻松实现请求级别的身份认证。在这两种情况下,Istio 都通过自定义 Kubernetes API 将身份认证策略存储在 Istio 配置存储(Istio config store)中。Pilot会在适当的时候进行同步,为每个Proxy更新其最新状态以及密钥。此外,Istio 支持在许可模式下进行身份认证,以帮助我们理解策略变更前后,服务的安全状态是如何变化的。3.1.1        认证架构我们可以使用身份认证策略,为 Istio 网格中接收请求的服务指定身份认证要求。我们使用 .yaml 文件来配置策略,策略将保存在 Istio 配置存储中。在任何策略变更后,Pilot 会将新策略转换为适当的配置,下发给Envoy,告知其如何执行所需的身份认证机制。Pilot 可以获取公钥并将其附加到 JWT 进行配置验证。或者,Pilot 提供 Istio 系统管理的密钥和证书的路径,并将它们安装到负载 Pod 中,以进行双向 TLS。本文多次提到双向TLS认证,让我们理解一下其在Istio里的实现。Istio 通过客户端和服务端各自配备的Envoy进行通信,也就是说,客户端和服务端的流量,是被各自的Envoy接管了的。对于客户端调用服务端,遵循的步骤是:1.         Istio 将出站流量从客户端重新路由到客户端的本地 Envoy。2.         客户端 Envoy 与服务端 Envoy 开始双向 TLS 握手。在握手期间,客户端 Envoy 还执行安全命名检查,以验证服务证书中提供的服务帐户是否有权运行目标服务。3.         客户端 Envoy 和服务端 Envoy 建立了一个双向的 TLS 连接,Istio 将流量从客户端 Envoy 转发到服务端 Envoy。4.         授权后,服务端 Envoy 通过本地 TCP 连接将流量转发到服务端的服务。3.1.2        认证策略配置和其他的 Istio 配置一样,可以用 .yaml 文件的形式来编写认证策略,然后使用 Istioctl 二进制工具进行部署。如下图的配置,通过配置Policy文件,对reviews服务进行了传输身份认证的配置,要求其必须使用双向TLS做认证。apiVersion: "authentication.Istio.io/v1alpha1"kind: "Policy"metadata:  name: "reviews"spec:  targets:  - name: reviews    peers:  - mtls: {}3.2      授权Istio 的授权功能,也称为基于角色的访问控制(RBAC),为 Istio 服务网格中的服务提供命名空间级别,服务级别和方法级别的访问控制。它的特点是:l  基于角色的语义,简单易用。l  包含服务到服务和终端用户到服务两种授权模式。l  通过自定义属性灵活定制授权策略,例如条件,角色和角色绑定。l  高性能,因为 Istio 授权功能是在 Envoy 里执行的。3.2.1        授权架构上图显示了基本的 Istio 授权架构。和认证的生效过程一样,运维人员使用.yaml文件指定 Istio 授权策略。部署后,Istio 将策略保存在Istio Config Store中。Pilot 会一直监视 Istio 授权策略的变更,如果发现任何更改,它将获取更新的授权策略,并将 Istio 授权策略分发给与服务实例位于同一 pod 内的 Envoy 代理。每个 Envoy 代理都运行一个授权引擎,该引擎在运行时授权请求。当请求到达代理时,授权引擎根据当前授权策略评估请求上下文,并返回授权结果ALLOW或DENY。3.2.2        授权策略配置我们可以使用 RbacConfig 启用授权策略,并使用ServiceRole和ServiceRoleBinding配置授权策略。RbacConfig是一个网格维度的单例,其固定名称值为default,也就是说我们只能在网格中配置一个RbacConfig实例。与其他 Istio 配置对象一样,RbacConfig被定义为Kubernetes CustomResourceDefinition (CRD)对象。在RbacConfig中,运算符可以指定mode值,它可以是:l  OFF:禁用 Istio 授权。l  ON:为网格中的所有服务启用了 Istio 授权。l  ON_WITH_INCLUSION:仅对包含字段中指定的服务和命名空间启用 Istio 授权。l  ON_WITH_EXCLUSION:除了排除字段中指定的服务和命名空间外,网格中的所有服务都启用 Istio 授权。在以下示例中,为default命名空间启用了 Istio 授权,。apiVersion: "rbac.Istio.io/v1alpha1"kind: RbacConfigmetadata:  name: default  namespace: Istio-systemspec:  mode: 'ON_WITH_INCLUSION'  inclusion:    namespaces: ["default"]针对服务和命名空间启用授权后,我们还需要配置具体的授权策略,这通过配置ServiceRole和ServiceRoleBinding实现。与其他 Istio 配置对象一样,它们同样被定义为CRD对象。ServiceRole定义了一组访问服务的权限。ServiceRoleBinding向特定对象授予 ServiceRole,例如用户,组或服务。ServiceRole 和 ServiceRoleBinding 组合规定了: 允许谁在哪些条件下做什么,具体而言:l  谁指的是 ServiceRoleBinding 中的 subject 部分。l  做什么指的是 ServiceRole 中的 rule 部分。l  哪些条件指的是我们可以在 ServiceRole 或 ServiceRoleBinding 中使用Istio Attributes指定的 condition 部分。让我们再举一个简单的例子,如下图,ServiceRole和 ServiceRoleBinding的配置规定:将所有用户(user=“*”)绑定为(products-viewer)角色,这个角色可以对products这个服务发起GET或HEAD请求,但是其限制条件是请求头必须包含version,且值为v1或v2。apiVersion: "rbac.Istio.io/v1alpha1"kind: ServiceRolemetadata:  name: products-viewer  namespace: defaultspec:  rules:  - services: ["products"]methods: ["GET", "HEAD"]    constraints:    - key: request.headers[version]      values: ["v1", "v2"]---apiVersion: "rbac.Istio.io/v1alpha1"kind: ServiceRoleBindingmetadata:  name: binding-products-allusers  namespace: defaultspec:  subjects:  - user: "*"  roleRef:    kind: ServiceRole    name: "products-viewer" 至此,我们做个简单的总结:单体应用程序拆分成成千上百个服务后,带来了安全问题,Istio尝试在由服务组成的服务网格里,加入了一套全栈解决方案。这套方案里,Istio默默处理了大部分安全基础设施,但也暴露了认证和授权两个功能让用户进行自定义配置。我们通过Policy、MeshPolicy以及RbacConfig、ServiceRole、ServiceRoleBinding就可以完成对认证和授权环节所有功能的配置,而不需要侵入地改动任何服务的代码。
  • [教程] OBS权限管理配置实践
    OBS权限管理配置实践参考1       背景介绍       华为云与Amazon S3的权限管理实现一致,对象存储是采用结合统一身份管理服务来做的访问权限控制。       具体来说就是在统一身份管理中创建用户组并对该用户组赋予特定资源的特定访问权限,然后创建用户将用户加入到所需对应资源和访问权限的用户组,该统一身份管理中资源的粒度是服务,不支持更细粒度的资源控制,如果要做到更细粒度的资源权限控制就需要靠桶策略来进行控制。在完成用户和用户组的配置后,在对象存储的桶权限管理中桶策略的高级设置,通过添加高级桶策略来完成指定资源特定访问权限配置。       这两天在华为云上摸索了一下通过查看资料和提工单搞了一下简单验证,详细成果在这里给大家分享一下。本文中首先通过控制台完成相关资源创建和策略配置,然后采用开源工具s3curl进行业务验证,工具下载路径:https://github.com/rtdp/s3curl。2       场景一:给子账户授权2.1       方案说明通常一个大企业下面可能会分设多个业务部门,多个业务部门之间的数据需要独立管理的场景下可以考虑使用不同子用户进行独立的资源和权限配置。A账户下创建两个子账户A1/A2,为两个子账户授予桶的上传对象权限,然后验证两个子账户的权限是否正确。2.2       配置操作2.2.1       使用统一身份认证服务控制台 创建用户组输入用户组名后点击确认进行创建(以创建“obstest”为例)2.2.2       修改创建的用户组中对象存储服务权限为Buckets Viewer1)在用户组中点击新创建用户组的修改按钮2)点击用户组权限的对象存储服务对应的修改按钮3)选中权限为“OBS Buckets Viewer”权限,赋予该用户组内用户具有列举该主账户所有桶的权限2.2.3       创建用户并将用户加入用户组中依次创建userA1、userA2后可以看到该用户组的权限及用户配置信息2.2.4       获取账户ID(租户ID)和子账户ID配置桶策略1)在账户-我的凭证中获取账号ID2)在统一身份管理用户-基本信息中获取子账户ID3)登陆对象存储控制台,使用账户A创建桶:obs-bucketpolicy,该桶内创建子目录abc,在桶策略-高级配置中添加桶策略。a.同时为userA1、userA2配置特定桶内特定资源上传权限说明:1、  桶策略中“被授权用户”字段: 被授权用户指本条桶策略作用的账户或用户。被授权用户可以选择,可以同时选择多个。2、 桶策略中“资源”字段:资源指桶或对象。您可以指定一个对象或对象集,比如fileA*,fileB*,当指定给对象集时,使用通配符“*”。如果不输入,则表示指定资源为桶,且在动作处只能选择与桶相关的。多个资源使用英文逗号分隔。3、    桶策略中的“动作”字段:指定本条桶策略可以执行的操作。例如:上传、下载、删除等。4、    桶策略中的“条件”字段:指定本条桶策略可以执行的操作。通过设置该字段可以实现指定IP、指定域名等访问该策略所限定的资源。2.3       权限验证使用子账号的AK/SK进行业务验证2.3.1       获取主账号和子用户的AK/SK1.    主账号AK/SK获取在主账号-我的凭证-管理访问密钥中,通过新增访问密钥来创建主账号的密钥。2.    子用户AK/SK获取在统一身份认证服务控制台-用户列表中,通过对应用户的“设置凭证”按钮进入密钥创建控制台。在设置凭证页面通过“管理访问密钥”-“新增访问密钥”来创建子用户的访问密钥。注意:创建子用户密钥时提示需要输入“登陆密码”,此次需要输入的密码为主账号的登陆密码,不是子用户密码。2.3.2       开源工具s3curl配置用户的AK/SK并在s3curl中添加obs的endpoint1)          vim 编辑s3curl工具目录下的.s3curl文件,添加2个子用户的AK/SK2)          vim编辑s3curl工具目录下的s3curl.pl脚本,添加obs的endpoint2.3.3       使用userA1、userA2上传对象到桶内的abc/目录下上传成功,上传到其他目录失败,下载资源也失败1)          userA1上传对象到abc/目录下,上传成功。2)          userA2上传对象到abc/目录下,上传成功。登陆控制台可以看到对应路径下有上传成功的文件。3)          userA1/A2上传对象到非abc目录下,上传失败。a.      使用userA1上传对象到桶根目录下,上传失败,提示无权限访问。b.      使用userA2上传对象到def目录下,上传失败,提示无权限访问。4)          userA1/A2下载桶内对象,下载失败,提示无权限访问。a.使用userA1下载桶根目录下的资源,下载失败。b.使用userA2下载赋予其上传权限路径下资源,下载失败。3       场景二:子账户桶资源隔离3.1       方案说明按照前一个场景的配置虽然可以实现不同子账号只能访问配置了特定访问策略的资源,但是每个子用户都可以看到该租户账号下面的所有桶资源无法做到每个子用户只能看到自己有权限访问的桶。通过使用OBSBrowser挂载外部桶的方式可以实现子用户的桶资源隔离。A账户下创建子账户userB,为子账户授予特定桶内资源的完全访问权限,然后使用OBSBrowser挂载外部桶方式验证子账户的权限是否正确。3.2       配置操作3.2.1       直接创建子用户,不添加到任何用户组或者添加到不具有OBS访问权限的用户组中使用A账户登录华为云,创建子用户userB,此用户不设置OBS访问权限。创建userB后可以看到该用户未配置相关用户组。3.2.2       获取账户ID(租户ID)和子账户ID配置桶策略1)在账户-我的凭证中获取账号ID。2)在统一身份管理用户-基本信息中获取子账户ID。3)登陆对象存储控制台,找到需要配置子账户访问的桶,在桶策略-高级配置中添加桶策略。a.为userB配置特定桶内特定资源完全访问权限。b.为userB配置特定桶的列举权限。配置结果重复该步骤,为另外一个桶也配置相同的用户策略。3.3       权限验证使用子账号的AK/SK进行业务验证3.3.1       获取主账号和子用户的AK/SK1.    主账号AK/SK获取在主账号-我的凭证-管理访问密钥中,通过新增访问密钥来创建主账号的密钥。2.    子用户AK/SK获取在统一身份认证服务控制台-用户列表中,通过对应用户的“设置凭证”按钮进入密钥创建控制台。在设置凭证页面通过管理访问密钥-新增访问密钥来创建子用户的访问密钥。注意:创建子用户密钥时提示需要输入“登陆密码”,此次需要输入的密码为主账号的登陆密码,不是子用户密码。3.3.2       使用OBSBrowser配置子账户的AK/SK通过挂载外部桶方式挂载配置有访问权限的桶1)          配置子账户AK/SK2)          挂载两个外部桶在直接使用添加的子账户进行登录时会遇到如下报错信息,请点击确认后忽略该报错。然后点击“添加桶”按钮,并在添加桶的配置窗体中选择“添加外部桶”并输入正确桶名点击确定,即可完成外部桶挂载。重复操作将两个桶都挂载上3.3.3       对挂载的桶进行上传下载删除对象均成功4       景三:给不同租户(账户)授权4.1       方案说明A/B/C三个账户,A账户为桶owner,A账户给B账户赋予上传对象权限,给C账户赋予下载对象权限。4.2       配置操作4.2.1       获取租户的账户ID4.2.2       使用A账户登录console,为特定桶配置桶策略举例:为账户配置obs-ydy-des桶上传对象的权限为B账户配置写入权限,为C账户配置读取桶内资源的权限。4.3       权限验证使三个账户的AK/SK使用S3Curl工具进行验证业务4.3.1       配置工具A/B/C三个账户的AK/SK(A账户:usertzf  B账户:userydy  C账户:userhqh)4.3.2       使用A账户上传对象成功使用A账户,上传成功Console控制台可以看到上传的文件4.3.3       使用B账户上传对象成功,上传是指定桶owner具有该对象完全控制权限 使用B账户,上传成功Console控制台客户查看到上传成功的文件4.3.4       使用B账户只能下载自己上传的对象,无法下载A账户上传的对象1)          B账号下载自己上传的对象,下载成功2)          B账号下载A账户上传的对象,下载失败4.3.5       使用C账户下载对象成功1)          C账户下载A账户上传的对象,下载成功2)          C账户下载B账户上传的对象,下载失败失败原因:桶策略由桶Owner设定,只会对桶Owner上传的对象生效,无法对其他用户上传的对象生效。4.3.6       使用C账户无法上传对象使用C账户上传对象时提示无权限,上传失败5       场景四:委托服务进行OBS访问5.1       方案说明       在需要使用其他服务来对OBS中的数据进行访问时,可以通过创建委托的方式来实现。委托创建后被委托的服务可以用创建委托的租户身份来对OBS资源进行访问。本方案例中以委托ECS通过AK/SK+STStoken访问OBS为例进行说明。5.2       配置操作5.2.1      登陆统一身份认证服务控制台,创建委托选择委托类型为“云服务”,在云服务中选择“ECS BMS”,在权限选择中配置“全局服务-对象存储服务的策略为Tenant Administrator”5.2.2       创建ECS时在高级中配置使用创建的委托5.3       55.3    权限验证5.3.1       登陆ECS获取临时AK/SK和STSToken执行命令: curl http://169.254.169.254/openstack/latest/securitykey 获取临时AK/SK和STSToken,其中169.254.169.254是ECS服务委托时的IP,如果其他云服务创建委托,需要使用各自云服务的IP地址。具体IP地址需要从云服务接口人获取。5.3.2       使用s3curl验证访问权限添加临时AK/SK用户执行命令:./s3curl.pl --id=linshi -- -H "x-amz-security-token:***(token的内容)*** " http://obs-wjl2.obs.cn-north-1.myhwclouds.com/123.txt -v注意:通过委托形式访问OBS不支持跨Region的访问,原因是IAM为非全局服务,每个Region的IAM独立提供鉴权服务。但是创建的委托配置全局共享。如果ECS跨Region采用临时AK/SK+STStoken访问访问OBS会提示找不到AK/SK记录。6      场景五:委托租户采用临时AK/SK+Ststoken进行OBS访问6.1      方案说明    假设非华为云服务的账户为ThomasYang,使用非华为云服务的租户为shan0304。在需要使用应用市场上的非华为云自身服务来对OBS中的数据进行访问时,可以通过shan0304创建委托提供该服务的第三方应用的租户ThomasYang的方式来实现。委托创建后被委托的租户可以用创建委托的租户身份来对OBS资源进行访问。本方案例中以委托某租户通过AK/SK+STStoken访问OBS为例进行说明。6.2      配置操作租户shan0304登陆统一身份认证服务控制台,创建租户委托。选择委托类型为“普通账号”,委托账号中输入被委托租户的账号名称,在权限选择中赋予对象存储Tenant_Administrator权限。                                               6.3      权限验证6.3.1        获取被委托租户具有te_agency权限的token以postman为例进行说明,采用post方法调用IAM的v3/auth/tokens接口,在header中配置Content-Type为application/json,然后在Body中输入如下信息(参考截图):执行如下命令:https://iam.myhuaweicloud.com/v3/auth/tokens在响应消息的Headers中获取X-Subject-Token字段,该字段即为所需的token信息。可以在响应消息的body中查看roles字段,确认该token具有te_agency权限。6.3.2        使用具有te_agency权限的token获取临时AK/SK+Ststoken以postman为例进行说明,采用post方法调用IAM的v3.0/OS-CREDENTIAL/securitytokens接口,在Header中输入Content-Type为application/json,以及X-Auth-Token字段添加前一步中获取到的token信息。并在Body中输入如下信息(参考截图):在响应消息的Body中获取所需的临时AK/SK和Ststoken,参考下图6.3.3        使用s3curl验证临时AK/SK+Ststoken的权限添加临时AK/SK用户执行命令:./s3curl.pl –id=linshi -- -H “x-amz-security-token:****” http://dfv-video.obs.cn-north-1.myhwclouds.com -v其中dfv-video是tangzifu账户中的桶。7      场景六:配置桶策略限定权限的子用户临时AK/SK+Ststoken进行OBS访问7.1      方案说明当前IAM无法提供权限伸缩功能,类似于阿里云的RAM中“角色”功能(具有一定权限的用户)。华为云可以提供子用户+桶策略的方式来达到相同效果。首先在统一身份管理中创建一个子用户,该子用户不具备对象存储的任何访问权限,然后给指定桶配置该子用户的桶策略限定该子用户具有某个桶特定资源的特定操作权限。以子用户的用户名密码获取到子用户的token,再获取子用户的临时AK/SK+STStoken,以临时AK/SK+Ststoken的方式访问资源。7.2      配置操作7.2.1        直接创建子用户,不添加到任何用户组或者添加到不具有OBS访问权限的用户组中7.2.2        给指定桶配置该子用户的桶策略以自定义模式给子用户7.3      权限验证7.3.1        获取子用户的token以postman为例进行说明,采用post方法调用IAM的v3/auth/tokens接口,在header中配置Content-Type为application/json,然后在Body中输入如下信息(参考截图):在响应消息的Headers中获取X-Subject-Token字段,该字段即为所需的token信息。7.3.2        使用子用户的token获取临时AK/SK+Ststoken以postman为例进行说明,采用post方法调用IAM的v3.0/OS-CREDENTIAL/securitytokens接口,在Header中输入Content-Type为application/json,以及X-Auth-Token字段添加前一步中获取到的token信息。并在Body中输入如下信息(参考截图):在响应消息的Body中获取所需的临时AK/SK和Ststoken,参考下图7.3.3        使用s3curl验证临时AK/SK+Ststoken的权限添加临时AK/SK用户执行命令:./s3curl.pl –id=zhihu –put=./README -- -H “x-amz-security-token:****” http://obs-mei1.obs.cn-north-1.myhwclous.com/zhihu/123.txt -v
  • 关于统一身份认证,获取认证,是否有python的sdk
    我用api调用aksk进行认证的话有python相关的sdk吗?
  • [热门活动] 锦佰安:AI行为识别开启网络身份认证新时代
    16009  6月9日,首届全国信息安全企业家高峰论坛在兰州顺利召开。本次论坛由兰州市委网信办、兰州市大数据社会服务管理局、中国信息产业商会信息安全产业分会主办,甘肃省网络空间安全协会、甘肃省网络文化协会、甘肃海丰信息科技有限公司、甘肃安信信息安全技术有限公司承办。论坛汇聚了数百位安全领域的重量级嘉宾,就网络安全创新发展、推动各地信息安全服务和管理水平快速提高等话题展开讨论。16849 锦佰安科技CEO冯继强发表主题演讲  锦佰安科技创始人兼CEO冯继强受邀出席论坛,并发表了题为《人工智能在网络身份认证领域的应用与创新》的主题演讲。演讲中指出账号登录的本质是为了区别人和机器、还有区别人和人,也就是人机识别和身份认证。   传统认证方式存在身份冒用风险   传统的身份认证方式存在很多问题,比如静态密码、图片验证码、短信验证码很容易破解,U盾等硬件设备则由于成本高、用户体验差等问题制约了其应用场景,近些年开始流行的指纹、声纹、人脸识别,必须在支持生物识别的设备上才能运行,而且生物特征获取成本低、容易伪造,有着较大的安全隐患。   因此,以上的验证方式显然无法进行严格的人机识别和身份识别,在账号登录时也就存在用户身份被冒用的风险。 16851    行为识别精准识别用户身份   冯继强强调,随着人工智能时代的来临,机器学习已被越来越多地运用于网络攻防中,AI对抗AI的情况逐渐增多,这也对网络身份认证技术的安全性和便捷性提出了更高要求。由于每个人的操作行为特征都是独特且不可复制的,所以,用机器学习手段为这种行为特征建立识别模型就能精准识别用户身份。基于这一原理,锦佰安科技率先推出了基于AI的行为识别身份认证产品——SecID AI行为识别身份认证系统。 16850   SecID通过卷积神经网络、循环神经网络、贝叶斯神经网络等机器学习模型,在用户无感知状态下利用传感器多维度、多规则地对用户日常登陆账户的操作行为和使用习惯持续深度学习。SecID为每个用户单独建立行为特征识别模型,在用户登陆账户时与本人进行相似度匹配,即可对用户身份进行确认,确保只有用户本人可以进行业务操作,即使密码泄漏也能保证账号安全。   通过以上核心技术,SecID不仅能有效过滤虚假机器操作,而且还能精确识别用户本人,从而在安全角度完美解决了人机识别和身份识别问题。除此之外,用户输入密码的一步操作等于同时完成了密码验证和行为验证这两步验证过程,也就极大地提升了网络身份认证的便捷性。   最后,冯继强提到,SecID可以广泛应用于所有对身份认证有需求的场景,比如注册、登录、转账、支付等敏感性操作中的身份鉴别,或大额交易时的身份识别与授权。   目前,锦佰安科技已经与政府、金融、云服务、区块链、医疗等领域的众多机构和知名企业开展深入合作。今后,锦佰安科技还会继续专注AI安全身份认证领域,以开创无感知身份识别新**为使命,为更多行业的用户提供更优质的身份认证服务。
  • [云运维] 使用华为云账户创建IAM子账号后需要添加什么权限才能正常使用AOM?
    本帖最后由 prowangsi 于 2018-5-23 09:19 编辑【问题】客户使用华为云账号创建了IAM子账号,使用子账号登录后访问应用运维管理报"权限不足,当前服务不可用"。 15801 【解决方法】 使用具有管理员权限的账号在统一身份认证服务处创建用户组,并绑定APM admin角色,如图,然后加子账号绑定该用户组即可。 15802
  • [技术干货] MongoDB身份认证
    本帖最后由 昵称 于 2018-5-14 00:02 编辑[postbg]bg3.png[/postbg] 身份认证是验证客户端身份的过程。当启用访问控制 (即授权) 时, MongoDB 要求所有客户端对自己进行身份认证, 以确定它们的访问权限。尽管身份认证和授权紧密相连, 但身份认证与授权不同。身份认证验证用户的身份;授权决定验证用户对资源和操作的访问权限。 身份认证方法 要作为用户进行身份认证, 必须提供与该用户关联的用户名、密码和身份认证数据库(一般为admin数据库) 。 使用mongo shell 进行身份认证, 执行以下操作之一: • 使用mongo命令行身份认证选项 (--username, --password, and--authenticationDatabase) 连接到 mongod 或 mongos 实例 [code]mongo –host {ip}:{port} –username {user} –password {pwd} –authenticationDatabase {auth_db}[/code] • 首先连接到 mongod 或 mongos 实例,然后在认证数据库下运行认证 命令 [code]mongo –host {ip}:{port} use {auth_db} db.auth(“{user}”, “{pwd}”)[/code] 重要 在一次连接请求中,将多次身份认证为不同的用户时,不会去除以前经过身份认证的用户的凭据。这可能导致连接的权限超出了用户的预期, 并导致逻辑会话中的操作引发错误。 身份认证机制 MongoDB 支持多种身份认证机制, 客户端可以使用这些机制验证其身份。这些机制允许 MongoDB 集成到您现有的身份认证系统中。 MongoDB 支持多种身份认证机制: • SCRAM(默认) • MongoDBChallenge and Response (MONGODB-CR) (已弃用 MongoDB 3.6) • x.509 证书身份认证。 除了支持上述机制外, MongoDB 企业还支持以下机制: • LDAP代理身份认证 • Kerberos身份认证。 内部身份认证 除了客户端认证外, MongoDB 还可以要求副本集或分片集群的成员在各自的副本集或分片集群上验证其成员身份。 可以对副本集和分片集群的成员进行身份认证。对于成员的内部身份认证, MongoDB 可以使用 keyfiles 或 x. 509 证书。Keyfiles Keyfiles 使用 SCRAM challenge andresponse身份认证机制. keyfiles 的内容用作为成员的共享密钥。密钥的长度必须介于6到1024个字符之间, 并且只能包含 base64 集中的字符。MongoDB 去除带空格字符 (例如 x0d, x09, and x20), 为了跨平台的方便。因此,下列操作产生相同的键:[code]echo -e "my secret key" > key1 echo -e "my secret key\n" > key2 echo -e "my secret key" > key3 echo -e "my\r\nsecret\r\nkey\r\n" > key4 [/code] 在 UNIX 系统上, 密钥文件不能具有group或world权限。在Windows 系统上, 不检查密钥文件权限。 密钥文件的内容在所有连接到彼此的 mongod 和 mongos 实例上必须相同. 必须将密钥文件存储在副本集或分片集群的每个成员上。要指定密钥文件, 在配置文件中使用 security.keyFile设置或使用命令行参数选项 --keyFile x. 509 副本集或分片集群的成员可以使用 x. 509 证书进行内部身份认证, 而不是使用 keyfiles。MongoDB支持用于安全 TLS/SSL 连接的 x. 509 证书身份认证。 成员证书要求: 用于验证分片集群或副本集的成员身份的成员证书必须具有以下属性: [*]单个CertificateAuthority (CA) 必须为分片集群或副本集的成员颁发所有的 x. 509 证书。 [*]在成员证书的中找到的Distinguished Name (DN)必须为以下属性的至少一个指定非空值: Organization(O), the Organizational Unit (OU) 或theDomain Component (DC) [*]Organization属性(O)、Organizational Unit属性 (OU) 和DomainComponent (DC)必须与其他集群成员的证书匹配。要匹配, 证书必须与这些属性的所有规范属性 (甚至这些属性的非规范属性) 匹配。属性的顺序无关紧要。 在下面的示例中, 两者包含匹配的规范属性以及非规范属性。[code]CN=host1,OU=Dept1,O=MongoDB,ST=NY,C=US C=US, ST=CA, O=MongoDB, OU=Dept1, CN=host2[/code] 但是, 下面两个项包含属性的不匹配, 因为其中包含两个规范属性, 另一个则只有一个规范属性。[code]CN=host1,OU=Dept1,OU=Sales,O=MongoDB CN=host2,OU=Dept1,O=MongoDB[/code] CommonName (CN)或Subject Alternative Name (SAN) 必须与集群的其他成员使用的服务器的主机名相匹配。例如, 集群的证书可以具有以下subject:[code]subject= CN=,OU=Dept1,O=MongoDB,ST=NY,C=US subject= CN=,OU=Dept1,O=MongoDB,ST=NY,C=US subject= CN=,OU=Dept1,O=MongoDB,ST=NY,C=US [/code] 如果证书包含Extended Key Usage (EKU)设置, 则该值必须包括clientAuth (“TLS Web ClientAuthentication”)。 可以不使用 Extended Key Usage (EKU) 证书的配置[code]extendedKeyUsage = clientAuth[/code] MongoDB 配置 若要为内部身份认证指定 x. 509, 除了 TLS/SSL 配置外, 对于副本集或分片集群的每个成员, 包括配置:如果使用配置文件,须配置 security.clusterAuthMode 和 net.ssl.clusterFile如果使用命令行选项 --clusterAuthMode --sslClusterFile 成员证书和PEMKeyFile要为客户端证书身份认证配置 MongoDB, mongod 和 mongos 需要指定PEMKeyFile 以向客户端证明其身份, 方法是通过配置文件中的 net.ssl.PEMKeyFile参数或命令行选项--sslPEMKeyFile如果未为内部成员身份认证指定 clusterFile 证书, MongoDB 将尝试使用PEMKeyFile证书进行成员身份认证。为了使用PEMKeyFile证书进行内部身份认证以及客户端身份认证,必须:忽略extendedKeyUsage配置指定extendedKeyUsage配置。包括clientAuth 和 serverAuth[s][/s] 分片集群的身份认证 在分片集群中, 客户端通常直接连接mongos 实例进行身份认证。但是, 某些维护操作可能需要直接对特定的shard进行身份认证。
  • [云早报] 【10点见】AI荣登《自然》杂志:基于DNA的AI可诊断近100种脑癌(北京时间)3月20日,星期二
    本帖最后由 Haru_lu 于 2018-3-20 10:13 编辑12840 管理与部署云早报,(北京时间)3月20日,星期二 【云头条】 AI荣登《自然》杂志:基于DNA的AI可诊断近100种脑癌 近日,《自然》杂志再出人工智能重磅成果。来自美国、德国、意大利等100多个实验室的近150位科学家通力合作,联合在顶级期刊《自然》发表了这篇文章,他们开发了一个超级AI系统,该系统基于肿瘤组织DNA的甲基化数据,可以准确区分近100种不同的中枢神经系统肿瘤。更厉害的是,该AI系统还能自学成才,发现一些临床指南里面没有的新分类。 【华为云新闻】 大会倒计时 | 华为云生态伙伴分论坛议程抢先看! 生态的“黑土地”,是华为云生态发展的方向。2018年,华为云合作伙伴政策2.0正式发布,针对不同类型的合作伙伴,华为云提供各类匹配其发展的培训支持、技术支持、营销支持、销售支持。论坛将深度解读2018年的合作伙伴策略,阐释华为云生态解决方案,共享优秀伙伴的市场拓展案例与合作经验,共同探讨并开启共赢合作未来。(查看原文) 【互联网新闻】 1.新世相回应课程被微信封禁:接受处罚并立即进行了整改12847早间“新世相营销课”课程刷屏。由于该课程采用发展“下线”的模式,微信表示严厉打击多级分销等违规行为,该课程微信二维码链接刷屏5小时后,被微信封闭。新世相方面回应称,注意到微信对多级分销进行定义,并禁止此类行为,他们接受处罚并立即进行了整改,此前参与活动的用户仍然可以提现。已经付费的用户,会全力做好服务。 网友评论:diss新世相是朋友圈的政治正确?变脸最快的跟买课的不是一群人? 2.三六零回应“股东质押借款600 亿”:不涉及任何新增贷款近日,三六零对此前“360 股东质押借款600 亿”报道作出回应,本次质押是控股股东对上市前既有的三六零私有化贷款相关协议的继续履行,并不涉及任何新增贷款,控股股东也不会因为此次质押获得任何额外的贷款或现金。 3.雷军辞多职或保小米上市 市盈率高苹果数倍遭质疑 近日,有媒体曝光了一份所谓的小米Pre-IPO融资推介材料,清晰展现了小米的收入、利润、用户、估值和市值数据。材料显示,小米2015年还是亏损9.8亿元,2016年盈利9.13亿元,2017年预计可达75.82亿元,利润率6.5%,2019年有望增至188.31亿元。苹果目前市值为9131.7亿美元,市盈率为18.34倍。若按照这样的市盈率计算,目前拥有10亿美元利润的小米估值应在183.4亿美元左右,远低于该公司目前在私募市场的估值。 网友评论:不得不服小米的营销模式~ 4.Facebook聘请公司全面审计盗窃数据的剑桥分析公司12848北京时间3月20日凌晨消息,针对被盗窃5000万用户信息用于设计软件,以预测并影响选民投票一事,Facebook周一称其已聘用一家公司,对保守派研究公司Cambridge Analytica及一名告密者进行“全面审计”。Cambridge Analytica则已否认其曾违反Facebook的服务条款。本周一,Facebook创始人兼首席执行官马克·扎克伯格,因Facebook股价下跌导致身价缩水了超过60亿美元。 网友评论:这次是真摊上事儿~ 5.阅文公布2017年财报:营收40.95亿元 净利大涨14倍 昨日,阅文公布2017年财报。财报显示,阅文全年收入40.95亿元,同比增长60.2%;全年净利润5.561亿元人民币,同比增长1416%。阅文表示,旗下两大主营业务板块增长强劲,2017年在线阅读收入同比增长73.3%至人民币34.206亿元(5.235亿美元);版权运营业务收入同比增长48.0%至人民币3.662亿元(5600万美元)。 网友评论:这张成绩单合格了吗? 6.蚂蚁金服否认支付宝日本版受阻:仅为当地中国游客提供移动支付据日经中文网报道,由于日本政府和银行担忧数据安全,阿里巴巴旗下蚂蚁金服计划于今年春季推出的日本版支付宝已被推迟。随后,支付宝回应称,蚂蚁金服日本并未公布过“向日本人提供智能手机结算服务一事”。目前,仍仅向访日中国游客提供入境消费的结算服务。网友评论:推迟是肯定的,原因就不得而知了~ 7.声纹认证技术助力我国网络身份认证建设 近日,我国首个基于声纹识别技术的互联网身份认证云项目落户贵州,将为更多人提供网络身份认证服务。声纹识别是根据语音中所蕴含的说话人的个性特征去识别该段语音所含说话人身份的过程。与其他生物特征识别相比,声纹识别具有不会遗失和忘记、不需要记忆、使用方便等特点。这一项目由贵州贵安新区、清华大学信息技术研究院、北京得意音通技术有限责任公司共同打造,旨在破解互联网身份认证难题。 网友评论:让《声临其境》的嘉宾们先来测试测试~ 8.抖音上线“防沉迷”, 长时间刷视频会被锁定12846今天抖音宣布升级品牌,发布全新slogan—“记录美好生活”,还上线了风险提示功能、时间管理系统等多个功能,帮助用户进行自我管理。抖音产品负责人王晓蔚表示,下个版本,抖音就将上线两个与社会责任相关的功能,分别是风险提示系统和时间管理系统。 网友评论:世界zz千千万,抖音快手各一半。 9.霍金去世前10天提交最后科学论文 为发现平行宇宙奠定理论基础 斯蒂芬-霍金(Stephen Hawking)在去世前10天,提交了他的最后一份科学论文《从永久膨胀中平稳退出》,为发现平行宇宙奠定了理论基础。这篇论文是他参与合著的一篇数学论文,旨在寻求“多元宇宙”理论的证据。多元宇宙理论假定存在许多宇宙,而不仅仅是我们所在的这个宇宙。据《星期日泰晤士报》报道,这篇论文的内容列出了进行深空探测所需的数学知识,以收集可能证明其他宇宙存在的证据。 网友评论:今日话题,你们怎么看? 10.刹不住的奔驰,被锁死的比亚迪12849近日有两起汽车厂商后台控制汽车的事件引起人们的关注,3月14日晚在河南通往陕西的连霍高速上,一辆奔驰C级轿车在开启定速巡航后,车辆失控,无法减速和停车,只能以120公里/时的速度继续飞驰,最后奔驰通过后台操作恢复正常。而在3月15日,第七届中国问题车展上,有50辆准备开到**现场的比亚迪却被远程遥控锁定,只有几辆车开到了现场。 网友评论:这次比亚迪秒杀奔驰~ 【今日互动】霍金去世前10天提交最后科学论文,为发现平行宇宙奠定理论基础,你怎么看? 【本周早报】 【10点见】因资金问题 PaaS 云平台“野狗”将关闭 (北京时间)3月19日,星期一 【更多内容,欢迎访问】http://forum.huaweicloud.com/for ... r=typeid&typeid=266 (请尊重劳动成果,转载请标明来源!)
  • 访问DMS服务提示IAM连接超时?
    问题描述访问DMS服务的API报错,提示IAM连接超时,显示如下:Get quota fail: 401{"message": "Connect IAM Timeout", "request_id": "5ACB6B21-DAF6-47C8-B7A4-45A7BDC57FC6"} 可能原因在Web Console删除AK/SK,导致AK/SK无效。 处理方法 [*]登录管理控制台。 [*]单击用户名,在下拉列表中单击“我的认证”。 [*]单击“管理访问密钥”。 [*]单击“新增访问密钥”,进入“新增访问密钥”页面。 [*]输入登录密码和短信验证码,单击“确定”,下载密钥,请妥善保管。 [*]用新的AK/SK访问DMS服务。
总条数:124 到第
上滑加载中