IAM 신뢰할 수 있는 프로필로 리소스 권한 부여하기
가상 프라이빗 클라우드 클래식 인프라 Satellite
신뢰할 수 있는 프로필을 사용하여 리소스에 대한 액세스 권한을 설정하는 방법을 알아보세요.
ibmcloud ks cluster master refresh 명령을 실행하여 IAM 신뢰 프로파일을 사용으로 설정할 수 있습니다.
- IAM에서
- IAM 신뢰 프로파일을 작성하여 시작하십시오. 그 후 클러스터 내의 Kubernetes 네임스페이스 및 서비스 계정을 비롯한, 자신의 클러스터와 일치하는 조건을 선택하여 이 신뢰할 수 있는 프로파일을 IBM Cloud Kubernetes Service 컴퓨팅 리소스와 링크하십시오. 마지막으로 앱을 사용하려는 IBM Cloud 서비스에 액세스 정책을 지정하십시오.
- 클러스터에서
- Kubernetes 의 서비스 계정 토큰 사용량 예측 기능을 통해, 연결된 클러스터의 Kubernetes 네임스페이스에서 실행되고 해당 네임스페이스의 서비스 계정을 사용하는 앱은 서비스 계정의 공개 키를 교환하여 IBM Cloud IAM 액세스 토큰을 획득할 수 있습니다. 앱은 이 액세스 토큰을 사용하여 IBM Cloud 서비스(예: 데이터베이스, Watson 또는 VPC 인프라)에 대한 API 요청을 인증할 수 있습니다. 신뢰 프로파일의 액세스 정책을 통해 토큰에서 앱이 수행할 수 있도록 허용하는 조치를 제어합니다.
IAM 신뢰 프로필 생성
계정에서 신뢰할 수 있는 프로필을 만들려면 IAM 설명서에서 신뢰할 수 있는 프로필 만들기를 참조하세요. 신뢰할 수 있는 프로필을 만들려면 계정 소유자여야 합니다. 또한 다음 액세스 역할이 필요합니다.
- 모든 계정 관리 서비스에 대한 관리자 역할.
- IAM ID 서비스에 대한 관리자 역할 자세한 정보는 IAM ID 서비스를 참조하십시오.
- 특정 리소스 및 구성 요소에 필요한 추가 역할이 있습니다.
클러스터의 기본 신뢰할 수 있는 프로필 설정
단일 클러스터에 대해 신뢰할 수 있는 프로필을 설정하려면 ibmcloud ks experimental trusted-profile set 명령을 실행합니다.
리소스 그룹의 모든 클러스터가 동일한 신뢰할 수 있는 프로필을 사용하도록 하려면 ibmcloud ks experimental trusted-profile default set 명령을 실행하세요.
신뢰할 수 있는 프로필의 상세 정보를 확인하세요
동일한 리소스 그룹에 있는 클러스터에 대한 기본 신뢰할 수 있는 프로필을 가져오려면 ibmcloud ks experimental trusted-profile default get 명령을 실행하세요.
IBM Cloud 서비스에 인증하도록 애플리케이션 팟(Pod) 구성
IBM Cloud® Kubernetes Service 클러스터에서 실행되는 애플리케이션 포드에 IBM Cloud Identity and Access Management (IAM)의 신뢰할 수 있는 프로필을 사용하여 IBM Cloud 서비스에 대한 액세스 권한을 부여하세요. 개발자는 IAM 신뢰 프로파일에 링크된 클러스터에서 IBM Cloud 서비스에 인증하도록 애플리케이션 팟(Pod)을 구성할 수 있습니다.
이 단계를 완료하려면 관리자 액세스 권한이 없어도 됩니다. 단, 다음 요구 사항을 충족해야 합니다: 뷰어 플랫폼 액세스 역할, IBM Cloud IAM의 클러스터에 대한 작성자 서비스 액세스 역할 Kubernetes ServiceiAM ID 서비스에 대한 iam-identity.profile.create 및 iam-identity.profile.linkToResource 작업.
시작하기 전에:
- 계정에 로그인하십시오. If applicable, target the appropriate resource group. 클러스터에 대한 컨텍스트를 설정하십시오.
- 계정 관리자가 클러스터에 대한 IAM 신뢰 프로파일을 작성했는지 확인하십시오.
IBM Cloud 서비스에 인증하도록 애플리케이션 팟(Pod)을 구성하려면 다음 작업을 수행하십시오.
-
서비스 계정 토큰 볼륨 투영을 사용하도록 포드 구성 파일을 설계하십시오.
containers섹션의volumeMounts섹션에서 ID 토큰을 마운트하십시오.
... volumeMounts: - mountPath: /var/run/secrets/tokens name: sa-token ``` 1. `volumes` 섹션에서 서비스 계정 토큰 볼륨 추정을 설정하십시오. 토큰이 유효한 기간을 제어하려면 `expirationSeconds` 필드를 수정하십시오. IAM 토큰을 검색하려면 서비스 계정 토큰 만기가 1시간 이내여야 합니다. {: tip} ```yaml {: codeblock} ... volumes: - name: sa-token projected: sources: - serviceAccountToken: path: sa-token expirationSeconds: 3600 audience: iam ... ``` -
서비스 계정 예상 토큰을 IBM Cloud 서비스에 대한 후속 API 호출에 사용할 수 있는 IAM 토큰으로 교환하도록 앱을 설계하십시오. 다음 인증 요청 예제를 검토하십시오.
${profile_id}을 클러스터가 연결된 신뢰할 수 있는 프로필의 ID로 대체하십시오. 사용 가능한 프로필 ID를 확인하려면, 사용자 본인이나 계정 관리자가ibmcloud iam tps명령어나GET 'https://iam.cloud.ibm.com/v1/profiles/?account_id=<account_id>'``을 사용하거나, IAM 콘솔에서 신뢰할 수 있는 프로필을 확인할 수 있습니다.curl -s -X POST \ -H "Content-Type: application/x-www-form-urlencoded" \ -H "Accept: application/json" \ -d grant_type=urn:ibm:params:oauth:grant-type:cr-token \ -d cr_token=$(cat /var/run/secrets/tokens/sa-token) \ -d profile_id=${profile_id} \ https://iam.cloud.ibm.com/identity/token -
앱이 배치되기 전에 다음 예제 Kubernetes 작업을 시도하여 토큰 교환을 테스트하십시오. 다음 Kubernetes 작업에서
curl팟(Pod)은 클러스터의 공개 키가 IAM 액세스 토큰으로 교환되었는지 확인하기 위해 IBM Cloud IAM에 대한 API 요청을 수행합니다. 앱은 신뢰 프로파일이 권한을 부여하는 다른 IBM Cloud 서비스를 호출할 수도 있습니다.apiVersion: batch/v1 kind: Job metadata: name: token-exchange-job namespace: default spec: template: spec: containers: - name: curl image: curlimages/curl:7.77.0 command: ["/bin/sh"] args: ["-c", "curl -s -H \"Content-Type: application/x-www-form-urlencoded\" -H \"Accept: application/json\" -d grant_type=urn:ibm:params:oauth:grant-type:cr-token -d cr_token=$(cat /var/run/secrets/tokens/sa-token) -d profile_id=<profile_id> https://iam.cloud.ibm.com/identity/token"] volumeMounts: - mountPath: /var/run/secrets/tokens name: sa-token restartPolicy: Never serviceAccountName: default volumes: - name: sa-token projected: sources: - serviceAccountToken: path: sa-token expirationSeconds: 3600 audience: iam -
작업을 배치하십시오.
kubectl apply -f exchange-job.yaml -
작업 세부사항을 검토하여 성공했는지 확인하십시오.
kubectl describe job token-exchange-job -
job completed및succeeded메시지의 출력을 검토하여 작업이 성공했는지 확인하십시오. -
작업이 성공하면 프랑크푸르트에서 Activity Tracker 글로벌 이벤트를 확인하여 신뢰할 수 있는 프로파일 요청에 대한 세부사항이 있는 로그 라인을 확인하십시오. 작업이 실패한 경우 구성을 검토하고 다시 시도하십시오.