首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >系统设计算法 k8s架构 jwt详解 api安全设计

系统设计算法 k8s架构 jwt详解 api安全设计

作者头像
BUG弄潮儿
发布2025-02-25 09:23:53
发布2025-02-25 09:23:53
29600
代码可运行
举报
文章被收录于专栏:JAVA乐园JAVA乐园
运行总次数:0
代码可运行

系统设计面试的 12 种算法

  • Bloom Filter:在执行磁盘作之前,检查请求的项目是否在缓存中。
  • Geohash:用于构建基于位置的服务。
  • HyperLogLog:计算用户在搜索中执行的唯一查询。
  • 一致性哈希:用于在集群节点之间高效分配数据。
  • Merkle Tree:用于检测跨多个节点的数据副本之间的不一致。
  • Raft 算法:用于实现日志复制的共识。
  • Lossy Count:网络流量分析、Web 分析和识别重磅攻击者。
  • QuadTree:用于构建基于位置的服务。
  • Operational Transformation:用于支持协作编辑系统。
  • Leaky Bucket:用于速率限制
  • Rsync:在两个不同的系统之间同步文件和目录。
  • 光线投射:用于地理空间分析、视频游戏中的碰撞检测和计算机图形学。

Kubernetes 的工作原理

Kubernetes (K8S) 是一个开源容器编排平台,最初由 Google 开发,现在由云原生计算基金会 (CNCF) 维护。 以下是开发人员与 Kubernetes 的交互方式:

  • 开发人员创建描述应用程序的清单文件。
  • Kubernetes 获取这些清单文件,对其进行验证,并在其 Worker 节点集群中部署应用程序。
  • Kubernetes 管理应用程序的整个生命周期。

Kubernetes 由两个主要组件组成: 控制平面:它就像 Kubernetes 的大脑,由以下部分组成:

  • API 服务器:它接收来自用户或 CLI 的所有传入请求。
  • Scheduler:它根据资源可用性和约束决定在何处运行新 Pod。
  • Controller Manager:它确保集群的所需状态与实际状态匹配。
  • Etcd:Kubernetes 保存其所有数据的键值存储,包括应用程序的配置、集群状态和所需状态。

Worker 节点:它们是集群中的 worker。每个节点都有以下子组件:

  • Kubelet:每个节点上的主要工作程序。它与 API 服务器通信,获取指令,并确保容器按预期运行。
  • Kube-proxy:处理每个节点上的网络。
  • 容器运行时

API 安全的 12 大提示

  • 使用 HTTPS
  • 使用 OAuth2
  • 使用 WebAuthn
  • 使用分级 API 密钥
  • 授权
  • 速率限制
  • API 版本控制
  • 白名单
  • 检查 OWASP API 安全风险
  • 使用 API Gateway
  • 错误处理
  • 输入验证

无状态身份验证的密钥

JWT 或 JSON Web 令牌是一种开放标准,用于在两方之间安全地传输信息。它们广泛用于身份验证和授权。

JWT 由三个主要组件组成:

  • 标头 每个 JWT 都带有一个标头,用于指定用于对 JWT 进行签名的算法。它以 JSON 格式编写。
  • 有效负载 有效负载由声明和用户数据组成。有不同类型的声明,例如已注册、公共和私有声明。
  • 签名 签名是确保 JWT 安全的原因。它是通过获取编码的标头、编码的有效负载、密钥和算法并对其进行签名来创建的。

可以通过两种不同的方式对 JWT 进行签名:

  • 对称签名 它使用单个密钥对令牌进行签名和验证。签署 JWT 的服务器和验证 JWT 的系统之间必须共享相同的密钥。
  • 非对称签名 在这种情况下,使用私钥对令牌进行签名,使用公钥来验证令牌。私钥在服务器上是安全的,而公钥可以分发给需要验证令牌的任何人。

数字签名如何工作

数字签名是一种特定类型的电子签名,用于签署和保护以电子方式传输的文档。

数字签名类似于物理签名,因为它们对每个人来说都是唯一的。它们标识签名者的身份。

以下是 Alice 作为发件人和 John 作为收件人的数字签名的工作流程示例:

  • Alice 生成一个由私有密钥和相应的公钥组成的加密密钥对。私钥保持机密状态,只有签名者知道,而公钥可以公开共享。
  • 签名者 (Alice) 使用哈希函数从文档创建唯一的固定长度数字和字母字符串,称为哈希。此哈希值表示文档的内容。
  • Alice 使用其私钥加密消息的哈希值。此哈希值称为数字签名。
  • 数字签名将附加到原始文档,从而创建一个数字签名文档。它通过网络传输给接收者。
  • 收件人 (John) 从文档中提取数字签名和原始哈希值。
  • 收件人使用 Alice 的公钥解密数字签名。这将生成一个最初使用私有密钥加密的哈希值。
  • 收件人使用与签名者相同的哈希算法为收到的邮件计算新的哈希值。然后,他们将此重新计算的哈希值与从数字签名获取的解密哈希值进行比较。
  • 如果哈希值相等,则数字签名有效,并确定文档未被篡改或更改。
代码语言:javascript
代码运行次数:0
运行
复制
来源:
blog.bytebytego.com/p/ep149-jwt-101-key-to-stateless-authentication
blog.bytebytego.com/p/ep150-12-algorithms-for-system-design
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-02-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 BUG弄潮儿 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 系统设计面试的 12 种算法
  • Kubernetes 的工作原理
    • Kubernetes 由两个主要组件组成: 控制平面:它就像 Kubernetes 的大脑,由以下部分组成:
      • Worker 节点:它们是集群中的 worker。每个节点都有以下子组件:
  • API 安全的 12 大提示
  • 无状态身份验证的密钥
    • JWT 由三个主要组件组成:
    • 可以通过两种不同的方式对 JWT 进行签名:
  • 数字签名如何工作
    • 以下是 Alice 作为发件人和 John 作为收件人的数字签名的工作流程示例:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档