설명
Kubernetes RBAC는 역할과 바인딩으로 사용자와 서비스 계정의 작업 권한을 제어합니다. AKS에서 이 기능이 비활성화되어 있으면 역할 기반 권한 제한을 적용할 수 없습니다. 템플릿에 설정이 없는 경우에는 실제 클러스터의 상태를 확인하세요.
잠재적 영향
사용자나 서비스 계정이 필요한 범위를 넘는 작업을 수행하면 클러스터 리소스의 변경이나 데이터 접근으로 영향이 확대될 수 있습니다.
해결 방법
클러스터 구성에 properties.enableRBAC: true를 명시하고 필요한 Role, ClusterRole과 바인딩만 부여하세요. 기존 클러스터의 실제 설정과 관리자 권한을 확인하고, 일반 사용자와 서비스 계정으로 허용·거부할 작업을 시험하세요. 이 설정은 aadProfile.enableAzureRBAC로 선택하는 Azure RBAC 인가 방식과 구분됩니다.
예시
지원되는 API와 관리 ID를 사용하는 클러스터 생성 예시입니다. adminUserName과 sshPublicKey에 실제 계정명과 공개 키를 제공하고 대상 지역에서 사용할 수 있는 VM 크기를 선택하세요. Kubernetes 버전은 서비스의 지원되는 기본값을 사용합니다.
변경 전
bicep
param adminUserName string
param sshPublicKey string
param nodeVmSize string = 'Standard_D2s_v3'
resource aksCluster1 'Microsoft.ContainerService/managedClusters@2024-10-01' = {
name: 'aksCluster1'
location: resourceGroup().location
identity: {
type: 'SystemAssigned'
}
properties: {
dnsPrefix: 'dnsprefix'
agentPoolProfiles: [
{
name: 'agentpool'
count: 2
vmSize: nodeVmSize
osType: 'Linux'
mode: 'System'
}
]
linuxProfile: {
adminUsername: adminUserName
ssh: {
publicKeys: [
{
keyData: sshPublicKey
}
]
}
}
}
}
RBAC 사용 여부를 명시하지 않은 설정입니다. 생략만으로 실제 비활성화 상태라고 단정하지 마세요.
변경 후
bicep
param adminUserName string
param sshPublicKey string
param nodeVmSize string = 'Standard_D2s_v3'
resource aksCluster1 'Microsoft.ContainerService/managedClusters@2024-10-01' = {
name: 'aksCluster1'
location: resourceGroup().location
identity: {
type: 'SystemAssigned'
}
properties: {
enableRBAC: true
dnsPrefix: 'dnsprefix'
agentPoolProfiles: [
{
name: 'agentpool'
count: 2
vmSize: nodeVmSize
osType: 'Linux'
mode: 'System'
}
]
linuxProfile: {
adminUsername: adminUserName
ssh: {
publicKeys: [
{
keyData: sshPublicKey
}
]
}
}
}
}
RBAC를 명시적으로 활성화합니다. 실제 권한 범위는 부여한 역할과 바인딩에 따라 결정됩니다.