27.18.5. 사용자 ID


참고

보조 그룹을 사용하기 전에 SCC, 기본값, 허용된 범위를 읽습니다.

작은 정보

일반적으로 사용자 ID를 사용하는대신 그룹 ID(추가 또는 fsGroup)를 사용하여 영구 스토리지에 액세스하는 것이 좋습니다.

사용자 ID는 컨테이너 이미지 또는 포드 정의에 정의할 수 있습니다. 포드 정의에서 단일 사용자 ID는 모든 컨테이너에 전역적으로 정의되거나 개별 컨테이너(또는 둘 다)에 따라 정의할 수 있습니다. 사용자 ID는 아래 Pod 정의 조각에 표시된 대로 제공됩니다.

spec:
  containers:
  - name: ...
    securityContext:
      runAsUser: 1000100001

위의 ID 1000100001은 컨테이너에 따라 다르며 내보내기의 소유자 ID와 일치합니다. NFS 내보내기의 소유자 ID가 54321 인 경우 해당 번호가 포드 정의에 사용됩니다. 컨테이너 정의 외부의 securityContext 를 지정하면 포드의 모든 컨테이너에 ID가 전역적으로 지정됩니다.

그룹 ID와 유사하게 SCC 및/또는 프로젝트에 설정된 정책에 따라 사용자 ID를 검증할 수 있습니다. SCC의 runAsUser 전략이 RunAsAny 로 설정된 경우 포드 정의 또는 이미지에 정의된 모든 사용자 ID가 허용됩니다.

주의

이는 UID 0(루트 )도 허용됩니다.

대신 runAsUser 전략이 MustRunAsRange 로 설정된 경우 제공된 사용자 ID가 허용되는 ID 범위에 대해 검증됩니다. 포드에 사용자 ID가 제공되지 않으면 기본 ID가 허용되는 사용자 ID 범위의 최소 값으로 설정됩니다.

이전 NFS 예제 로 돌아가서 컨테이너에는 위의 포드 조각에 표시되는 1000100001 으로 설정된 UID가 필요합니다. 기본 프로젝트 및 restricted SCC를 가정하면 Pod의 요청된 사용자 ID 1000100001이 허용되지 않으므로 Pod가 실패합니다. 다음과 같은 이유로 Pod가 실패합니다.

  • 사용자 ID로 1000100001 을 요청합니다.
  • 사용 가능한 모든 SCC는 runAsUser 전략에 MustRunAsRange 를 사용하므로 UID 범위 검사가 필요하고
  • 1000100001 은 SCC 또는 프로젝트의 사용자 ID 범위에 포함되지 않습니다.

이 상황을 해결하기 위해 적절한 사용자 ID 범위를 사용하여 새 SCC를 만들 수 있습니다. 새 프로젝트는 적절한 사용자 ID 범위를 정의하여 만들 수도 있습니다. 더 적은 우선 순위의 다른 옵션도 있습니다.

  • 제한된 SCC는 최소 및 최대 사용자 ID 범위 내에 1000100001 을 포함하도록 수정할 수 있습니다. 가능한 경우 사전 정의된 SCC를 수정하지 않도록 해야 하므로 이 방법은 권장되지 않습니다.
  • runAsUser 값에 RunAsAny 를 사용하도록 restricted SCC를 수정하여 ID 범위 확인을 제거할 수 있습니다. 컨테이너를 root로 실행할 수 있으므로 이 방법은 권장되지 않습니다.
  • 기본 프로젝트의 UID 범위는 1000100001 의 사용자 ID를 허용하도록 변경할 수 있습니다. 단일 사용자 ID 범위만 지정할 수 있고 범위가 변경되면 다른 Pod가 실행되지 않을 수 있으므로 일반적으로 이 방법은 권장되지 않습니다.

사용자 ID 및 사용자 지정 SCC

가능한 경우 사전 정의된 SCC를 수정하지 않는 것이 좋습니다. 기본 방법은 조직의 보안 요구 사항에 더 적합한 사용자 지정 SCC 를 생성하거나 원하는 사용자 ID를 지원하는 새 프로젝트를 생성하는 것입니다.

이전 예제의 상황을 해결하기 위해 다음과 같이 사용자 정의 SCC를 생성할 수 있습니다.

  • 최소 및 최대 사용자 ID가 정의됩니다.
  • UID 범위 검사는 계속 적용되며
  • 1000100001 의 UID가 허용됩니다.

예를 들면 다음과 같습니다.

$ oc get -o yaml --export scc nfs-scc

allowHostDirVolumePlugin: false 1
...
kind: SecurityContextConstraints
metadata:
  ...
  name: nfs-scc 2
priority: 9 3
requiredDropCapabilities: null
runAsUser:
  type: MustRunAsRange 4
  uidRangeMax: 1000100001 5
  uidRangeMin: 1000100001
...
1
allowXX 부울은 restricted SCC의 와 동일합니다.
2
이 새 SCC의 이름은 nfs-scc 입니다.
3
숫자로 큰 숫자가 우선 순위가 높습니다. nil 또는 omitted가 가장 낮은 우선 순위입니다. 우선순위가 높은 SCC가 더 낮은 우선 순위 SCC보다 먼저 정렬되므로 새 Pod를 일치시킬 가능성이 더 높습니다.
4
runAsUser 전략이 MustRunAsRange 로 설정되어 있으므로 UID 범위 검사가 적용됩니다.
5
UID 범위는 1000100001 ~ 1000100001입니다(한 가지 값의 범위).

이제 runAsUser를 사용합니다. 이전 포드 정의 조각에 표시된 1000100001 의 Pod는 새 nfs-scc 와 일치하며 UID 1000100001으로 실행할 수 있습니다.

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.