기업 관리형 신뢰 프로필 템플릿 만들기
여러 개의 하위 계정이 있는 기업에서는 각 계정에서 신뢰 프로필을 수동으로 구성하는 데 시간이 많이 걸리고 오류가 발생할 수 있습니다. 신뢰할 수 있는 프로필 템플릿을 사용하여 연합된 사용자에게 기업 내 계정에 대한 액세스 권한을 동적으로 부여하십시오.
기업 관리형 신뢰 프로필 템플릿을 사용하면 연합된 사용자들만 신뢰를 구축할 수 있습니다. 자식 계정에서 컴퓨팅 리소스, IBM Cloud 서비스 및 서비스 ID에 대한 신뢰할 수 있는 프로필을 설정하려면 신뢰할 수 있는 프로필 만들기를 참조하세요.
사용자는 신뢰 프로필을 적용하기 위해 계정의 구성원이 될 필요가 없습니다. 사용자가 신뢰 프로필과 동일한 ID 제공자( IdP )를 보유하고 있고 신뢰 조건을 충족하는 경우, 해당 사용자는 프로필을 적용할 수 있습니다. 예를 들어, 기업 디렉토리의 사용자가 특정 작업을 수행하기 위해 계정 그룹에 액세스해야 하는 경우가 있습니다. 해당 사용자와 그들에게 필요한 정책을 대상으로 신뢰 조건을 설정하여 신뢰할 수 있는 프로필 템플릿을 만듭니다. 그런 다음, 신뢰할 수 있는 프로필 템플릿을 액세스가 필요한 계정에 할당합니다. 이제 사용자는 각 계정에서 신뢰할 수 있는 프로필을 적용하여 계정 간에 전환할 수 있으며, 계정 간에 일관된 액세스를 할 수 있습니다.
아이덴티티 서비스의 관리자는 자신의 계정에 있는 기업 관리 신뢰 프로파일에 신뢰 관계와 정책을 추가할 수 있지만, 템플릿에 정의된 것을 수정할 수는 없습니다.
시작하기 전에
-
시작하기 전에 외부 ID 제공자의 인증을 활성화해야 합니다.
-
기업 관리형 IAM 템플릿이 기업을 더 안전하게 만드는 방법에 대해 알아보려면 기업 관리형 IAM 액세스의 작동 방식을 참조하십시오.
-
기업 계정 관리자가 되어야만 기업 관리 IAM 템플릿을 생성하고 할당할 수 있습니다.
-
기업 관리형 IAM 템플릿을 생성하려면 다음 액세스 권한이 할당되어 있는지 확인하십시오
- 모든 IAM 계정 관리 서비스에서 ‘템플릿 관리자’ 역할을 가진 정책
-
기업 관리 IAM 템플릿을 하위 계정에 할당하려면 다음 액세스 권한이 할당되어 있는지 확인하십시오
- 모든 IAM 계정 관리 서비스에 대한 템플릿 할당 관리자 역할이 있는 정책
- 엔터프라이즈 서비스에서 최소한 뷰어 역할이 있는 정책
기본적으로, 계정 소유자를 포함하여 템플릿 관리자 또는 템플릿 할당 관리자 역할이 있는 사용자는 없습니다.
-
기업의 신규 계정과 기존 계정은 반드시 기업에서 관리하는 IAM에 옵트인해야 합니다. 더 자세한 정보를 원하시면, 기업 관리형 IAM을 선택하는 방법을 참고하세요.
신뢰할 수 있는 프로필 템플릿 만들기
사용자가 많은 하위 계정에 액세스해야 하거나 사용자 그룹이 여러 하위 계정에 임시로 액세스해야 하는 경우, 신뢰할 수 있는 프로필 템플릿을 사용하는 것이 좋습니다.
신뢰할 수 있는 프로필 템플릿을 만들려면 다음 단계를 따르십시오
-
관리 > 액세스(IAM) > 템플릿으로 이동하고 IBM Cloud 콘솔에서 신뢰할 수 있는 프로필을 선택합니다.
-
작성을 클릭하십시오.
-
기업 사용자를 위한 신뢰 프로필 템플릿의 목적에 대한 설명과 이름을 입력합니다.
-
기업에서 관리하는 신뢰할 수 있는 프로필의 이름, 이메일 및 설명을 입력하십시오. 이 설명에는 하위 계정 사용자를 위한 해당 프로필의 목적을 명시하고, 이 신뢰할 수 있는 프로필에서 사용할 수 있는 작업 목록을 반드시 포함해야 합니다.
이메일에는 개인 이메일 ID나 배포 목록을 추가할 수 있습니다.
프로필 이름에 대체 변수를 사용하여 각 계정에 맞게 사용자 지정할 수 있습니다. 다음 변수들이 지원됩니다:
${template_id}: 신뢰할 수 있는 프로필 템플릿의 고유 식별자로 대체됩니다.${template_name}: 신뢰할 수 있는 프로필 템플릿의 현재 이름으로 대체됩니다.${template_version}: 신뢰할 수 있는 프로필 템플릿의 현재 버전으로 대체됩니다.${account_id}: 신뢰할 수 있는 프로필 템플릿이 할당된 계정의 식별자로 대체됩니다.${account_name}: 신뢰할 수 있는 프로필 템플릿이 할당된 계정의 이름으로 대체됩니다.
계정 이름과 같은 값을 변경해도 신뢰할 수 있는 프로필 이름은 업데이트되지 않습니다. 프로필 이름은 계정에 템플릿을 할당하거나 템플릿 버전을 업그레이드할 때 설정됩니다. 즉, 나중에 계정 이름이 변경되어도 프로필 이름이 자동으로 업데이트되지 않습니다. 새 계정 이름은 다음에 템플릿을 할당하거나 템플릿을 업그레이드할 때만 사용됩니다.
-
작성을 클릭하십시오.
(선택 사항) 신뢰 관계 추가
개별 사용자
IBM Cloud IAM ID를 사용하여 계정 내부 또는 외부의 개별 사용자와 신뢰를 구축하세요.
신뢰를 쌓으려면 다음 단계를 완료하십시오
- 신뢰 관계 > 개별 사용자를 클릭합니다.
- 추가를 클릭하고 계정 사용자 또는 외부 사용자를 선택하여 기업 구성원을 초대하고 템플릿을 할당합니다.
- 계정 사용자를 클릭하여 계정에 사용자를 추가합니다.
- 사용자 또는 여러 사용자를 선택합니다.
- 추가를 클릭하여 연결된 프로필에 사용자를 추가합니다.
- 내 계정에 없는 사용자를 추가하려면 외부 사용자를 클릭합니다.
- IAM ID를 입력합니다.
- 연결된 계정 ID를 입력합니다. 두 개 이상의 계정을 추가할 수 있으며, 사용자가 현재 작업 중인 계정과 다른 계정을 포함할 수 있습니다.
- (선택사항) 설명을 입력하십시오.
- 추가를 클릭하여 연결된 프로필에 사용자를 추가합니다.
- 계정 사용자를 클릭하여 계정에 사용자를 추가합니다.
추가 또는 제거를 선택하여 편집하거나 제거하려는 사용자 옆의 작업 아이콘 을 클릭합니다.
연합 사용자
기업 디렉토리의 속성을 기반으로 조건을 설정하여 연합 사용자들과 신뢰를 구축하십시오. 연합된 사용자가 여러분이 설정한 조건을 충족하면, 그 프로파일을 적용할 수 있습니다.
신뢰를 쌓으려면 다음 단계를 완료하십시오
- 신뢰 관계 > 페더레이션 사용자를 클릭합니다.
- 추가를 클릭하고 인증 방법으로 IBMid 로 페더레이션된 사용자 또는 IBM Cloud AppID 로 페더레이션된 사용자를 선택하고 기본 ID 공급자( IdP )를 입력합니다.
- 사용자의 IdP 데이터를 기반으로 하는 조건을 추가하여 연합 사용자가 프로파일을 적용할 수 있는 방법과 시기를 정의합니다.
- 조건 추가를 클릭하여 여러 조건을 정의합니다. 연동된 사용자는 신뢰할 수 있는 프로필을 적용하기 위해 모든 조건을 충족해야 합니다. 조건을 작성하는 데 사용되는 필드에 대한 자세한 정보는 IAM 조건 특성의 내용을 참조하십시오.
- IdP 에서 본인 개인 데이터 내의 속성 이름과 값을 검색하려면 신원 제공자 데이터를 확인하세요. 자세한 정보는 IdP 데이터를 사용하여 신뢰 프로파일 빌드를 참조하십시오.
- 사용자가 재인증하기 전에 프로파일을 적용할 수 있는 기간에 대한 세션 지속 기간을 정의하십시오.
- 추가 를 클릭하십시오.
추가 또는 제거를 선택하여 수정하거나 제거하려는 페더레이션 사용자 옆의 작업 아이콘 을 클릭합니다.
컴퓨팅 자원
특정 클러스터에서 실행 중인 프로그램이 필요한 리소스에 안전하게 액세스할 수 있도록 컴퓨팅 리소스에 대한 신뢰를 구축하세요.
신뢰를 쌓으려면 다음 단계를 완료하십시오
- 신뢰 관계 > 리소스 계산을 클릭합니다.
- 추가를 클릭하고 컴퓨팅 서비스를 선택합니다.
- 조건 추가를 클릭하여 여러 조건을 정의합니다. 조건을 작성하는 데 사용되는 필드에 대한 자세한 정보는 IAM 조건 특성의 내용을 참조하십시오.
- 추가 를 클릭하십시오.
추가 또는 제거를 선택하여 편집하거나 제거하려는 컴퓨팅 리소스 옆의 작업 아이콘 클릭합니다.
IBM Cloud 서비스
클라우드 리소스 이름으로 식별되는 클라우드 서비스의 인스턴스를 허용하여 IBM Cloud 서비스로 신뢰를 구축하세요.
신뢰를 쌓으려면 다음 단계를 완료하십시오
- 신뢰 관계 > IBM Cloud 서비스를 클릭합니다.
- 추가를 클릭하고 CRN을 입력합니다.
- (선택사항) 설명을 입력하십시오.
- 추가 를 클릭하십시오.
추가 또는 제거를 선택하여 편집하거나 제거하려는 IBM Cloud 서비스 옆의 작업 아이콘 클릭합니다.
서비스 ID
서비스를 인증하여 서비스 ID로 신뢰를 구축하세요. 특정 서비스에 대해 서비스 ID를 생성할 수 있으며, 이를 안전하게 인증하기 위해 생성된 API 키를 사용할 수 있습니다. 또한 서비스 ID는 신뢰할 수 있는 프로필을 가정하여 필요에 따라 권한을 상속하고 리소스에 액세스할 수 있습니다.
신뢰를 쌓으려면 다음 단계를 완료하십시오
- 신뢰 관계 > 서비스 ID를 클릭합니다.
- 추가를 클릭하고 서비스 ID를 입력합니다.
- (선택사항) 설명을 입력하십시오.
- 추가 를 클릭하십시오.
추가 또는 제거를 선택하여 편집하거나 제거하려는 서비스 ID 옆의 작업 아이콘 클릭합니다.
(선택 사항) 접근 정책 추가
액세스 정책은 프로파일을 적용할 수 있는 연합된 사용자에게 하위 계정의 액세스 권한을 부여합니다.
-
액세스 > 추가를 클릭합니다.
-
이름을 입력하고 할당하고자 하는 정책을 설명하세요.
신뢰할 수 있는 프로필 템플릿을 구성하는 모든 정책에 대한 정책 템플릿을 만듭니다. 정책 템플릿을 참조하여 다른 기업 IAM 템플릿에 액세스 권한을 할당할 수 있습니다.
-
서비스 또는 서비스 그룹을 선택하고 다음을 클릭합니다.
-
액세스 범위를 모든 리소스로 설정하거나 속성에 따라 특정 리소스를 선택한 후 다음을 클릭합니다.
-
역할 및 작업 섹션에서 액세스 범위를 정의하는 역할을 선택합니다. 정책 템플릿 플로우 내에서 사용자 지정 역할 템플릿을 만들 수 있으며, 선택한 서비스에 대한 기존 사용자 지정 역할 템플릿에서 사용자 지정 역할을 선택할 수도 있습니다.
- 사용자 지정 역할 만들기를 클릭하여 사용자 지정 작업 조합을 정의합니다.
- 템플릿 이름을 입력합니다.
- (선택 사항) 템플릿 설명을 입력하세요.
- 사용자 지정 역할의 이름을 입력하세요.
- 사용자 정의 역할의 ID를 입력하세요.
- (선택 사항) 사용자 지정 역할에 대한 설명을 입력하세요.
- 작업을 선택하고 만들기를 클릭합니다. 사용자 지정 역할이 정책에 대해 이미 선택된 다른 역할과 함께 나열되고 선택됩니다.
검색창을 사용하여 특정 작업을 지원하는 역할을 찾습니다. 예를 들어 읽기, 수정 또는 보기를 검색하여 이러한 작업이 적용되는 역할 목록을 표시합니다.
-
(선택 사항) 정책이 액세스를 허용할 때를 지정하는 조건을 추가합니다.
-
추가 를 클릭하십시오.
접근 정책 제거
템플릿이 커밋되고 할당되기 전에 정책을 제거할 수 있습니다.
템플릿 세부 사항 업데이트
템플릿을 적용하기 전에 언제든지 템플릿 이름, 신뢰 프로필 이름, 설명을 업데이트할 수 있습니다. 템플릿 세부 정보를 업데이트하려면 다음 단계를 따르십시오:
- ‘관리’ > ‘액세스(IAM)’ > ‘템플릿’ 으로 이동합니다.
- 업데이트하려는 신뢰할 수 있는 프로필 템플릿을 선택합니다.
- 세부사항 섹션에서 ' 편집 ' 아이콘(
)을 클릭합니다.
- 템플릿 이름, 신뢰 프로필 이름, 설명을 필요한 대로 업데이트합니다.
- 저장 을 클릭하십시오.
템플릿을 커밋한 후에 업데이트해야 하는 경우, 새로운 버전을 만드십시오.
신뢰할 수 있는 프로필 템플릿 검토하기
신뢰할 수 있는 프로필 템플릿을 검토하고 커밋하여 더 이상 버전을 변경할 수 없도록 합니다. 이렇게 하면 템플릿 할당 관리자가 준비가 완료되었다는 확인을 받은 후에만 버전을 할당할 수 있습니다.
- 개요 > 검토를 클릭합니다.
- 신뢰할 수 있는 프로필 템플릿이 원하는 대로 구성되어 있는지 확인하십시오.
- 버전을 변경할 수 없음을 확인하려면 체크박스를 클릭하십시오.
- 커미트를 클릭하십시오.
자녀 계정에 신뢰할 수 있는 프로필 템플릿 할당
기업 내 하위 계정에 신뢰할 수 있는 프로필 템플릿을 할당하십시오.
IAM 템플릿은 기업 계정이 아닌 하위 계정과 계정 그룹에만 할당할 수 있습니다.
-
계정 할당을 클릭합니다.
-
템플릿을 적용할 계정과 계정 그룹을 선택합니다.
템플릿을 할당하는 각 하위 계정에서 기업 관리 신뢰 프로필을 생성합니다. 하위 계정의 사용자는 프로필에 있는 기업 관리형 IAM 템플릿의 엔터프라이즈 관리형 태그를 통해 신뢰할 수 있는 프로필이 기업 관리형 IAM 템플릿에서 온 것인지 확인할 수 있습니다.
-
지정을 클릭하십시오.
작업을 실패한 경우, 다시 시도를 클릭합니다.
새 버전 만들기
커밋되었거나 할당된 신뢰 프로필 템플릿을 변경하려면 새 버전을 만드십시오. 최신 버전을 기반으로 새로운 버전을 만들거나, 선택한 다른 버전을 기반으로 새로운 버전을 만들 수 있습니다.
신뢰할 수 있는 프로필 템플릿의 새 버전을 만들려면 다음 단계를 따르십시오
-
IBM Cloud 콘솔에서 [ 관리] > [액세스(IAM)] > [템플릿] 으로 이동합니다.
-
신뢰할 수 있는 프로필 템플릿을 선택하세요.
-
새 버전 아이콘을 클릭하십시오.
.
-
새 버전으로 만들 기본이 될 버전을 선택하세요.
-
새로운 템플릿 이름과 설명을 입력하거나, 이미 사용 중인 것을 그대로 사용해도 됩니다.
새로운 템플릿 이름을 입력하면 이 버전과 모든 이전 버전의 템플릿 이름이 업데이트됩니다. 템플릿 설명은 각 버전별로 별도로 저장됩니다.
-
새로운 신뢰 프로필 이름과 설명을 입력하거나, 이미 사용 중인 것을 그대로 사용해도 됩니다.
새로운 신뢰할 수 있는 프로필 이름을 입력하면, 새 버전을 할당한 후 하위 계정에 표시되던 기존 신뢰할 수 있는 프로필 이름이 대체됩니다.
-
새 버전으로 옮기고 싶은 대상을 선택합니다.
- (선택 사항) 신뢰 관계를 선택합니다.
- (선택 사항) 액세스를 선택합니다.
-
작성을 클릭하십시오.
-
구성에 필요한 다른 조정 사항을 적용하십시오.
-
검토를 클릭하고 새 버전을 적용합니다. 자세한 정보는 신뢰할 수 있는 프로필 템플릿 검토하기를 참고하세요.
신뢰할 수 있는 프로필 템플릿의 새로운 버전을 할당하려면 다음 단계를 완료하십시오
- IBM Cloud 콘솔에서 [ 관리] > [액세스(IAM)] > [템플릿] 으로 이동합니다.
- 신뢰할 수 있는 프로필을 클릭합니다.
- 작업하려는 템플릿에서 " 표 펼치기 " 아이콘(
)을 클릭합니다.
- 현재 하위 계정에 할당된 버전을 선택합니다.
- 할당을 클릭합니다.
- 다른 버전을 할당하려는 계정 또는 계정 그룹 할당에서 업데이트를 클릭합니다.
- “버전 선택”을 클릭하세요.
- 현재 버전을 대체할 버전을 선택합니다.
- 업데이트 를 클릭하십시오.
- 다른 버전을 할당하려는 각 계정 또는 계정 그룹에 대해 이 단계를 반복합니다.
새로 할당된 템플릿 버전이 이전 버전을 대체합니다. 새 버전 할당에 대해 자세히 알아보세요.
할당 제거
템플릿이 할당된 하나 이상의 계정에서 템플릿 할당을 제거할 수 있습니다. 템플릿이 의도한 대로 작동하지 않는 경우 그렇게 할 수 있습니다. 계정에서 템플릿 할당을 제거하면 기본적으로 템플릿의 이전 버전이 복원됩니다. 제거하는 할당이 템플릿의 첫 번째 버전 또는 유일한 버전인 경우, 하위 계정의 신뢰 프로필이 제거됩니다.
과제를 삭제하려면 다음 단계를 따르세요:
- IBM Cloud 콘솔에서 [ 관리] > [액세스(IAM)] > [템플릿] 으로 이동합니다.
- 신뢰할 수 있는 프로필을 클릭하고 신뢰할 수 있는 프로필 템플릿을 선택합니다.
- 과제 업데이트를 클릭합니다.
- 하나 또는 몇 개의 계정에서 할당을 제거하려면, 템플릿 할당을 제거하려는 계정을 선택 해제하십시오.
- 템플릿이 할당된 모든 계정에서 할당을 제거하려면, 모두 할당 해제를 클릭합니다.
CLI를 사용하여 신뢰할 수 있는 프로필 템플릿 만들기
동일한 신뢰 프로필이 필요한 하위 계정이 많은 경우 신뢰 프로필 템플릿을 사용하는 것이 좋습니다. 예를 들어, 조직에 내부 표준이 있거나 업계 규정을 준수해야 할 수도 있습니다.
CLI를 사용하여 신뢰할 수 있는 프로필 템플릿을 생성하려면 다음 단계를 따르십시오
-
신뢰 프로필 템플릿 정의를 구성하는 JSON 파일을 만듭니다. JSON 파일에서 사용할 수 있는 속성에 대한 자세한 정보는 IAM Identity API를 참조하십시오.
다음 예제 JSON 파일은 기업 계정의 사용자 이름(
account_id), 템플릿의 사용자 이름(name), 그리고profile구성을 지정합니다. 이 신뢰할 수 있는 프로필은 데이터베이스 관리자를 위한 것입니다. 특정 사용자는identities에 정의된 대로 템플릿을 적용할 수 있습니다.rules도 정의되어 있어 SAML 속성을 기반으로 프로필에 대한 액세스 권한을 부여합니다.{ "account_id": "5bbe28be34524sdbdaa34d37d1f2294a", "name": "dbadmintemplate", "profile": { "name": "Profile for DB Admins", "description": "allows users to admin db instances", "identities": [ { "type": "user", "identifier": "IBMid-123456789", "accounts": [ "5bbe28be34524sdbdaa34d37d1f2294a" ] } ], "rules": [ { "type": "Profile", "realm_name": "${IDP_REALM_NAME}", "expiration": 43200, "conditions": [ { "claim": "group", "operator": "EQUALS", "value": "\"admins\"" } ] } ] }, "policy_template_references": [ { "id": "Policy Template-12345", "version": 1 } ] } -
다음 샘플 요청에 나와 있는 것처럼 '
trusted-profile-template-create' 명령을 사용하여 신뢰할 수 있는 프로필 템플릿을 만듭니다ibmcloud iam trustedprofile-template-create dbadmintemplate --file /path/to/db_trusted-profile_template.json
CLI를 사용하여 신뢰할 수 있는 프로필 템플릿 업데이트하기
신뢰할 수 있는 프로필 템플릿은 언제든지 업데이트할 수 있습니다. 신뢰할 수 있는 프로필 템플릿의 특정 버전을 업데이트하려면 다음 단계를 완료하십시오
-
JSON 파일을 새로운 신뢰 프로필 템플릿 정의로 업데이트하십시오. JSON 파일에서 사용할 수 있는 속성에 대한 자세한 정보는 IAM Identity API를 참조하십시오.
{ "account_id": "5bbe28be34524sdbdaa34d37d1f2294a", "name": "DBAdministrator", "profile": { "name": "Profile for DB Admins", "description": "allows users to admin db instances", "identities": [ { "type": "user", "identifier": "IBMid-123456789", "accounts": [ "5bbe28be34524sdbdaa34d37d1f2294a" ] } ], "rules": [ { "type": "Profile", "realm_name": "${IDP_REALM_NAME}", "expiration": 43200, "conditions": [ { "claim": "group", "operator": "EQUALS", "value": "\"admins\"" } ] } ] }, "policy_template_references": [ { "id": "Policy Template-12345", "version": 1 } ] }
템플릿 이름을 업데이트하면 모든 버전의 이름이 업데이트됩니다.
{: note}
1. 신뢰할 수 있는 프로필 템플릿의 특정 버전을 업데이트하려면 다음 샘플 요청에 나와 있는 것처럼 ' `trusted-profile-template-version-update` ' 명령을 사용하십시오
```bash {: codeblock}
ibmcloud iam trustedpprofile-template-version-update DBAdministrator 1 --file /path/to/db_trusted-profile_template.json
## CLI를 사용하여 신뢰할 수 있는 프로필 템플릿 커밋하기
{: #commit-trusted-profile-template-cli cli}
신뢰할 수 있는 프로필 템플릿을 검토하고 커밋하여 더 이상 버전 변경이 불가능하도록 합니다. 버전을 커밋하는 것은 하위 계정에 할당하기 전에 필요한 단계입니다. 이렇게 하면 템플릿 할당 관리자가 준비가 완료되었다는 확인을 받은 후에만 버전을 할당할 수 있습니다.
다음 샘플 요청은 `DBAdministrator` 라는 이름의 신뢰 프로파일 템플릿의 버전 `1` 를 커밋합니다
```bash {: codeblock}
ibmcloud iam trusted-profile-template-version-commit DBAdministrator 1
## CLI를 사용하여 신뢰할 수 있는 프로필 템플릿을 하위 계정에 할당하기
{: #assign-trusted-profile-template-cli cli}
기업 내 하위 계정에 신뢰할 수 있는 프로필 템플릿을 할당하십시오.
IAM 템플릿은 기업 계정이 아닌 하위 계정과 계정 그룹에만 할당할 수 있습니다.
{: note}
신뢰할 수 있는 프로필 템플릿에 대한 과제를 생성하려면 다음 단계를 완료하십시오
1. 기업 계정에 신뢰할 수 있는 프로필 템플릿을 나열하고, 하위 계정에 할당하려는 신뢰할 수 있는 프로필 템플릿의 템플릿 이름과 버전 번호를 기록합니다
```bash {: codeblock}
ibmcloud iam trusted-profile-templates
1. `account-trusted profile-assignment-create` 명령을 사용하여 템플릿을 프로젝트( `Account` ) 또는 작업( `AccountGroup` )에 할당하십시오.
ibmcloud iam trusted-profile-assignment-create DBAdministrator 1 AccountGroup 955fc2274567474f8da802d5c376504b
과제가 실패하면, 재시도( `trusted-profile-assignment-update` ) 방법을 사용하십시오.
{: tip}
## CLI를 사용하여 새 버전 생성하기
{: #new-version-trusted-profile-template cli}
커밋되었거나 할당된 신뢰 프로필 템플릿을 변경하려면 새 버전을 만드십시오.
1. JSON 파일을 새로운 신뢰 프로필 템플릿 정의로 업데이트하십시오. JSON 파일에서 사용할 수 있는 속성에 대한 자세한 정보는 [IAM Identity API를](/docs/apis/iam-identity-token-api#create-profile-template-version) 참조하십시오.
1. `trusted-profile-template-version-create` 방법을 사용하여 새 버전을 만듭니다. 다음 샘플 요청은 템플릿 `DBAdministrator` 의 새로운 버전을 만듭니다.
ibmcloud iam trusted-profile-template-version-create DBAdministrator --file /path/to/db_trusted-profile_template.json
## CLI를 사용하여 과제를 업데이트하기
{: #update-assignment-trusted-profile-cli cli}
새 버전으로 마이그레이션하기 위해 과제를 업데이트하거나 실패한 과제를 다시 시도합니다.
새로 할당된 템플릿 버전이 이전 버전을 대체합니다. [새 버전 할당에](/docs/enterprise-management?topic=enterprise-management-working-with-versions#new-version) 대해 자세히 알아보세요.
{: note}
1. 기업 계정에서 신뢰할 수 있는 프로필 할당을 나열하고 업데이트하려는 할당의 프로필 업데이트 날짜( `template_id` )를 기록합니다
ibmcloud iam trusted-profile-assignments
1. 신뢰할 수 있는 프로필 할당을 업데이트하십시오. 작업을 다시 시도하는 경우, 동일한 버전 번호를 사용하십시오. 다음 샘플 요청은 할당된 작업 `ProfileTemplate-cac1b203-5956-4981-bdec-0a4af4feab4d` 을 버전 2로 이전합니다.
ibmcloud iam trusted-profile-assignment-update ProfileTemplate-cac1b203-5956-4981-bdec-0a4af4feab4d 2
## CLI를 사용하여 할당 사항 제거하기
{: #remove-assignment-trusted-profile-cli cli}
템플릿이 할당된 계정이나 계정 그룹에서 템플릿 할당을 제거할 수 있습니다. 템플릿이 의도한 대로 작동하지 않는 경우 그렇게 할 수 있습니다. 계정에서 템플릿 할당을 제거하면 기본적으로 템플릿의 이전 버전이 복원됩니다. 제거하는 할당이 템플릿의 첫 번째 버전 또는 유일한 버전인 경우, 하위 계정의 기업 관리 신뢰 프로필이 제거됩니다.
과제를 삭제하려면 다음 단계를 따르세요:
1. `account-trusted profile-assignments` 방법을 사용하여 계정의 할당 목록을 작성하십시오. 제거하려는 과제에 대한 작업 노트( `ASSIGNMENT_ID` )를 기록해 두십시오.
1. `account-trusted profile-assigment-delete` 방법을 사용하여 과제를 제거하십시오. 다음 샘플 요청은 할당된 작업 `AccountSettingsAssignment-63d65ed159ff463b8ec09ea77d22a05b` 를 제거합니다.
ibmcloud iam account-trusted profile-assignment-delete AccountSettingsAssignment-63d65ed159ff463b8ec09ea77d22a05b
## CLI를 사용하여 버전 삭제하기
{: #delete-trusted-profile-template-version-cli cli}
신뢰할 수 있는 프로필 템플릿 버전을 삭제하기 전에, 그 버전의 템플릿에 대한 모든 할당을 제거해야 합니다. 다음 단계를 완료하여 특정 버전을 삭제하십시오
1. 기업 계정에 있는 신뢰할 수 있는 프로필 템플릿을 나열하고 삭제하려는 템플릿의 이름과 버전 번호를 기록해 두십시오
ibmcloud iam account-trusted profile-templates
1. 버전 삭제:
ibmcloud iam account-trusted profile-template-delete AccountSettingsTemplateUpdated 2
1. 모든 버전을 삭제하려면 이 단계를 반복하십시오. 먼저 각 버전에 대한 할당을 제거해야 합니다.
## API를 사용하여 신뢰할 수 있는 프로필 템플릿 만들기
{: #create-trusted-profile-template-api api}
동일한 신뢰 프로필이 필요한 하위 계정이 많은 경우 신뢰 프로필 템플릿을 사용하는 것이 좋습니다. 예를 들어, 조직에 내부 표준이 있거나 업계 규정을 준수해야 할 수도 있습니다.
API를 사용하여 신뢰할 수 있는 프로필 템플릿을 생성하려면 다음 단계를 완료하십시오
1. 신뢰할 수 있는 프로필 템플릿 정의를 구성합니다. 사용할 수 있는 속성에 대한 자세한 정보는 [IAM Identity API를](/docs/apis/iam-identity-token-api#create-profile-template) 참조하십시오.
다음 예는 기업 계정의 사용자 이름( account_id ), 템플릿의 사용자 이름( name ), 그리고 profile 구성을 지정합니다. 이 신뢰할 수 있는 프로필은 데이터베이스 관리자를 위한 것입니다. 특정 사용자는 identities 에 정의된 대로 템플릿을 적용할 수 있습니다. rules 도 정의되어 있어
SAML 속성을 기반으로 프로필에 대한 액세스 권한을 부여합니다.
{
"account_id": "5bbe28be34524sdbdaa34d37d1f2294a",
"name": "dbadmintemplate",
"profile": {
"name": "Profile for DB Admins",
"description": "allows users to admin db instances",
"identities": [
{
"type": "user",
"identifier": "IBMid-123456789",
"accounts": [
"5bbe28be34524sdbdaa34d37d1f2294a"
]
}
],
"rules": [
{
"type": "Profile",
"realm_name": "${IDP_REALM_NAME}",
"expiration": 43200,
"conditions": [
{
"claim": "group",
"operator": "EQUALS",
"value": "\"admins\""
}
]
}
]
},
"policy_template_references": [
{
"id": "Policy Template-12345",
"version": 1
}
]
}
ProfileClaimRuleConditions condition = new ProfileClaimRuleConditions.Builder()
.claim("blueGroups")
.operator("EQUALS")
.value("\"cloud-docs-dev\"")
.build();
List<ProfileClaimRuleConditions> conditions = new ArrayList<>();
conditions.add(condition);
TrustedProfileTemplateClaimRule claimRule = new TrustedProfileTemplateClaimRule.Builder()
.name("My Rule")
.realmName(realmName)
.type(claimRuleType)
.expiration(43200)
.conditions(conditions)
.build();
TemplateProfileComponentRequest profile = new TemplateProfileComponentRequest.Builder()
.addRules(claimRule)
.name(profileTemplateProfileName)
.description("Trusted profile created from a template")
.build();
CreateProfileTemplateOptions createProfileTemplateOptions = new CreateProfileTemplateOptions.Builder()
.name(profileTemplateName)
.description("IAM enterprise trusted profile template example")
.accountId(enterpriseAccountId)
.profile(profile)
.build();
Response<TrustedProfileTemplateResponse> response = service.createProfileTemplate(createProfileTemplateOptions).execute();
TrustedProfileTemplateResponse trustedProfileTemplateResult = response.getResult();
// Save the id for use by other test methods.
profileTemplateId = trustedProfileTemplateResult.getId();
profileTemplateVersion = trustedProfileTemplateResult.getVersion().longValue();
System.out.println(trustedProfileTemplateResult);
```
```javascript {: javascript codeblock}
const condition = {
claim: "blueGroups",
operator: "EQUALS",
value: "\"cloud-docs-dev\"",
}
const claimRule = {
name: "My Rule",
realm_name: realmName,
type: 'Profile-SAML',
expiration: 43200,
conditions: [condition],
}
const profile = {
rules: [claimRule],
name: "Profile-From-Example-Template",
description: "Trusted profile created from a template",
}
const templateParams = {
name: "Example-Profile-Template",
description: "IAM enterprise trusted profile template example",
accountId: enterpriseAccountId,
profile: profile,
}
try {
const res = await iamIdentityService.createProfileTemplate(templateParams);
profileTemplateEtag = res.headers.etag;
const { result } = res;
profileTemplateId = result.id;
profileTemplateVersion = result.version;
console.log(JSON.stringify(result, null, 2));
} catch (err) {
console.warn(err);
}
```
```python {: python codeblock}
profile_claim_rule_conditions = {}
profile_claim_rule_conditions['claim'] = 'blueGroups'
profile_claim_rule_conditions['operator'] = 'EQUALS'
profile_claim_rule_conditions['value'] = '\"cloud-docs-dev\"'
profile_claim_rule = {}
profile_claim_rule['name'] = 'My Rule'
profile_claim_rule['realm_name'] = 'https://sdk.test.realm/1234'
profile_claim_rule['type'] = 'Profile-SAML'
profile_claim_rule['expiration'] = 43200
profile_claim_rule['conditions'] = [profile_claim_rule_conditions]
profile = {}
profile['name'] = 'Profile-From-Example-Template'
profile['description'] = 'Trusted profile created from a template'
profile['rules'] = [profile_claim_rule]
create_response = iam_identity_service.create_profile_template(
name='Example-Profile-Template',
description='IAM enterprise trusted profile template example',
account_id=enterprise_account_id,
profile=profile,
)
profile_template = create_response.get_result()
print('\ncreate_profile_template() response: ', json.dumps(profile_template, indent=2))
global profile_template_id
profile_template_id = profile_template['id']
global profile_template_version
profile_template_version = profile_template['version']
```
```go {: go codeblock}
profileClaimRuleConditions := new(iamidentityv1.ProfileClaimRuleConditions)
profileClaimRuleConditions.Claim = core.StringPtr("blueGroups")
profileClaimRuleConditions.Operator = core.StringPtr("EQUALS")
profileClaimRuleConditions.Value = core.StringPtr("\"cloud-docs-dev\"")
profileTemplateClaimRule := new(iamidentityv1.TrustedProfileTemplateClaimRule)
profileTemplateClaimRule.Name = core.StringPtr("My Rule")
profileTemplateClaimRule.RealmName = &realmName
profileTemplateClaimRule.Type = &claimRuleType
profileTemplateClaimRule.Expiration = core.Int64Ptr(int64(43200))
profileTemplateClaimRule.Conditions = []iamidentityv1.ProfileClaimRuleConditions{*profileClaimRuleConditions}
profile := new(iamidentityv1.TemplateProfileComponentRequest)
profile.Name = &profileTemplateProfileName
profile.Description = core.StringPtr("Example Profile created from Profile Template")
profile.Rules = []iamidentityv1.TrustedProfileTemplateClaimRule{*profileTemplateClaimRule}
createOptions := &iamidentityv1.CreateProfileTemplateOptions{
Name: &profileTemplateName,
Description: core.StringPtr("Example Profile Template"),
AccountID: &enterpriseAccountID,
Profile: profile,
}
createResponse, response, err := iamIdentityService.CreateProfileTemplate(createOptions)
b, _ := json.MarshalIndent(createResponse, "", " ")
fmt.Println(string(b))
// Grab the ID and Etag value from the response for use in the update operation
profileTemplateId = *createResponse.ID
profileTemplateVersion = *createResponse.Version
profileTemplateEtag = response.GetHeaders().Get("Etag")
```
ProfileTemplate 의 ID와 entity_tag 값을 응답에서 저장하여 업데이트 작업에 사용하십시오.
{ tip}
## API를 사용하여 신뢰할 수 있는 프로필 템플릿 업데이트
{: #update-trusted-profile-template-api api}
신뢰할 수 있는 프로필 템플릿은 언제든지 업데이트할 수 있습니다. JSON 파일에서 사용할 수 있는 속성에 대한 자세한 정보는 [IAM Identity API를](/docs/apis/iam-identity-token-api#update-profile-template-version) 참조하십시오. 신뢰할 수 있는 프로필 템플릿의 특정 버전을 업데이트하려면 다음 단계를 완료하십시오
1. 기업 계정에 신뢰할 수 있는 프로필 템플릿을 나열하고 업데이트하려는 템플릿 버전에 대한 응답에서 `ProfileTemplate` ID와 ETag를 기록합니다.
```bash {: curl codeblock}
curl -X GET 'https://iam.cloud.ibm.com/v1/profile_templates?account_id=5bbe28be34524sdbdaa34d37d1f2294a' -H 'Content-Type: application/json' -H 'Authorization: Bearer $TOKEN'
ListProfileTemplatesOptions listOptions = new ListProfileTemplatesOptions.Builder()
.accountId(enterpriseAccountId)
.build();
Response<TrustedProfileTemplateList> response = service.listProfileTemplates(listOptions).execute();
TrustedProfileTemplateList listResult = response.getResult();
System.out.println(listResult);
const params = {
accountId: enterpriseAccountId,
}
try {
const res = await iamIdentityService.listProfileTemplates(params);
console.log(JSON.stringify(res.result, null, 2));
} catch (err) {
console.warn(err);
}
list_response = iam_identity_service.list_profile_templates(account_id=enterprise_account_id)
profile_template_list = list_response.get_result()
print('\nlist_profile_templates response: ', json.dumps(profile_template_list, indent=2))
listOptions := &iamidentityv1.ListProfileTemplatesOptions{
AccountID: &enterpriseAccountID,
}
listResponse, response, err := iamIdentityService.ListProfileTemplates(listOptions)
b, _ := json.MarshalIndent(listResponse, "", " ")
fmt.Println(string(b))
1. 신뢰할 수 있는 프로필 템플릿 정의를 업데이트합니다.
```bash {: curl codeblock}
curl -X PUT 'https://iam.cloud.ibm.com/v1/profile_templates/{template_id}/versions/{version}' -H 'Content-Type: application/json' -H 'Authorization: Bearer $TOKEN' -d '{ "account_id": "5bbe28be34524sdbdaa34d37d1f2294a", "name": "db admin template", "profile": { "name": "Profile for DB Admins", "description": "allows users to admin db instances", "rules": [ { "type": "Profile", "realm_name": "${IDP_REALM_NAME}", "expiration": 43200, "conditions": [ { "claim": "name", "operator": "EQUALS", "value": ""My Name"" } ] } ] }, "policy_template_references": [ { "id": "Policy Template-12345", "version": 1 } ] }'
```java {: java codeblock}
UpdateProfileTemplateVersionOptions updateOptions = new UpdateProfileTemplateVersionOptions.Builder()
.accountId(enterpriseAccountId)
.templateId(profileTemplateId)
.version(Long.toString(profileTemplateVersion))
.ifMatch(profileTemplateEtag)
.name(profileTemplateName)
.description("IAM enterprise trusted profile template example - updated")
.build();
Response<TrustedProfileTemplateResponse> updateResponse = service.updateProfileTemplateVersion(updateOptions).execute();
TrustedProfileTemplateResponse updateResult = updateResponse.getResult();
// Grab the Etag value from the response for use in the update operation.
profileTemplateEtag = updateResponse.getHeaders().values("Etag").get(0);
System.out.println(updateResult);
const params = {
accountId: enterpriseAccountId,
templateId: profileTemplateId,
version: profileTemplateVersion,
ifMatch: profileTemplateEtag,
name: "Example-Profile-Template",
description: "IAM enterprise trusted profile template example - updated",
}
try {
const res = await iamIdentityService.updateProfileTemplateVersion(params);
profileTemplateEtag = res.headers.etag;
console.log(JSON.stringify(res.result, null, 2));
} catch (err) {
console.warn(err);
}
{
"id": "ProfileTemplate-767fc1f6-c77c-4196-b3d6-a009a5a536e9",
"version": 1,
"account_id": "5bbe28be34524sdbdaa34d37d1f2294a",
"name": "db admin template",
"committed": false,
"profile": {
"name": "Profile for DB Admins",
"description": "allows users to admin db instances",
"rules": [
{
"type": "Profile-SAML",
"realm_name": "${IDP_REALM_NAME}",
"expiration": 43200,
"conditions": [
{
"claim": "name",
"operator": "EQUALS",
"value": "\"My Name\""
}
]
}
]
},
"policy_template_references": [
{
"id": "Policy Template-12345",
"version": "1"
}
],
"created_at": "2023-03-07T13:55:33:428+0000",
"created_by_id": "IBMid-12345678901",
"last_modified_at": "2023-03-07T13:55:33:428+0000",
"last_modified_by_id": "IBMid-12345678901",
"entity_tag": "1-2da85a8f1172fc3527378318d3182778",
"crn": "crn:v1:staging:public:iam-identity::a/5bbe28be34524sdbdaa34d37d1f2294a::template:ProfileTemplate-767fc1f6-c77c-4196-b3d6-a009a5a536e9"
}
{
"id": "ProfileTemplate-767fc1f6-c77c-4196-b3d6-a009a5a536e9",
"version": 1,
"account_id": "5bbe28be34524sdbdaa34d37d1f2294a",
"name": "db admin template",
"committed": false,
"profile": {
"name": "Profile for DB Admins",
"description": "allows users to admin db instances",
"rules": [
{
"type": "Profile-SAML",
"realm_name": "${IDP_REALM_NAME}",
"expiration": 43200,
"conditions": [
{
"claim": "name",
"operator": "EQUALS",
"value": "\"My Name\""
}
]
}
]
},
"policy_template_references": [
{
"id": "Policy Template-12345",
"version": "1"
}
],
"created_at": "2023-03-07T13:55:33:428+0000",
"created_by_id": "IBMid-12345678901",
"last_modified_at": "2023-03-07T13:55:33:428+0000",
"last_modified_by_id": "IBMid-12345678901",
"entity_tag": "1-2da85a8f1172fc3527378318d3182778",
"crn": "crn:v1:staging:public:iam-identity::a/5bbe28be34524sdbdaa34d37d1f2294a::template:ProfileTemplate-767fc1f6-c77c-4196-b3d6-a009a5a536e9"
}
템플릿 이름을 업데이트하면 모든 버전의 이름이 업데이트됩니다.
API를 사용하여 신뢰할 수 있는 프로필 템플릿 커밋하기
신뢰할 수 있는 프로필 템플릿을 검토하고 커밋하여 더 이상 버전을 변경할 수 없도록 하십시오. 버전을 커밋하는 것은 하위 계정에 할당하기 전에 필요한 단계입니다. 이렇게 하면 템플릿 할당 관리자가 준비가 완료되었다는 확인을 받은 후에만 버전을 할당할 수 있습니다.
- 검토하고 커밋하려는 신뢰할 수 있는 프로필 템플릿의 버전을 확인하십시오.
curl -X GET 'https://iam.cloud.ibm.com/v1/profile_templates/{template_id}/versions/{version}' -H 'Content-Type: application/json' -H 'Authorization: Bearer $TOKEN'
GetProfileTemplateVersionOptions getProfileTemplateOptions = new GetProfileTemplateVersionOptions.Builder()
.templateId(profileTemplateId)
.version(Long.toString(profileTemplateVersion))
.build();
Response<TrustedProfileTemplateResponse> response = service.getProfileTemplateVersion(getProfileTemplateOptions).execute();
TrustedProfileTemplateResponse profileTemplateResult = response.getResult();
profileTemplateEtag = response.getHeaders().values("Etag").get(0);
System.out.println(profileTemplateResult);
const params = {
templateId: profileTemplateId,
version: profileTemplateVersion,
}
try {
const res = await iamIdentityService.getProfileTemplateVersion(params);
profileTemplateEtag = res.headers.etag;
console.log(JSON.stringify(res.result, null, 2));
} catch (err) {
console.warn(err);
}
get_response = iam_identity_service.get_profile_template_version(
template_id=profile_template_id, version=str(profile_template_version)
)
profile_template = get_response.get_result()
print('\nget_profile_template response: ', json.dumps(profile_template, indent=2))
global profile_template_etag
profile_template_etag = get_response.get_headers()['Etag']
profile_template_etag is not None
getOptions := &iamidentityv1.GetProfileTemplateVersionOptions{
TemplateID: &profileTemplateId,
Version: core.StringPtr(strconv.FormatInt(profileTemplateVersion, 10)),
}
getResponse, response, err := iamIdentityService.GetProfileTemplateVersion(getOptions)
b, _ := json.MarshalIndent(getResponse, "", " ")
fmt.Println(string(b))
profileTemplateEtag = response.GetHeaders().Get("Etag")
- 답변을 검토하여 커밋할 준비가 되었는지 확인하십시오.
- 신뢰할 수 있는 프로필 템플릿의 버전을 커밋합니다.
curl -X POST 'https://iam.cloud.ibm.com/v1/profile_templates/{template_id}/{version}/commit' -H 'Content-Type: application/json' -H 'Authorization: Bearer $TOKEN'
CommitProfileTemplateOptions commitOptions = new CommitProfileTemplateOptions.Builder()
.templateId(profileTemplateId)
.version(Long.toString(profileTemplateVersion))
.build();
Response<Void> commitResponse = service.commitProfileTemplate(commitOptions).execute();
const commitParams = {
templateId: profileTemplateId,
version: profileTemplateVersion,
}
try {
const res = await iamIdentityService.commitProfileTemplate(commitParams);
} catch (err) {
console.warn(err);
}
commit_response = iam_identity_service.commit_profile_template(
template_id=profile_template_id, version=str(profile_template_version)
)
commitOptions := &iamidentityv1.CommitProfileTemplateOptions{
TemplateID: &profileTemplateId,
Version: core.StringPtr(strconv.FormatInt(profileTemplateVersion, 10)),
}
response, err := iamIdentityService.CommitProfileTemplate(commitOptions)
API를 사용하여 자녀 계정에 신뢰할 수 있는 프로필 템플릿 할당
기업 내 하위 계정에 신뢰할 수 있는 프로필 템플릿을 할당하십시오.
IAM 템플릿은 기업 계정이 아닌 하위 계정과 계정 그룹에만 할당할 수 있습니다.
신뢰할 수 있는 프로필 템플릿에 대한 과제를 생성하려면 다음 단계를 완료하십시오
- 기업 계정에 신뢰할 수 있는 프로필 템플릿을 나열하고 할당하려는 템플릿 버전에 대한 응답에서
ProfileTemplateID와 버전을 기록합니다.
curl -X GET 'https://iam.cloud.ibm.com/v1/profile_templates?account_id=5bbe28be34524sdbdaa34d37d1f2294a' -H 'Content-Type: application/json' -H 'Authorization: Bearer $TOKEN'
ListProfileTemplatesOptions listOptions = new ListProfileTemplatesOptions.Builder()
.accountId(enterpriseAccountId)
.build();
Response<TrustedProfileTemplateList> response = service.listProfileTemplates(listOptions).execute();
TrustedProfileTemplateList listResult = response.getResult();
System.out.println(listResult);
const params = {
accountId: enterpriseAccountId,
}
try {
const res = await iamIdentityService.listProfileTemplates(params);
console.log(JSON.stringify(res.result, null, 2));
} catch (err) {
console.warn(err);
}
list_response = iam_identity_service.list_profile_templates(account_id=enterprise_account_id)
profile_template_list = list_response.get_result()
print('\nlist_profile_templates response: ', json.dumps(profile_template_list, indent=2))
listOptions := &iamidentityv1.ListProfileTemplatesOptions{
AccountID: &enterpriseAccountID,
}
listResponse, response, err := iamIdentityService.ListProfileTemplates(listOptions)
b, _ := json.MarshalIndent(listResponse, "", " ")
fmt.Println(string(b))
ibmcloud iam trusted-profile-templates
Account나AccountGroup에 템플릿을 할당합니다.
curl -X POST 'https://iam.cloud.ibm.com/v1/profile_assignments' -H 'Content-Type: application/json' -H 'Authorization: Bearer $TOKEN' -d '{
"template_id": "ProfileTemplate-cac1b203-5956-4981-bdec-0a4af4feab4d",
"template_version": 1,
"target_type": "Account",
"target": "5bbe28be34524e88a34d37d1f2294a8a"
}'
CreateTrustedProfileAssignmentOptions assignOptions = new CreateTrustedProfileAssignmentOptions.Builder()
.templateId(profileTemplateId)
.templateVersion(profileTemplateVersion)
.targetType("Account")
.target(enterpriseSubAccountId)
.build();
Response<TemplateAssignmentResponse> assignResponse = service.createTrustedProfileAssignment(assignOptions).execute();
TemplateAssignmentResponse assignmentResponseResult = assignResponse.getResult();
// Save the id for use by other test methods.
profileTemplateAssignmentId = assignmentResponseResult.getId();
// Grab the Etag value from the response for use in the update operation.
profileTemplateAssignmentEtag = assignResponse.getHeaders().values("Etag").get(0);
System.out.println(assignmentResponseResult);
const assignParams = {
templateId: profileTemplateId,
templateVersion: profileTemplateVersion,
targetType: "Account",
target: enterpriseSubAccountId,
}
try {
const assRes = await iamIdentityService.createTrustedProfileAssignment(assignParams);
const { result } = assRes;
profileTemplateAssignmentId = result.id;
profileTemplateAssignmentEtag= assRes.headers.etag;
console.log(JSON.stringify(result, null, 2));
} catch (err) {
console.warn(err);
}
assign_response = iam_identity_service.create_trusted_profile_assignment(
template_id=profile_template_id,
template_version=profile_template_version,
target_type='Account',
target=enterprise_subaccount_id,
)
assignment = assign_response.get_result()
print('\ncreate_trusted_profile_assignment() response: ', json.dumps(assignment, indent=2))
global profile_template_assignment_id
profile_template_assignment_id = assignment['id']
global profile_template_assignment_etag
profile_template_assignment_etag = assign_response.get_headers()['Etag']
assignOptions := &iamidentityv1.CreateTrustedProfileAssignmentOptions{
TemplateID: &profileTemplateId,
TemplateVersion: &profileTemplateVersion,
TargetType: core.StringPtr("Account"),
Target: &enterpriseSubAccountID,
}
assignResponse, response, err := iamIdentityService.CreateTrustedProfileAssignment(assignOptions)
b, _ := json.MarshalIndent(assignResponse, "", " ")
fmt.Println(string(b))
// Grab the Etag and id for use by other test methods.
profileTemplateAssignmentEtag = response.GetHeaders().Get("Etag")
profileTemplateAssignmentId = *assignResponse.ID
과제가 실패하면 과제 업데이트 작업을 사용하여 다시 시도하십시오.
API를 사용하여 새 버전 생성하기
커밋되었거나 할당된 신뢰 프로필 템플릿을 변경하려면 새 버전을 만드십시오.
curl -X POST 'https://iam.cloud.ibm.com/v1/profile_templates/{template_id}/versions/' -H 'Content-Type: application/json' -H 'Authorization: Bearer $TOKEN' -d '{
"account_id": "5bbe28be34524sdbdaa34d37d1f2294a",
"name": "db admin template",
"profile": {
"name": "Profile for DB Admins",
"description": "allows users to admin db instances",
"rules": [
{
"type": "Profile",
"realm_name": "${IDP_REALM_NAME}",
"expiration": 43200,
"conditions": [
{
"claim": "name",
"operator": "EQUALS",
"value": "\"My Name\""
}
]
}
]
},
"policy_template_references": [
{
"id": "Policy Template-12345",
"version": 1
}
]
}'
ProfileClaimRuleConditions condition = new ProfileClaimRuleConditions.Builder()
.claim("blueGroups")
.operator("EQUALS")
.value("\"cloud-docs-dev\"")
.build();
List<ProfileClaimRuleConditions> conditions = new ArrayList<>();
conditions.add(condition);
TrustedProfileTemplateClaimRule claimRule = new TrustedProfileTemplateClaimRule.Builder()
.name("My Rule")
.realmName(realmName)
.type(claimRuleType)
.expiration(43200)
.conditions(conditions)
.build();
List<String> accounts = new ArrayList<String>();
accounts.add(enterpriseAccountId);
ProfileIdentityRequest profileIdentity = new ProfileIdentityRequest.Builder()
.identifier(iamId)
.accounts(accounts)
.type("user")
.description("Identity description")
.build();
List<ProfileIdentityRequest> identities = new ArrayList<ProfileIdentityRequest>();
identities.add(profileIdentity);
TemplateProfileComponentRequest profile = new TemplateProfileComponentRequest.Builder()
.addRules(claimRule)
.name(profileTemplateProfileName)
.description("Trusted profile created from a template - new version")
.identities(identities)
.build();
CreateProfileTemplateVersionOptions createOptions = new CreateProfileTemplateVersionOptions.Builder()
.accountId(enterpriseAccountId)
.templateId(profileTemplateId)
.name(profileTemplateName)
.description("IAM enterprise trusted profile template example - new version")
.profile(profile)
.build();
Response<TrustedProfileTemplateResponse> createResponse = service.createProfileTemplateVersion(createOptions).execute();
TrustedProfileTemplateResponse createResult = createResponse.getResult();
// Save the version for use by other test methods.
profileTemplateVersion = createResult.getVersion().longValue();
System.out.println(createResult);
const condition = {
claim: "blueGroups",
operator: "EQUALS",
value: "\"cloud-docs-dev\"",
}
const claimRule = {
name: "My Rule",
realm_name: realmName,
type: 'Profile-SAML',
expiration: 43200,
conditions: [condition],
}
const identity = {
identifier: iamId,
accounts: [enterpriseAccountId],
type: "user",
description: "Identity description",
}
const profile = {
rules: [claimRule],
name: "Profile-From-Example-Template",
description: "Trusted profile created from a template - new version",
identities: [identity],
}
const templateParams = {
templateId: profileTemplateId,
name: "Example-Profile-Template",
description: "IAM enterprise trusted profile template example - new version",
accountId: enterpriseAccountId,
profile: profile,
}
try {
const res = await iamIdentityService.createProfileTemplateVersion(templateParams);
const { result } = res;
profileTemplateVersion = result.version;
console.log(JSON.stringify(result, null, 2));
} catch (err) {
console.warn(err);
}
profile_claim_rule_conditions = {}
profile_claim_rule_conditions['claim'] = 'blueGroups'
profile_claim_rule_conditions['operator'] = 'EQUALS'
profile_claim_rule_conditions['value'] = '\"cloud-docs-dev\"'
profile_claim_rule = {}
profile_claim_rule['name'] = 'My Rule'
profile_claim_rule['realm_name'] = 'https://sdk.test.realm/1234'
profile_claim_rule['type'] = 'Profile-SAML'
profile_claim_rule['expiration'] = 43200
profile_claim_rule['conditions'] = [profile_claim_rule_conditions]
profile_identity = {}
profile_identity['identifier'] = iam_id
profile_identity['accounts'] = [enterprise_account_id]
profile_identity['type'] = 'user'
profile_identity['description'] = 'Identity description'
profile = {}
profile['name'] = 'Profile-From-Example-Template'
profile['description'] = 'Trusted profile created from a template - new version'
profile['rules'] = [profile_claim_rule]
profile['identities'] = [profile_identity]
create_response = iam_identity_service.create_profile_template_version(
template_id=profile_template_id,
name='Example-Profile-Template',
description='IAM enterprise trusted profile template example - new version',
account_id=enterprise_account_id,
profile=profile,
)
profile_template = create_response.get_result()
print('\ncreate_profile_template_version() response: ', json.dumps(profile_template, indent=2))
global profile_template_version
profile_template_version = profile_template['version']
profileClaimRuleConditions := new(iamidentityv1.ProfileClaimRuleConditions)
profileClaimRuleConditions.Claim = core.StringPtr("blueGroups")
profileClaimRuleConditions.Operator = core.StringPtr("EQUALS")
profileClaimRuleConditions.Value = core.StringPtr("\"cloud-docs-dev\"")
profileTemplateClaimRule := new(iamidentityv1.TrustedProfileTemplateClaimRule)
profileTemplateClaimRule.Name = core.StringPtr("My Rule")
profileTemplateClaimRule.RealmName = &realmName
profileTemplateClaimRule.Type = &claimRuleType
profileTemplateClaimRule.Expiration = core.Int64Ptr(int64(43200))
profileTemplateClaimRule.Conditions = []iamidentityv1.ProfileClaimRuleConditions{*profileClaimRuleConditions}
profile := new(iamidentityv1.TemplateProfileComponentRequest)
profile.Name = &profileTemplateProfileName
profile.Description = core.StringPtr("Example Profile created from Profile Template - new version")
profile.Rules = []iamidentityv1.TrustedProfileTemplateClaimRule{*profileTemplateClaimRule}
createOptions := &iamidentityv1.CreateProfileTemplateVersionOptions{
Name: &profileTemplateName,
Description: core.StringPtr("Example Profile Template - new version"),
AccountID: &enterpriseAccountID,
TemplateID: &profileTemplateId,
Profile: profile,
}
createResponse, response, err := iamIdentityService.CreateProfileTemplateVersion(createOptions)
b, _ := json.MarshalIndent(createResponse, "", " ")
fmt.Println(string(b))
// save the new version to be used in subsequent calls
profileTemplateVersion = *createResponse.Version
API를 사용하여 과제를 업데이트하기
새 버전으로 마이그레이션하기 위해 과제를 업데이트하거나 실패한 과제를 다시 시도합니다.
새로 할당된 템플릿 버전이 이전 버전을 대체합니다. 새 버전 할당에 대해 자세히 알아보세요.
TemplateAssignment기업 계정에서 신뢰할 수 있는 프로필 할당을 나열하고 업데이트하려는 할당의 ID와 버전을 기록해 두십시오
curl -X GET 'https://iam.cloud.ibm.com/v1/profile_assignments?account_id=5bbe28be34524sdbdaa34d37d1f2294a' -H 'Content-Type: application/json' -H 'Authorization: Bearer $TOKEN'
ListTrustedProfileAssignmentsOptions listOptions = new ListTrustedProfileAssignmentsOptions.Builder()
.accountId(enterpriseAccountId)
.templateId(profileTemplateId)
.build();
Response<TemplateAssignmentListResponse> listResponse = service.listTrustedProfileAssignments(listOptions).execute();
TemplateAssignmentListResponse listResult = listResponse.getResult();
System.out.println(listResult);
const params = {
accountId: enterpriseAccountId,
templateId: profileTemplateId,
}
try {
const res = await iamIdentityService.listTrustedProfileAssignments(params);
console.log(JSON.stringify(res.result, null, 2));
} catch (err) {
console.warn(err);
}
list_response = iam_identity_service.list_trusted_profile_assignments(
account_id=enterprise_account_id, template_id=profile_template_id
)
assignment_list = list_response.get_result()
print('\nlist_trusted_profile_assignments() response: ', json.dumps(assignment_list, indent=2))
listOptions := &iamidentityv1.ListTrustedProfileAssignmentsOptions{
AccountID: &enterpriseAccountID,
TemplateID: &profileTemplateId,
}
listResponse, response, err := iamIdentityService.ListTrustedProfileAssignments(listOptions)
b, _ := json.MarshalIndent(listResponse, "", " ")
fmt.Println(string(b))
- 신뢰할 수 있는 프로필 할당을 업데이트하십시오. 작업을 다시 시도하는 경우, 동일한 버전 번호를 사용하십시오. 다음 샘플 요청은 과제를 버전 2로 이전합니다.
curl -X PATCH 'https://iam.cloud.ibm.com/v1/profile_assignments/<assignment_id>' -H 'Authorization: Bearer $TOKEN' -H 'Content-Type: application/json' -H 'Authorization: Bearer $TOKEN' -d '{
"template_version": 2
}'
UpdateTrustedProfileAssignmentOptions updateOptions = new UpdateTrustedProfileAssignmentOptions.Builder()
.assignmentId(profileTemplateAssignmentId)
.templateVersion(profileTemplateVersion)
.ifMatch(profileTemplateAssignmentEtag)
.build();
Response<TemplateAssignmentResponse> updateResponse = service.updateTrustedProfileAssignment(updateOptions).execute();
TemplateAssignmentResponse updateResult = updateResponse.getResult();
// Grab the Etag value from the response for use in the update operation.
profileTemplateAssignmentEtag = updateResponse.getHeaders().values("Etag").get(0);
System.out.println(updateResult);
const assignParams = {
assignmentId: profileTemplateAssignmentId,
templateVersion: profileTemplateVersion,
ifMatch: profileTemplateAssignmentEtag,
}
try {
const assRes = await iamIdentityService.updateTrustedProfileAssignment(assignParams);
console.log(JSON.stringify(assRes.result, null, 2));
} catch (err) {
console.warn(err);
}
assign_response = iam_identity_service.update_trusted_profile_assignment(
assignment_id=profile_template_assignment_id,
template_version=profile_template_version,
if_match=profile_template_assignment_etag,
)
assignment = assign_response.get_result()
print('\nupdate_profile_template_assignment response: ', json.dumps(assignment, indent=2))
profile_template_assignment_etag = assign_response.get_headers()['Etag']
updateOptions := &iamidentityv1.UpdateTrustedProfileAssignmentOptions{
AssignmentID: &profileTemplateAssignmentId,
TemplateVersion: &profileTemplateVersion,
IfMatch: &profileTemplateAssignmentEtag,
}
updateResponse, response, err := iamIdentityService.UpdateTrustedProfileAssignment(updateOptions)
b, _ := json.MarshalIndent(updateResponse, "", " ")
fmt.Println(string(b))
// Grab the Etag and id for use by other test methods.
profileTemplateAssignmentEtag = response.GetHeaders().Get("Etag")
API를 사용하여 할당 사항 제거하기
템플릿이 할당된 계정이나 계정 그룹에서 템플릿 할당을 제거할 수 있습니다. 템플릿이 의도한 대로 작동하지 않거나 더 이상 필요하지 않은 경우 그렇게 할 수 있습니다. 계정에서 템플릿 할당을 제거하면 기본적으로 템플릿의 이전 버전이 있는 경우 복원됩니다. 제거하는 할당이 템플릿의 첫 번째 버전 또는 유일한 버전인 경우, 하위 계정에 있는 기업 관리 신뢰 프로필이 제거됩니다.
과제를 삭제하려면 다음 단계를 따르세요:
- 기업 계정에서 신뢰할 수 있는 프로필 할당을 나열하고 제거하려는 할당의 ID(
TemplateAssignment)를 기록해 두십시오.
curl -X GET 'https://iam.cloud.ibm.com/v1/profile_assignments?account_id=5bbe28be34524sdbdaa34d37d1f2294a' -H 'Content-Type: application/json' -H 'Authorization: Bearer $TOKEN'
ListTrustedProfileAssignmentsOptions listOptions = new ListTrustedProfileAssignmentsOptions.Builder()
.accountId(enterpriseAccountId)
.templateId(profileTemplateId)
.build();
Response<TemplateAssignmentListResponse> listResponse = service.listTrustedProfileAssignments(listOptions).execute();
TemplateAssignmentListResponse listResult = listResponse.getResult();
System.out.println(listResult);
const params = {
accountId: enterpriseAccountId,
templateId: profileTemplateId,
}
try {
const res = await iamIdentityService.listTrustedProfileAssignments(params);
console.log(JSON.stringify(res.result, null, 2));
} catch (err) {
console.warn(err);
}
list_response = iam_identity_service.list_trusted_profile_assignments(
account_id=enterprise_account_id, template_id=profile_template_id
)
assignment_list = list_response.get_result()
print('\nlist_trusted_profile_assignments() response: ', json.dumps(assignment_list, indent=2))
listOptions := &iamidentityv1.ListTrustedProfileAssignmentsOptions{
AccountID: &enterpriseAccountID,
TemplateID: &profileTemplateId,
}
listResponse, response, err := iamIdentityService.ListTrustedProfileAssignments(listOptions)
b, _ := json.MarshalIndent(listResponse, "", " ")
fmt.Println(string(b))
- 지정을 제거하십시오.
작업을 제거하면 이전 작업이 활성화될 수 있습니다. 자세한 내용은 템플릿 버전 작업하기를 참고하세요.
curl -X DELETE 'https://iam.cloud.ibm.com/v1/profile_assignments/<assignment_id>' -H 'Authorization: Bearer $TOKEN' }'
DeleteTrustedProfileAssignmentOptions deleteOptions = new DeleteTrustedProfileAssignmentOptions.Builder()
.assignmentId(profileTemplateAssignmentId)
.build();
Response<ExceptionResponse> deleteResponse = service.deleteTrustedProfileAssignment(deleteOptions).execute();
const params = {
assignmentId: profileTemplateAssignmentId,
}
try {
const res = await iamIdentityService.deleteTrustedProfileAssignment(params);
} catch (err) {
console.warn(err);
}
delete_response = iam_identity_service.delete_trusted_profile_assignment(
assignment_id=profile_template_assignment_id
)
deleteOptions := &iamidentityv1.DeleteTrustedProfileAssignmentOptions{
AssignmentID: &profileTemplateAssignmentId,
}
excResponse, response, err := iamIdentityService.DeleteTrustedProfileAssignment(deleteOptions)
API를 사용하여 버전 삭제하기
신뢰할 수 있는 프로필 템플릿 버전을 삭제하기 전에, 그 버전의 템플릿에 대한 모든 할당을 제거해야 합니다. 다음 단계를 완료하여 특정 버전을 삭제하십시오
- 기업 계정에 신뢰할 수 있는 프로필 템플릿을 나열하고 삭제하려는 템플릿 버전에 대한 응답에서
ProfileTemplateID와 버전을 기록해 두십시오.
curl -X GET 'https://iam.cloud.ibm.com/v1/profile_templates?account_id=5bbe28be34524sdbdaa34d37d1f2294a' -H 'Content-Type: application/json' -H 'Authorization: Bearer $TOKEN'
ListProfileTemplatesOptions listOptions = new ListProfileTemplatesOptions.Builder()
.accountId(enterpriseAccountId)
.build();
Response<TrustedProfileTemplateList> response = service.listProfileTemplates(listOptions).execute();
TrustedProfileTemplateList listResult = response.getResult();
System.out.println(listResult);
const params = {
accountId: enterpriseAccountId,
}
try {
const res = await iamIdentityService.listProfileTemplates(params);
console.log(JSON.stringify(res.result, null, 2));
} catch (err) {
console.warn(err);
}
list_response = iam_identity_service.list_profile_templates(account_id=enterprise_account_id)
profile_template_list = list_response.get_result()
print('\nlist_profile_templates response: ', json.dumps(profile_template_list, indent=2))
listOptions := &iamidentityv1.ListProfileTemplatesOptions{
AccountID: &enterpriseAccountID,
}
listResponse, response, err := iamIdentityService.ListProfileTemplates(listOptions)
b, _ := json.MarshalIndent(listResponse, "", " ")
fmt.Println(string(b))
- 버전 삭제:
curl -X DELETE 'https://iam.cloud.ibm.com/v1/profile_templates/{template_id}/versions/{version}' -H 'Content-Type: application/json' -H 'Authorization: Bearer $TOKEN'
DeleteProfileTemplateVersionOptions deleteOptions = new DeleteProfileTemplateVersionOptions.Builder()
.templateId(profileTemplateId)
.version("1")
.build();
Response<Void> deleteResponse = service.deleteProfileTemplateVersion(deleteOptions).execute();
const params = {
templateId: profileTemplateId,
version: 1,
}
try {
const res = await iamIdentityService.deleteProfileTemplateVersion(params);
} catch (err) {
console.warn(err);
}
delete_response = iam_identity_service.delete_profile_template_version(
template_id=profile_template_id, version='1'
)
deleteOptions := &iamidentityv1.DeleteProfileTemplateVersionOptions{
TemplateID: &profileTemplateId,
Version: core.StringPtr("1"),
}
response, err := iamIdentityService.DeleteProfileTemplateVersion(deleteOptions)
API를 사용하여 모든 버전을 삭제
먼저 각 버전에 대한 할당을 제거해야 합니다.
curl -X DELETE 'https://iam.cloud.ibm.com/v1/profile_templates/ProfileTemplate-767fc1f6-c77c-4196-b3d6-a009a5a536e9' -H 'Content-Type: application/json' -H 'Authorization: Bearer $TOKEN'
DeleteAllVersionsOfProfileTemplateOptions deleteTeplateOptions = new DeleteAllVersionsOfProfileTemplateOptions.Builder()
.templateId(profileTemplateId)
.build();
Response<Void> deleteResponse = service.deleteAllVersionsOfProfileTemplate(deleteTeplateOptions).execute();
const params = {
templateId: profileTemplateId,
}
try {
const res = await iamIdentityService.deleteAllVersionsOfProfileTemplate(params);
} catch (err) {
console.warn(err);
}
delete_response = iam_identity_service.delete_all_versions_of_profile_template(
template_id=profile_template_id
)
deleteOptions := &iamidentityv1.DeleteAllVersionsOfProfileTemplateOptions{
TemplateID: &profileTemplateId,
}
response, err := iamIdentityService.DeleteAllVersionsOfProfileTemplate(deleteOptions)