如何在k8s中查看与特定服务帐户关联的权限/角色?

时间:2019-02-09 01:09:54

标签: kubernetes rbac

我尝试使用kubectl get sa default命令,但仅看到一些非常基本的值。在k8s中查看与特定服务帐户相关联的权限/角色的命令是什么?

4 个答案:

答案 0 :(得分:2)

以下命令可能会有所帮助。它基本上获得RoleBindings和ClusterRoleBindings,其中.subjects [0]是ServiceAccount的名称。

$ kubectl get rolebinding,clusterrolebinding --all-namespaces -o jsonpath='{range .items[?(@.subjects[0].name=="SERVICE_ACCOUNT_NAME")]}[{.roleRef.kind},{.roleRef.name}]{end}'

注意:它不会在主题字段中列出包含多个对象的RoleBindings / ClusterRoleBindings

例如,如果将weave-net部署为网络插件,则可以获取weave-net ServiceAccount使用的Role和ClusterRole:

$ kubectl get rolebinding,clusterrolebinding --all-namespaces -o jsonpath='{range .items[?(@.subjects[0].name=="weave-net")]}[{.roleRef.kind},{.roleRef.name}]{end}'
[Role,weave-net][ClusterRole,weave-net]

希望这会有所帮助。

答案 1 :(得分:1)

在Kubernetes中,使用ClusterRoleBinding对象将服务帐户映射到特权(集群级别或命名空间级别)。您需要先查找RoleBinding或ClusterRoleBinding对象,然后再查找Role或ClusterRole对象,以查看其在集群中具有哪些特权。

答案 2 :(得分:1)

using Microsoft.Azure.Functions.Extensions.DependencyInjection;
using Microsoft.Azure.WebJobs.Host.Bindings;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options;
using System;


[assembly: FunctionsStartup(typeof(MyDurableFunction.Startup))]

namespace MyDurableFunction
{
    public class Startup : FunctionsStartup
    {
        public override void Configure(IFunctionsHostBuilder builder)
        {
            var executioncontextoptions = builder.Services.BuildServiceProvider()
                .GetService<IOptions<ExecutionContextOptions>>().Value;
            var currentDirectory = executioncontextoptions.AppDirectory;
            var environment = Environment.GetEnvironmentVariable("AZURE_FUNCTIONS_ENVIRONMENT");

            var config = new ConfigurationBuilder()
               .SetBasePath(currentDirectory)
               .AddJsonFile($"settings.{environment}.json", optional: false, reloadOnChange: false)
               .AddEnvironmentVariables()
               .Build();

            builder.Services.AddSingleton<IMyBusinessService1>(sp =>
            {
                var secretFromAppSettings = config["secretKey"];
                var passwordFromAppSettings = config["secretPassword"];
                return new MyBusinessService1(secretFromAppSettings, passwordFromAppSettings);
            });

            builder.Services.AddSingleton<IDatabaseHelper, DatabaseHelper>();

            builder.Services.AddLogging();
        }

    }
}

您可以尝试使用此命令生成一个表以显示映射

enter image description here

答案 3 :(得分:0)

使用以下命令获取绑定到服务帐户Role的{​​{1}}名称。 defaultkubectl get rolebinding --output=yaml

现在使用获取角色配置 kubectl get clusterrolebinding --output=yaml