19장. 클라우드 공급자 인증 정보 관리
19.1. Cloud Credential Operator 정보
CCO(Cloud Credential Operator)는 클라우드 공급자 인증 정보를 CRD(사용자 지정 리소스 정의)로 관리합니다. CCO가 CredentialsRequest
사용자 정의 리소스(CR)에 동기화되어 OpenShift Container Platform 구성 요소가 클러스터를 실행하는 데 필요한 특정 권한으로 클라우드 공급자 인증 정보를 요청할 수 있습니다.
install-config.yaml
파일에서 credentialsMode
매개변수에 다양한 값을 설정하면 CCO를 여러 모드에서 작동하도록 구성할 수 있습니다. 모드가 지정되지 않거나 credentialsMode
매개변수가 빈 문자열(""
)로 설정되면 CCO는 기본 모드에서 작동합니다.
19.1.1. 모드
install-config.yaml
파일에서 credentialsMode
매개변수의 다른 값을 설정하면 mint, passthrough 또는 manual 모드에서 CCO를 작동하도록 구성할 수 있습니다. 이러한 옵션은 CCO에서 클라우드 인증 정보를 사용하여 클러스터의 CredentialsRequest
CR을 처리하는 방법에 투명성과 유연성을 제공하고 조직의 보안 요구 사항에 맞게 CCO를 구성할 수 있습니다. 모든 클라우드 공급자에서 모든 CCO 모드가 지원되는 것은 아닙니다.
- Mint: mint 모드에서 CCO는 제공된 관리자 수준 클라우드 인증 정보를 사용하여 필요한 특정 권한만으로 클러스터의 구성 요소에 대한 새 인증 정보를 생성합니다.
- Passthrough: passthrough 모드에서 CCO는 제공된 클라우드 인증 정보를 요청하는 구성 요소에 클라우드 인증 정보를 전달합니다.
Manual: 수동 모드에서 사용자는 CCO 대신 클라우드 인증 정보를 관리합니다.
- AWS Security Token Service를 사용하는 Manual: 수동 모드에서 AWS STS(Amazon Web Services Security Token Service)를 사용하도록 AWS 클러스터를 구성할 수 있습니다. 이 구성을 통해 CCO는 다른 구성 요소에 임시 인증 정보를 사용합니다.
- GCP 워크로드 ID 사용 수동: 수동 모드에서 GCP 워크로드 ID를 사용하도록 GCP 클러스터를 구성할 수 있습니다. 이 구성을 통해 CCO는 다른 구성 요소에 임시 인증 정보를 사용합니다.
클라우드 공급자 | Mint | Passthrough | 수동 |
---|---|---|---|
Alibaba Cloud | X | ||
AWS(Amazon Web Services) | X | X | X |
Microsoft Azure | X [1] | X | |
GCP(Google Cloud Platform) | X | X | X |
IBM Cloud | X | ||
Nutanix | X | ||
Red Hat OpenStack Platform (RHOSP) | X | ||
RHV(Red Hat Virtualization) | X | ||
VMware vSphere | X |
- 수동 모드는 Microsoft Azure Stack Hub에서 지원되는 유일한 CCO 구성입니다.
19.1.2. Cloud Credential Operator 모드 확인
여러 모드에서 CCO 사용을 지원하는 플랫폼의 경우 웹 콘솔 또는 CLI를 사용하여 CCO가 사용하도록 구성된 모드를 결정할 수 있습니다.
그림 19.1. CCO 구성 확인
19.1.2.1. 웹 콘솔을 사용하여 Cloud Credential Operator 모드 확인
웹 콘솔을 사용하여 CCO(Cloud Credential Operator)가 사용하도록 구성된 모드를 확인할 수 있습니다.
AWS(Amazon Web Services), 글로벌 Microsoft Azure 및 GCP(Google Cloud Platform) 클러스터만 여러 CCO 모드를 지원합니다.
사전 요구 사항
- 클러스터 관리자 권한이 있는 OpenShift Container Platform 계정에 액세스할 수 있습니다.
절차
-
cluster-admin
역할의 사용자로 OpenShift Container Platform 웹 콘솔에 로그인합니다. -
Administration
Cluster Settings으로 이동합니다. - 클러스터 설정 페이지에서 구성 탭을 선택합니다.
- Configuration 리소스 에서 CloudCredential 를 선택합니다.
- CloudCredential 세부 정보 페이지에서 YAML 탭을 선택합니다.
YAML 블록에서
spec.credentialsMode
의 값을 확인합니다. 다음 값이 모든 플랫폼에서 지원되지는 않지만 모두 지원되는 것은 아닙니다.-
''
: CCO가 기본 모드에서 작동합니다. 이 구성에서 CCO는 설치 중에 제공된 인증 정보에 따라 Mint 또는 passthrough 모드에서 작동합니다. -
Mint
: CCO가 Mint 모드에서 작동합니다. -
passthrough
: CCO가 passthrough 모드에서 작동합니다. -
Manual
: CCO가 수동 모드에서 작동합니다.
중요''
,Mint
또는Manual
의spec.credentialsMode
가 있는 AWS 또는 GCP 클러스터의 특정 구성을 확인하려면 추가 조사를 수행해야 합니다.AWS 및 GCP 클러스터는 루트 시크릿이 삭제된 상태에서 Mint 모드 사용을 지원합니다.
수동 모드를 사용하는 AWS 또는 GCP 클러스터는 AWS STS(Security Token Service) 또는 GCP 워크로드 ID를 사용하여 클러스터 외부에서 클라우드 인증 정보를 생성하고 관리하도록 구성할 수 있습니다. cluster
Authentication
오브젝트를 검사하여 클러스터에서 이 전략을 사용하는지 확인할 수 있습니다.-
기본(
''
)만 사용하는 AWS 또는 GCP 클러스터: 클러스터가 Mint 또는 passthrough 모드에서 작동하는지 확인하려면 클러스터 루트 시크릿의 주석을 검사합니다.워크로드
시크릿 으로 이동하여 클라우드 공급자의 루트 시크릿을 찾습니다. 참고프로젝트 드롭다운이 All Projects 로 설정되어 있는지 확인합니다.
플랫폼 시크릿 이름 AWS
aws-creds
GCP
gcp-credentials
클러스터가 사용 중인 CCO 모드를 보려면 Annotations 에서
1 주석을
클릭하고 value 필드를 확인합니다. 다음 값을 사용할 수 있습니다.-
Mint
: CCO가 Mint 모드에서 작동합니다. -
passthrough
: CCO가 passthrough 모드에서 작동합니다.
클러스터에서 Mint 모드를 사용하는 경우 루트 시크릿 없이 클러스터가 작동하는지 확인할 수도 있습니다.
-
AWS 또는 GCP 클러스터만 Mint 모드를 사용하는: 클러스터가 루트 시크릿없이 작동하는지 확인하려면 워크로드
시크릿으로 이동하여 클라우드 공급자의 루트 시크릿을 찾습니다. 참고프로젝트 드롭다운이 All Projects 로 설정되어 있는지 확인합니다.
플랫폼 시크릿 이름 AWS
aws-creds
GCP
gcp-credentials
- 이러한 값 중 하나가 표시되면 클러스터에서 root 시크릿이 있는 mint 또는 passthrough 모드를 사용하는 것입니다.
- 이러한 값이 표시되지 않으면 클러스터는 루트 시크릿이 제거된 Mint 모드에서 CCO를 사용하는 것입니다.
AWS 또는 GCP 클러스터만 사용하는: 클러스터 외부에서 클라우드 인증 정보를 생성하고 관리하도록 클러스터가 구성되었는지 확인하려면 클러스터
인증
오브젝트 YAML 값을 확인해야 합니다.-
Administration
Cluster Settings으로 이동합니다. - 클러스터 설정 페이지에서 구성 탭을 선택합니다.
- Configuration 리소스 에서 인증을 선택합니다.
- 인증 세부 정보 페이지에서 YAML 탭을 선택합니다.
YAML 블록에서
.spec.serviceAccountIssuer
매개변수 값을 확인합니다.-
클라우드 공급자와 연결된 URL이 포함된 값은 CCO가 AWS STS 또는 GCP 워크로드 ID와 함께 수동 모드를 사용하여 클러스터 외부에서 클라우드 인증 정보를 생성하고 관리하는 것을 나타냅니다. 이러한 클러스터는
ccoctl
유틸리티를 사용하여 구성됩니다. -
빈 값(
''
)은 클러스터가 수동 모드에서 CCO를 사용하고 있지만ccoctl
유틸리티를 사용하여 구성되지 않았음을 나타냅니다.
-
클라우드 공급자와 연결된 URL이 포함된 값은 CCO가 AWS STS 또는 GCP 워크로드 ID와 함께 수동 모드를 사용하여 클러스터 외부에서 클라우드 인증 정보를 생성하고 관리하는 것을 나타냅니다. 이러한 클러스터는
-
Administration
19.1.2.2. CLI를 사용하여 Cloud Credential Operator 모드 확인
CLI를 사용하여 CCO(Cloud Credential Operator)가 사용하도록 구성된 모드를 확인할 수 있습니다.
AWS(Amazon Web Services), 글로벌 Microsoft Azure 및 GCP(Google Cloud Platform) 클러스터만 여러 CCO 모드를 지원합니다.
사전 요구 사항
- 클러스터 관리자 권한이 있는 OpenShift Container Platform 계정에 액세스할 수 있습니다.
-
OpenShift CLI(
oc
)가 설치되어 있습니다.
절차
-
cluster-admin
역할의 사용자로 클러스터에서oc
에 로그인합니다. CCO가 사용하도록 구성된 모드를 결정하려면 다음 명령을 입력합니다.
$ oc get cloudcredentials cluster \ -o=jsonpath={.spec.credentialsMode}
다음 출력 값을 사용할 수 있지만 모든 플랫폼에서 모두 지원되는 것은 아닙니다.
-
''
: CCO가 기본 모드에서 작동합니다. 이 구성에서 CCO는 설치 중에 제공된 인증 정보에 따라 Mint 또는 passthrough 모드에서 작동합니다. -
Mint
: CCO가 Mint 모드에서 작동합니다. -
passthrough
: CCO가 passthrough 모드에서 작동합니다. -
Manual
: CCO가 수동 모드에서 작동합니다.
중요''
,Mint
또는Manual
의spec.credentialsMode
가 있는 AWS 또는 GCP 클러스터의 특정 구성을 확인하려면 추가 조사를 수행해야 합니다.AWS 및 GCP 클러스터는 루트 시크릿이 삭제된 상태에서 Mint 모드 사용을 지원합니다.
수동 모드를 사용하는 AWS 또는 GCP 클러스터는 AWS STS(Security Token Service) 또는 GCP 워크로드 ID를 사용하여 클러스터 외부에서 클라우드 인증 정보를 생성하고 관리하도록 구성할 수 있습니다. cluster
Authentication
오브젝트를 검사하여 클러스터에서 이 전략을 사용하는지 확인할 수 있습니다.-
기본 (
''
)만 사용하는 AWS 또는 GCP 클러스터: 클러스터가 Mint 또는 passthrough 모드에서 작동하는지 확인하려면 다음 명령을 실행합니다.$ oc get secret <secret_name> \ -n kube-system \ -o jsonpath \ --template '{ .metadata.annotations }'
여기서 &
lt;secret_name
>은 AWS의aws-creds
이거나 GCP의gcp-credentials
입니다.이 명령은 클러스터 루트 시크릿 오브젝트에
.metadata.annotations
매개변수 값을 표시합니다. 다음 출력 값을 사용할 수 있습니다.-
Mint
: CCO가 Mint 모드에서 작동합니다. -
passthrough
: CCO가 passthrough 모드에서 작동합니다.
클러스터에서 Mint 모드를 사용하는 경우 루트 시크릿 없이 클러스터가 작동하는지 확인할 수도 있습니다.
-
AWS 또는 GCP 클러스터만 Mint 모드를 사용하는: 클러스터가 루트 시크릿없이 작동하는지 확인하려면 다음 명령을 실행합니다.
$ oc get secret <secret_name> \ -n=kube-system
여기서 &
lt;secret_name
>은 AWS의aws-creds
이거나 GCP의gcp-credentials
입니다.루트 시크릿이 있으면 이 명령의 출력에서 보안에 대한 정보를 반환합니다. root 보안이 클러스터에 존재하지 않음을 나타내는 오류가 있습니다.
수동 모드를 사용하는 AWS 또는 GCP 클러스터: 클러스터 외부에서 클라우드 인증 정보를 생성하고 관리하도록 클러스터가 구성되었는지 확인하려면 다음 명령을 실행합니다.
$ oc get authentication cluster \ -o jsonpath \ --template='{ .spec.serviceAccountIssuer }'
이 명령은 클러스터
인증
오브젝트에서.spec.serviceAccountIssuer
매개변수 값을 표시합니다.-
클라우드 공급자와 연결된 URL의 출력은 CCO가 AWS STS 또는 GCP 워크로드 ID와 함께 수동 모드를 사용하여 클러스터 외부에서 클라우드 인증 정보를 생성하고 관리하는 것을 나타냅니다. 이러한 클러스터는
ccoctl
유틸리티를 사용하여 구성됩니다. -
빈 출력은 클러스터가 수동 모드에서 CCO를 사용하고 있지만
ccoctl
유틸리티를 사용하여 구성되지 않았음을 나타냅니다.
-
클라우드 공급자와 연결된 URL의 출력은 CCO가 AWS STS 또는 GCP 워크로드 ID와 함께 수동 모드를 사용하여 클러스터 외부에서 클라우드 인증 정보를 생성하고 관리하는 것을 나타냅니다. 이러한 클러스터는
19.1.3. 기본 동작
여러 모드가 지원되는 플랫폼의 경우(AWS, Azure 및 GCP) CCO가 기본 모드에서 실행되면 CredentialsRequest
CR을 충분히 처리할 수 있는 모드를 결정하도록 제공된 인증 정보를 동적으로 확인합니다.
기본적으로 CCO는 인증 정보가 기본 작동 모드인 mint 모드에 충분한지 결정하고 해당 인증 정보를 사용하여 클러스터의 구성 요소에 적절한 인증 정보를 생성합니다. 인증 정보가 Mint 모드에 충분하지 않으면 passthrough 모드에 충분한지 여부를 결정합니다. 인증 정보가 passthrough 모드에 충분하지 않으면 CCO에서 CredentialsRequest
CR을 적절하게 처리할 수 없습니다.
설치 중에 제공된 인증 정보가 충분하지 않다고 판단되면 설치에 실패합니다. AWS의 경우 설치 프로그램은 프로세스 초기에 실패하고 필요한 권한이 누락된 것을 나타냅니다. 다른 공급자는 오류가 발생할 때까지 오류 발생 원인에 대한 구체적인 정보를 제공하지 않을 수 있습니다.
성공적인 설치 후 인증 정보가 변경되고 CCO가 새 인증 정보가 충분하지 않다고 판단하면 CCO에서 새 CredentialsRequest
CR에 조건을 배치하여 충분하지 않은 인증 정보로 인해 이를 처리할 수 없음을 나타냅니다.
충분하지 않은 인증 정보 문제를 해결하려면 충분한 권한이 있는 인증 정보를 제공하십시오. 설치 중에 오류가 발생한 경우 다시 설치해보십시오. 새로운 CredentialsRequest
CR 문제의 경우 CCO가 CR을 다시 처리할 때까지 기다립니다. 또는 AWS,Azure, GCP 에 대한 IAM을 수동으로 생성할 수 있습니다.