跳到主要内容

SkyWalking 认证授权

介绍

SkyWalking的认证授权功能允许您控制对SkyWalking UI和后端服务的访问权限,防止未授权的用户查看或修改监控数据。这对于生产环境尤为重要,确保敏感数据不会被泄露或篡改。

备注

认证(Authentication)是验证用户身份的过程,而授权(Authorization)是确定用户是否有权限执行特定操作。

基本概念

SkyWalking支持以下认证授权机制:

  1. Basic Authentication - 用户名和密码验证
  2. OAuth 2.0 - 通过第三方身份提供商进行认证
  3. Token-based Authentication - 使用API令牌进行验证

配置Basic Authentication

后端配置

在SkyWalking的application.yml文件中添加以下配置:

yaml
security:
user:
admin:
password: "your_secure_password" # 管理员密码
roles: ADMIN
viewer:
password: "readonly_password" # 只读用户密码
roles: USER

前端配置

在UI的webapp.yml中添加对应的认证配置:

yaml
auth:
basic:
enabled: true
username: "admin"
password: "your_secure_password"

OAuth 2.0集成示例

以下是如何配置SkyWalking与GitHub OAuth集成的示例:

yaml
security:
oauth2:
enabled: true
providers:
github:
clientId: "your_github_client_id"
clientSecret: "your_github_client_secret"
redirectUri: "http://your-skywalking-ui.com/oauth2/callback"
scopes: "user:email"

基于Token的认证

对于API访问,可以配置Token认证:

  1. 生成一个随机Token
  2. 在后端配置文件中添加:
yaml
security:
token:
enabled: true
tokens:
- "your_random_token_here"

然后在API请求中添加Header:

Authorization: Bearer your_random_token_here

角色和权限

SkyWalking支持基本的角色权限控制:

实际应用场景

案例:多团队环境下的访问控制

假设您有开发团队和运维团队:

  • 开发团队需要查看所有服务的指标
  • 运维团队需要管理报警配置

配置示例:

yaml
security:
user:
dev:
password: "dev_pass"
roles: USER
ops:
password: "ops_pass"
roles: ADMIN

常见问题解决

警告

如果认证配置后无法登录,请检查:

  1. 密码是否正确加密(如果使用了加密)
  2. 角色名称是否正确(区分大小写)
  3. 配置文件位置是否正确

总结

SkyWalking的认证授权功能提供了多种方式来保护您的监控数据:

  • Basic Auth适合简单场景
  • OAuth适合企业级集成
  • Token Auth适合自动化脚本和API访问

延伸学习

  1. 尝试配置SkyWalking与您的LDAP/AD集成
  2. 实践设置不同角色的权限边界
  3. 探索JWT令牌与SkyWalking的集成
提示

生产环境中,建议定期轮换密码和令牌,并启用HTTPS加密所有通信。