kubernetes rabc 的sa创建并限制多个namespace

本文介绍了如何在Kubernetes中创建一个Service Account (SA),并通过RBAC授权允许该账号访问多个特定的命名空间。通过设置,账号在不同命名空间拥有相应权限,详细步骤包括创建SA、绑定集群权限、获取和配置token,以及验证访问。
摘要由CSDN通过智能技术生成

在实际k8s的应用中可能会限制用户对namespace的访问,一个账号访问多个namespaces 情况,经过测试后设置如下,

创建一个账号,创建sa后系统会自动创建一个kubernetes.io/service-account-token类型的secret

kubectl create serviceaccount updateuser

绑定集群权限,(分别绑定在两个不通的namespaces,绑定哪个namesapce就有哪个namespace相应的权限)

kubectl create rolebinding updateuser --clusterrole=system:controller:deployment-controller --serviceaccount=default:updateuser --namespace=default
kubectl create rolebinding updateuser --clusterrole=system:controller:deployment-controller --serviceaccount=default:updateuser --namespace=kube-system

查看

[root@k8s-master01 rbac]# kubectl describe rolebinding updateuser
Name:         updateuser
Labels:       <none>
Annotations:  <none>
Role:
  Kind:  ClusterRole
  Name:  system:controller:deployment-controller
Subjects:
  Kind            Name        Namespace
  ----       
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
在Django中开发一个RABC(Role-Based Access Control)权限管理系统可以通过以下步骤实现: 1. 创建Django项目并设置数据库连接。 2. 定义用户角色和权限模型。 3. 创建用户认证系统。 4. 实现用户注册、登录和注销功能。 5. 创建角色管理功能,包括角色的增删改查。 6. 创建权限管理功能,包括权限的增删改查。 7. 实现用户角色分配功能,将角色分配给用户。 8. 实现权限角色分配功能,权限分配给角色。 9. 创建中间件来实现权限控制。 10. 创建自定义界面和功能来实现单表操作和复杂操作。 以下是一个简单的示例代码,演示了如何在Django中实现RABC权限管理系统: ```python # models.py from django.db import models from django.contrib.auth.models import AbstractUser class Role(models.Model): name = models.CharField(max_length=50) class Permission(models.Model): name = models.CharField(max_length=50) class User(AbstractUser): roles = models.ManyToManyField(Role) class RolePermission(models.Model): role = models.ForeignKey(Role, on_delete=models.CASCADE) permission = models.ForeignKey(Permission, on_delete=models.CASCADE) # views.py from django.shortcuts import render from django.contrib.auth.decorators import login_required from .models import Role, Permission @login_required def role_list(request): roles = Role.objects.all() return render(request, 'role_list.html', {'roles': roles}) @login_required def permission_list(request): permissions = Permission.objects.all() return render(request, 'permission_list.html', {'permissions': permissions}) # urls.py from django.urls import path from . import views urlpatterns = [ path('roles/', views.role_list, name='role_list'), path('permissions/', views.permission_list, name='permission_list'), ] # middleware.py from django.shortcuts import redirect class RBACMiddleware: def __init__(self, get_response): self.get_response = get_response def __call__(self, request): if not request.user.is_authenticated: return redirect('login') if not self.has_permission(request.user, request.path): return redirect('permission_denied') response = self.get_response(request) return response def has_permission(self, user, path): # 根据用户角色和权限判断是否有权限访问该路径 # 实现自己的权限控制逻辑 return True # settings.py MIDDLEWARE = [ ... 'yourapp.middleware.RBACMiddleware', ... ] ``` 请注意,以上代码只是一个简单的示例,实际开发中还需要根据具体需求进行更详细的设计和实现。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值