기업 관리 설정 템플릿 만들기

자식 계정이 많은 기업에서는 각 계정에 대해 IAM 설정을 수동으로 구성하는 데 시간이 많이 걸리고 오류가 발생할 수 있습니다. 설정 템플릿을 사용하여 기업 내 모든 계정이 조직의 보안 요구 사항을 준수하는지 확인하십시오.

하나의 설정 템플릿만 계정 또는 계정 그룹에 할당할 수 있습니다. 대부분의 계정에 적용되는 설정 템플릿을 만들고, 특별한 요구 사항이 있는 계정에만 적용되는 새로운 템플릿을 만듭니다. 예를 들어, 운영 환경 계정에는 더 엄격한 다요소 인증(MFA) 요구 사항이 있을 수 있습니다.

설정 템플릿을 할당하면 IAM 아이덴티티 서비스에서 관리자 역할을 가진 하위 계정 사용자는 여전히 자신의 계정에 대한 설정을 관리할 수 있습니다. 템플릿에 정의된 설정과 계정 내에서 관리되는 설정 사이에 상충되는 설정이 있는 경우, 계정에 더 엄격한 설정이 적용됩니다. 이는 더 제한적인 설정이 우선권을 가지며, 그 특정 계정에 대해 적용된다는 것을 의미합니다.

시작하기 전에

  • 기업 관리형 IAM 템플릿이 기업을 더 안전하게 만드는 방법에 대해 알아보려면 기업 관리형 IAM 액세스의 작동 방식을 참조하십시오.

  • 기업 계정의 구성원이 되어 기업 관리 IAM 템플릿을 생성하고 할당할 수 있습니다.

  • 기업 관리형 IAM 템플릿을 생성하려면 다음 액세스 권한이 할당되어 있는지 확인하십시오

    • 모든 IAM 계정 관리 서비스에서 ‘템플릿 관리자’ 역할을 가진 정책
  • 기업 관리 IAM 템플릿을 하위 계정에 할당하려면 다음 액세스 권한이 할당되어 있는지 확인하십시오

    • 모든 IAM 계정 관리 서비스에 대한 템플릿 할당 관리자 역할이 있는 정책
    • 엔터프라이즈 서비스에서 최소한 뷰어 역할이 있는 정책

    기본적으로, 계정 소유자를 포함하여 템플릿 관리자 또는 템플릿 할당 관리자 역할이 있는 사용자는 없습니다.

  • 기업 내 신규 및 기존 계정은 기업 관리형 IAM에 가입해야 합니다. 더 자세한 정보를 원하시면, 기업 관리형 IAM을 선택하는 방법을 참고하세요.

  • 기업 관리 설정이 덜 엄격하거나 제거된 경우, 하위 계정 수준에서 정의된 설정이 적용됩니다.

설정 템플릿 만들기

동일한 IAM 설정이 필요한 하위 계정이 많은 경우 설정 템플릿을 사용하는 것을 고려해 보십시오. 예를 들어, 조직에 내부 표준이 있거나 업계 규정을 준수해야 할 수도 있습니다.

설정 템플릿을 만들려면 다음 단계를 따르십시오

  1. IBM Cloud 에서 [관리] > [액세스(IAM)] > [템플릿] 으로 이동합니다.
  2. 설정 > 만들기를 클릭합니다.
  3. 기업 사용자를 위한 설정의 목적을 설명하는 설정 템플릿의 이름과 설명을 입력합니다.
  4. 작성을 클릭하십시오.

(선택 사항) IAM 계정 설정 추가

자회사 계정에서 IAM 계정 설정을 정의하여 비즈니스 및 규제 요건을 충족하도록 기업을 맞춤화하십시오.

계정 초대에 대한 도메인 제한

기본적으로 모든 도메인의 이메일 주소로 계정 초대를 보낼 수 있습니다. 그러나 사용자 초대 제한 설정을 사용 설정하면 지정된 허용 도메인에 속한 이메일 주소로만 초대를 제한할 수 있습니다. 특정 도메인에 대한 제한을 적용하려면 다음 단계를 따르십시오

  1. 계정 섹션에서 사용자 초대 제한 설정을 사용 설정합니다. 이 설정을 사용하도록 설정하면 하위 계정의 사용자 초대 페이지에서 초대를 지정된 허용 도메인의 이메일 주소로 제한합니다.
  2. 템플릿 및 하위 계정 설정이 적용되는 방식을 결정하려면 더 엄격함 또는 더 유연함을 선택합니다.
  3. 편집을 클릭하여 기존 도메인을 수정하거나 허용 목록에 새 도메인을 추가합니다. 이 기능은 계정의 보안을 강화하는 동시에 언제든지 업데이트하고 필요에 따라 도메인을 추가할 수 있는 유연성을 제공합니다.

도메인 제한사항은 이메일 패턴을 설정하여 구현됩니다. 예를 들어, **@ibm.com, **@*.ibm.com, **@?.ibm.com. 단일 별표 *는 문자열에서 0개 이상의 문자 시퀀스를 나타냅니다. 단, 마침표 .나 at 기호 @가 있는 경우 시퀀스가 종료됩니다. 두 개의 별표(**)는 제한 없이 문자열에 있는 0개 이상의 문자 시퀀스를 나타냅니다. 물음표(?)는 단일 문자를 나타냅니다.

예시를 자세히 살펴보면 **@*.ibm.com. 이메일 주소의 사용자 이름 부분은 **을(를) 지정합니다. 시퀀스가 .에 의해 제한되지 않으므로 my.name.is.bob@us.ibm.com과(와) 같은 이메일 주소가 유효합니다. 서브도메인 us도 문자의 문자열이므로 유효합니다. 여기서 시퀀스는 .(으)로 끝납니다.

사용자 공개 범위 제한

기본적으로 계정의 모든 사용자는 사용자 페이지에서 다른 모든 사용자를 볼 수 있습니다. 하지만 사용자 목록 표시 제한 설정을 활성화하면 표시되는 사용자를 제어하여 각 사용자가 자신이 직접 연결된 계정원만 볼 수 있도록 할 수 있습니다.

특정 사용자에게 제한을 적용하려면 계정 섹션에서 사용자 목록 공개 범위 제한 설정을 사용 설정합니다. 이 템플릿이 할당된 하위 계정에서 사용자가 다른 멤버를 보는 방식을 제어할 수 있습니다.

사용자가 API 키를 작성하지 않도록 제한

기본적으로 계정의 모든 구성원은 IBM Cloud® API 키를 작성할 수 있습니다. 그러나 API 키 생성 설정을 사용하면 올바른 액세스 권한을 가진 회원만 사용자 API 키를 생성할 수 있도록 액세스를 제한할 수 있습니다.

특정 하위 계정의 사용자가 항상 수동으로 로그인하도록 하려면 API 키 생성 기능을 제한하는 것이 타당합니다. 즉, API 키를 사용하여 사용자를 자동으로 로그인시킬 수 있는 자동화 스크립트가 실행되는 것을 원치 않는다는 의미입니다. API 키에 대한 자세한 정보는 사용자 API 키 관리를 참조하십시오.

‘API 키 생성 제한’ 설정을 활성화하면, 계정 소유자를 포함하여 해당 계정의 사용자는 API 키를 생성하기 위해 특정 권한이 필요합니다. API 키를 작성할 수 있는 사용자를 제한하려면 다음 단계를 사용하십시오.

이 설정을 사용으로 설정하면 사용자 API 키의 작성에만 영향을 줍니다. 서비스 ID에 대한 API 키에는 영향을 주지 않습니다.

  1. 계정 섹션에서 API 키 생성 제한 설정을 활성화합니다.
  2. 확인하려면 예를 클릭하십시오.

사용자가 API 키를 생성하지 못하도록 제한하는 설정이 활성화되었으므로, 이제 특정 사용자가 계속해서 사용자 API 키를 생성할 수 있도록 필요한 액세스 권한을 부여하는 액세스 그룹 템플릿을 생성할 수 있습니다. 계정 소유자도 이 명시적인 접근 권한을 가지고 있어야 한다는 점을 기억하십시오. 자세한 내용은 제한이 활성화된 API 키 생성에 대한 액세스 권한 할당을 참고하세요.

사용자가 서비스 ID를 작성하지 않도록 제한

기본적으로는 계정의 모든 구성이 서비스 ID를 작성할 수 있습니다. 그러나 서비스 ID 생성 설정을 사용하면 올바른 액세스 권한을 가진 회원만 서비스 ID를 생성할 수 있도록 액세스를 제한할 수 있습니다. 서비스 ID에 대한 자세한 정보는 서비스 ID 작성 및 작업을 참조하십시오.

서비스 ID 생성 설정을 활성화하면, 하위 계정의 사용자는 계정 소유자를 포함하여 서비스 ID를 생성하기 위해 특정 접근 권한이 필요합니다. 서비스 ID를 작성할 수 있는 사용자를 제한하려면 다음 단계를 사용하십시오.

  1. 계정 섹션에서 서비스 ID 생성 제한 설정을 활성화합니다.
  2. 확인하려면 예를 클릭하십시오.

사용자가 서비스 ID를 생성하지 못하도록 제한하는 설정이 활성화되었으므로, 이제 특정 사용자가 계속해서 서비스 ID를 생성할 수 있도록 필요한 액세스 권한을 부여하는 액세스 그룹 템플릿을 생성할 수 있습니다. 계정 소유자도 이 명시적인 접근 권한을 가지고 있어야 한다는 점을 기억하십시오. 자세한 내용은 ‘제한 사항이 활성화된 상태에서 서비스 ID 생성 권한 할당’을 참조하십시오.

특정 IP 주소 허용

기본적으로 모든 IP 주소를 사용하여 IBM Cloud® 콘솔에 로그인하고 클래식 인프라 API에 액세스할 수 있습니다. 어떤 IP 주소에 접근 권한을 부여할지, 어떤 IP 주소를 차단할지 지정할 수 있습니다. 이 접근 권한을 하위 계정에 지정할 수 있습니다. 현재는 공인 IP 주소만 지원됩니다.

IBM Cloud 계정에 특정 IP 주소만 액세스하도록 허용하면 사용자는 IBM Cloud Shell CLI에 액세스할 수 없습니다. Cloud Shell 가 공유 플랫폼에서 호스팅되기 때문에 IP 주소 허용 목록에 포함되지 않습니다.

어린이 계정 관리자는 개별 사용자에 대한 IP 주소 제한을 설정할 수 있습니다. 계정과 사용자 모두에 대해 IP 주소 제한이 설정된 경우, IAM 토큰을 생성하려면 해당 IP 주소가 두 조건 모두에 부합해야 합니다.

모든 사용자를 특정 IP 주소 사용으로만 제한하려면 다음 단계를 완료하십시오.

  1. '계정' 섹션에서 'IP 주소 액세스 제한' 설정을 활성화하세요.

  2. IP 주소를 입력하십시오. 나열된 IP 주소는 하위 계정의 사용자가 IBM Cloud® 에 로그인할 수 있는 유일한 주소입니다.

    단일 IP 주소 17.5.7.8, IP 주소 범위 17.5.7.8 - 17.5.9.5, IP 서브넷 17.5.7.8.0/16 또는 네트워크 구역 networkZoneName을(를) 입력할 수 있습니다. IPv4 또는 IPv6 주소를 사용하고 쉼표를 사용하여 여러 개의 값을 구분해야 합니다. 이미 존재하는 IP 주소 제한이 있는 경우, 자원은 제한을 대체합니다.

  3. 저장 을 클릭하십시오.

어린이 계정은 기업 관리 목록에 있는 IP의 일부에 대한 접근을 제한할 수 있습니다. 예를 들어, 생산자 계정의 관리자가 좀 더 세분화된 허용 목록을 지정할 수 있습니다.

(선택 사항) 인증 설정 추가

다음 정보는 자녀 계정에서 MFA를 활성화하기 전에 고려해야 할 사항으로, 자녀 계정의 모든 사용자에게 어떤 영향을 미치는지 알 수 있도록 도와줍니다

  • 계정의 모든 사용자에 대해 MFA를 활성화하면 해당 계정의 모든 구성원에게 영향을 미칩니다. 여러 개의 IBM Cloud 계정에 가입되어 있는 사용자는 MFA가 활성화된 계정의 리소스를 사용하지 않더라도 다음 번 로그인 시 MFA에 등록해야 합니다.
  • 사용자의 API 키 및 서비스 ID는 MFA가 사용으로 설정된 이후에도 계속 작동합니다.
  • 자녀 계정의 MFA는 사용자 로그인에 적용되지만, API 호출에는 적용되지 않습니다. 사용자가 해당 계정의 리소스에 대해 API 호출 권한을 가지고 있는 경우, MFA 절차를 거치지 않고도 API 호출을 수행할 수 있습니다. 사용자가 다른 계정에 속한 경우 사용자는 MFA를 요구하지 않은 계정의 API 키를 사용하여 계정의 리소스에 대한 API 호출을 작성할 수 있습니다.
  • 계정의 사용자를 위한 통신 및 지원 전략을 계획하십시오.
    • 비즈니스에 미치는 영향을 최소한으로 줄일 수 있도록 MFA를 사용으로 설정하려는 날짜 및 시간을 선택하십시오.
    • MFA를 활성화한 후, 계정 내 사용자에게 설정 방법에 대한 정보를 알리십시오.

MFA 활성화는 이미 로그인한 사용자에게 영향을 미치지 않습니다. MFA는 로그인 시에만 적용되기 때문입니다. 자녀 계정 사용자에게 다단계 인증(MFA)이 활성화되었음을 반드시 알리고, 다음 로그인 시 사용자에게 미치는 영향을 설명해 주십시오.

설정 템플릿에서 MFA를 활성화하려면 다음 단계를 완료하십시오

  1. '인증' 섹션으로 이동하세요.
  2. 계정에서 활성화할 MFA 유형을 선택하세요. MFA 옵션에 대한 자세한 정보는 MFA 옵션을 참고하세요.

기업 관리 설정이 덜 엄격하거나 제거된 경우, 하위 계정에 의해 정의된 MFA 수준이 적용됩니다. 예를 들어, 프로덕션 하위 계정의 관리자가 기업 관리 설정 템플릿에 정의된 것보다 더 엄격한 수준의 MFA를 지정할 수 있습니다.

(선택 사항) 로그인 세션 설정 추가

사용자가 사용자 정의된 간격마다 로그인 자격 증명을 입력하도록 요구함으로써, 기업 내 계정의 보안을 강화하십시오. 사용자가 다시 로그인해야 하는 활성 세션 지속 시간을 선택할 수 있습니다. 또한 사용자가 세션에서 로그아웃되어 인증 정보를 다시 입력해야 하기 전까지 사용자가 비활성인 기간을 선택할 수도 있습니다.

사용자가 여러 계정의 구성원인 경우 각 설정의 가장 낮은 값이 해당 세션에 적용됩니다. 예를 들어, 한 사용자가 dev account 과 prod account 라는 두 계정의 회원입니다. prod account 의 비활성 타임아웃이 15분이고, dev account 의 비활성 타임아웃이 30분인 경우, 두 계정 모두에 15분 비활성 타임아웃이 적용됩니다.

활성 세션의 지속 시간 설정

활성 세션은 사용자가 자신의 계정에서 지속적으로 작업하는 기간입니다. 활성 세션을 측정하는 방법은 비활성 한계로 인해 세션 로그아웃 한계 기간에 따라 다릅니다. 예를 들어, 로그아웃을 2시간으로 설정하면 사용자는 2시간 동안 한 번 계정과 상호작용해야 합니다.

활성 세션 설정을 정의하려면 다음 단계를 완료하십시오

  1. IBM Cloud® 콘솔에서 관리 > 접근(IAM) > 템플릿 > 설정을 클릭합니다.
  2. 설정 템플릿을 선택하세요.
  3. 로그인 세션을 클릭합니다.
  4. ‘로그인 세션’ 섹션으로 이동한 후, ‘활성 세션’ 타일에서 ‘ 편집 ’ 아이콘 편집 아이콘 을 클릭합니다.
  5. 시간 한계를 입력하십시오. 세션이 지속될 수 있는 최장 시간은 720시간입니다.
  6. 저장을 클릭하십시오.

설정 템플릿 검토

설정 템플릿을 검토하고 커밋하여 버전에서 더 이상 변경할 수 없도록 합니다. 이렇게 하면 템플릿 할당 관리자가 준비가 완료되었다는 확인을 받을 때 버전을 할당했는지 확인할 수 있습니다.

  1. 개요 > 검토를 클릭합니다.
  2. 설정 템플릿이 원하는 대로 구성되어 있는지 확인하십시오.
  3. 버전을 편집할 수 없음을 확인하려면 체크박스를 클릭하십시오.
  4. 커미트를 클릭하십시오.

하위 계정에 설정 템플릿 할당

기업 내에서는 한 번에 하나의 설정 템플릿 버전에 대해서만 할당할 수 있습니다. 동일한 설정 템플릿의 다른 버전을 할당할 수 있지만, 기업에서 여러 설정 템플릿을 사용할 수는 없습니다. 생산 계정과 테스트 계정처럼 요구 사항이 다른 계정에 다른 버전을 할당할 수 있습니다.

기업 계정에는 IAM 템플릿을 할당할 수 없고, 하위 계정에만 할당할 수 있습니다.

설정 템플릿을 할당하려면 다음 단계를 완료하십시오

  1. IBM Cloud® 콘솔에서 관리 > 접근(IAM) > 템플릿 > 설정을 클릭합니다.
  2. 설정 템플릿을 선택하세요.
  3. 계정 할당을 클릭합니다.
  4. 기업 내의 특정 계정 또는 전체 계정 그룹을 선택합니다.

계정 그룹을 선택하면, 그 계정 그룹에 추가하는 모든 미래의 계정이 그 그룹에 할당된 설정을 상속받습니다.

  1. 계정 할당을 클릭합니다.

작업을 실패한 경우, 다시 시도를 클릭합니다.

새 버전 만들기

설정 템플릿의 새 버전을 만들려면 다음 단계를 따르십시오

  1. IBM Cloud® 콘솔에서 관리 > 접근(IAM) > 템플릿 > 설정을 클릭합니다.

  2. 설정 템플릿을 선택하세요.

  3. 새 버전 아이콘을 클릭하십시오. 새 버전 아이콘.

  4. 새로운 템플릿 이름과 설명을 입력하거나, 이미 사용 중인 것을 그대로 사용해도 됩니다.

    새로운 템플릿 이름을 입력하면 이 버전과 모든 이전 버전의 템플릿 이름이 업데이트됩니다. 템플릿 설명은 각 버전별로 별도로 저장됩니다.

  5. 새 버전으로 옮기고 싶은 설정을 선택하세요.

  6. 작성을 클릭하십시오.

  7. 구성에 필요한 기타 조정 사항을 적용하십시오.

  8. 검토를 클릭하고 새 버전을 적용합니다. 자세한 내용은 액세스 그룹 템플릿 검토하기를 참고하세요.

설정 템플릿의 새 버전을 할당하려면 다음 단계를 따르십시오

  1. IBM Cloud 콘솔에서 [ 관리] > [액세스(IAM)] > [템플릿] 으로 이동합니다.
  2. 설정 을 클릭하십시오.
  3. 작업하려는 템플릿에서 " 표 펼치기 " 아이콘( 표 펼치기 아이콘 )을 클릭합니다.
  4. 하위 계정에 할당된 버전을 선택합니다.
  5. 할당을 클릭합니다.
  6. 다른 버전을 할당하려는 계정 또는 계정 그룹 할당에서 업데이트를 클릭합니다.
  7. “버전 선택”을 클릭하세요.
    1. 현재 버전을 대체할 버전을 선택합니다.
  8. 업데이트 를 클릭하십시오.
  9. 다른 버전을 할당하려는 각 계정 또는 계정 그룹에 대해 이 단계를 반복합니다.

새로 할당된 템플릿 버전이 이전 버전을 대체합니다. 새 버전 할당에 대해 자세히 알아보세요.

할당 제거

템플릿이 할당된 계정이나 계정 그룹에서 템플릿 할당을 제거할 수 있습니다. 템플릿이 의도한 대로 작동하지 않는 경우 그렇게 할 수 있습니다. 계정에서 템플릿 할당을 제거하면 기본적으로 템플릿의 이전 버전이 복원됩니다. 제거한 할당이 템플릿의 첫 번째 버전 또는 유일한 버전인 경우, 하위 계정에 할당된 설정 환경설정이 제거됩니다.

과제를 삭제하려면 다음 단계를 따르세요:

  1. IBM Cloud® 콘솔에서 관리 > 접근(IAM) > 템플릿 > 설정을 클릭합니다.
  2. 설정을 클릭하고 설정 템플릿을 선택합니다.
  3. 할당을 클릭합니다.
  4. 작업 아이콘 제거 할당을 제거하려는 계정 또는 계정 그룹에서 할당 취소( 행동 ) 아이콘을 클릭합니다.

모든 설정 템플릿 할당을 제거하면 하위 계정 수준에서 정의된 설정이 적용됩니다.

설정 템플릿 삭제하기

설정 템플릿을 삭제하기 전에 템플릿의 모든 버전에 대한 모든 할당을 제거해야 합니다. 설정 템플릿을 삭제하면 모든 버전이 삭제됩니다.

설정 템플릿을 삭제하려면 다음 단계를 따르십시오

  1. IBM Cloud® 콘솔에서 관리 > 접근(IAM) > 템플릿 > 설정을 클릭합니다.
  2. 설정 을 클릭하십시오.
  3. 삭제하려는 설정 템플릿의 ' 행동 ' 아이콘( 작업 아이콘 )을 클릭합니다.
  4. 템플릿 삭제를 클릭합니다.
  5. 설정 템플릿을 삭제하시겠습니까? 확인하십시오.

버전 삭제

다음 단계를 완료하여 특정 버전을 삭제할 수도 있습니다 설정 템플릿을 삭제하려면 다음 단계를 따르십시오

  1. IBM Cloud® 콘솔에서 관리 > 접근(IAM) > 템플릿 > 설정을 클릭합니다.
  2. 설정 을 클릭하십시오.
  3. 작업하려는 템플릿에서 " 표 펼치기 " 아이콘( 표 펼치기 아이콘 )을 클릭합니다.
  4. 삭제하려는 버전의 행동 아이콘 작업 아이콘 을 클릭합니다.
  5. 버전 삭제를 클릭합니다.
  6. 이 버전을 삭제하시겠습니까? 확인하십시오.

CLI를 사용하여 설정 템플릿 만들기

동일한 IAM 설정이 필요한 하위 계정이 많은 경우 설정 템플릿을 사용하는 것을 고려해 보십시오. 예를 들어, 조직에 내부 표준이 있거나 업계 규정을 준수해야 할 수도 있습니다.

CLI를 사용하여 설정 템플릿을 생성하려면 다음 단계를 따르십시오

  1. 설정 템플릿 정의를 구성하는 JSON 파일을 만듭니다. JSON 파일에서 사용할 수 있는 속성에 대한 자세한 정보는 IAM Identity API를 참조하십시오.

    다음 예제 JSON 파일은 기업 계정의 account_id, 템플릿의 name, account_settings 를 지정합니다. API 키 생성은 아이덴티티 서비스에서 API 키 생성자 역할을 가진 사용자로 제한됩니다. 서비스 ID 생성은 제한이 없으므로, 설정 템플릿이 할당된 계정에서 모든 회원이 서비스 ID를 생성할 수 있습니다. ID당 최대 세션 수는 5 로 설정되어 있으며, 다중 인증은 LEVEL3 로 설정되어 있어 모든 사용자가 U2F MFA를 사용해야 합니다.

    {
       "account_id": "5bbe28be34524sdbdaa34d37d1f2294a",
       "name": "AccountSettingsTemplate",
       "account_settings": {
          "restrict_create_platform_apikey": "RESTRICTED",
          "restrict_create_service_id":  "NOT_RESTRICTED",
          "max_sessions_per_identity": 5,
          "mfa": "LEVEL3",
       }
    }
    
  2. 다음 샘플 요청에 나와 있는 것처럼 ' account-settings-template-create ' 명령을 사용하여 설정 템플릿을 만듭니다

    ibmcloud iam account-settings-template-create AccountSettingsTemplate --file /path/to/account_settings_template.json
    

CLI를 사용하여 설정 템플릿 업데이트하기

설정 템플릿을 적용하기 전에 언제든지 업데이트할 수 있습니다. 특정 버전의 계정 설정 템플릿을 업데이트하려면 다음 단계를 완료하십시오

  1. JSON 파일을 새로운 설정 템플릿 구성으로 업데이트하십시오. JSON 파일에서 사용할 수 있는 속성에 대한 자세한 정보는 IAM Identity API를 참조하십시오.

    다음 예제 JSON 파일은 기업 계정의 account_id, 템플릿의 name, account_settings 를 지정합니다. 새로운 구성은 MFA를 NONE 로 재설정하고 다른 설정을 제거합니다.

    {
     "account_id": "5bbe28be34524sdbdaa34d37d1f2294a",
     "name": "AccountSettingsTemplateUpdated",
     "account_settings": {
         "mfa": "NONE",
     },
    }
    

    템플릿 이름을 업데이트하면 모든 버전의 이름이 업데이트됩니다.

  2. 계정 설정 템플릿의 특정 버전을 업데이트하려면 다음 샘플 요청에 나와 있는 것처럼 account-settings-template-version-update 명령을 사용하십시오

    ibmcloud iam account-settings-template-version-update AccountSettingsTemplateUpdated 1 --file /path/to/account_settings_template.json
    

설정 템플릿 적용하기

설정 템플릿을 검토하고 커밋하여 버전에서 더 이상 변경할 수 없도록 합니다. 버전을 커밋하는 것은 하위 계정에 할당하기 전에 필요한 단계입니다. 이렇게 하면 템플릿 할당 관리자가 준비가 완료되었다는 확인을 받은 후에만 버전을 할당할 수 있습니다.

다음 샘플 요청은 AccountSettingsTemplateUpdated 라는 설정 템플릿의 버전 1 를 커밋합니다

ibmcloud iam account-settings-template-commit AccountSettingsTemplateUpdated 1

CLI를 사용하여 하위 계정에 설정 템플릿 할당

기업 내에서는 한 번에 하나의 설정 템플릿 버전에 대해서만 할당할 수 있습니다. 동일한 설정 템플릿의 다른 버전을 할당할 수 있지만, 기업에서 여러 설정 템플릿을 사용할 수는 없습니다. 생산 계정과 테스트 계정처럼 요구 사항이 다른 계정에 다른 버전을 할당할 수 있습니다.

기업 계정에는 IAM 템플릿을 할당할 수 없고, 하위 계정에만 할당할 수 있습니다.

계정 설정 템플릿에 대한 할당을 생성하려면 다음 단계를 완료하십시오

  1. 기업 계정에 설정 템플릿을 나열하고 하위 계정에 할당할 설정 템플릿의 템플릿 이름과 버전 번호를 기록합니다

    ibmcloud iam account-settings-templates
    
  2. account-settings-assignment-create 명령을 사용하여 템플릿을 프로젝트( Account ) 또는 작업( AccountGroup )에 할당하십시오.

    ibmcloud iam account-settings-assignment-create AccountSettingsTemplateUpdated 1 AccountGroup 955fc2274567474f8da802d5c376504b
    

과제가 실패하면, 재시도( account-settings-assigment-update ) 방법을 사용하십시오.

CLI를 사용하여 새 버전 생성하기

커밋된 버전을 업데이트해야 할 경우, 계정 설정 템플릿의 새 버전을 만듭니다. 새 버전을 생성하려면 다음 단계를 따르십시오.

  1. JSON 파일을 새로운 설정 템플릿 구성으로 업데이트하십시오. JSON 파일에서 사용할 수 있는 속성에 대한 자세한 정보는 IAM Identity API를 참조하십시오.

  2. account-settings-template-version-create 방법을 사용하여 새 버전을 만듭니다. 다음 샘플 요청은 템플릿 AccountSettingsUpdated 의 새로운 버전을 만듭니다.

    ibmcloud iam account-settings-template-version-create AccountSettingsUpdated --file /path/to/account_settings_template.json
    

CLI를 사용하여 과제를 업데이트하기

실패한 과제를 다시 시도하거나 새로운 버전으로 이전하기 위해 과제를 업데이트합니다.

새로 할당된 템플릿 버전이 이전 버전을 대체합니다. 새 버전 할당에 대해 자세히 알아보세요.

  1. account-settings-assignments 방법을 사용하여 계정의 할당 목록을 작성하십시오. 업데이트하려는 과제에 대한 작업 노트( ASSIGNMENT_ID )를 작성하십시오.

  2. 계정 설정 할당을 업데이트하십시오. 작업을 다시 시도하는 경우, 동일한 버전 번호를 사용하십시오. 다음 샘플 요청은 할당된 작업 AccountSettingsAssignment-63d65ed159ff463b8ec09ea77d22a05b 을 버전 2로 이전합니다.

    ibmcloud iam account-settings-assignment-update AccountSettingsAssignment-63d65ed159ff463b8ec09ea77d22a05b 2
    

CLI를 사용하여 할당 사항 제거하기

템플릿이 할당된 계정이나 계정 그룹에서 템플릿 할당을 제거할 수 있습니다. 템플릿이 의도한 대로 작동하지 않는 경우 그렇게 할 수 있습니다. 계정에서 템플릿 할당을 제거하면 기본적으로 템플릿의 이전 버전이 복원됩니다. 제거하는 할당이 템플릿의 첫 번째 버전 또는 유일한 버전인 경우, 하위 계정의 기업 관리 설정 환경설정이 제거됩니다.

과제를 삭제하려면 다음 단계를 따르세요:

  1. account-settings-assignments 방법을 사용하여 계정의 할당 목록을 작성하십시오. 제거하려는 과제에 대한 작업 노트( ASSIGNMENT_ID )를 기록해 두십시오.

  2. account-settings-assigment-delete 방법을 사용하여 과제를 제거하십시오. 다음 샘플 요청은 할당 AccountSettingsAssignment-63d65ed159ff463b8ec09ea77d22a05b 을 제거합니다.

    ibmcloud iam account-settings-assignment-delete AccountSettingsAssignment-63d65ed159ff463b8ec09ea77d22a05b
    

CLI를 사용하여 버전 삭제하기

설정 템플릿 버전을 삭제하기 전에, 그 버전의 템플릿에 대한 모든 할당을 제거해야 합니다. 다음 단계를 완료하여 특정 버전을 삭제하십시오

  1. 기업 계정에서 설정 템플릿을 나열하고 삭제하려는 템플릿의 이름과 버전 번호를 기록합니다

    ibmcloud iam account-settings-templates
    
  2. 버전 삭제:

    ibmcloud iam account-settings-template-delete AccountSettingsTemplateUpdated 2
    
  3. 모든 버전을 삭제하려면 이 단계를 반복하십시오. 먼저 각 버전에 대한 할당을 제거해야 합니다.

API를 사용하여 설정 템플릿 만들기

동일한 IAM 설정이 필요한 하위 계정이 많은 경우 설정 템플릿을 사용하는 것을 고려해 보십시오. 예를 들어, 조직에 내부 표준이 있거나 업계 규정을 준수해야 할 수도 있습니다.

API를 사용하여 설정 템플릿을 생성하려면 다음 단계를 따르십시오:

  1. 설정 템플릿 정의를 구성합니다. JSON 파일에서 사용할 수 있는 속성에 대한 자세한 정보는 IAM Identity API를 참조하십시오.

    다음 예제 JSON 파일은 기업 계정의 account_id, 템플릿의 name, account_settings 를 지정합니다. API 키 생성은 아이덴티티 서비스에서 API 키 생성자 역할을 가진 사용자로 제한됩니다. 서비스 ID 생성은 제한이 없으므로, 설정 템플릿이 할당된 계정에서 모든 회원이 서비스 ID를 생성할 수 있습니다. ID당 최대 세션 수는 5 로 설정되어 있으며, 다중 인증은 LEVEL3 로 설정되어 있어 모든 사용자가 U2F MFA를 사용해야 합니다.

    curl -X POST 'https://iam.cloud.ibm.com/v1/account_settings_templates' -H 'Content-Type: application/json' -H 'Authorization: Bearer $TOKEN' -d '{
       "account_id": "5bbe28be34524sdbdaa34d37d1f2294a",
       "name": "my template",
       "account_settings": {
          "restrict_create_platform_apikey": "RESTRICTED",
          "restrict_create_service_id":  "NOT_RESTRICTED",
          "max_sessions_per_identity": 5,
          "mfa": "LEVEL3",
       },
    }'
    
    AccountSettingsComponent accountSettings = new AccountSettingsComponent.Builder()
       .mfa("LEVEL1")
       .systemAccessTokenExpirationInSeconds("3000")
       .build();
    CreateAccountSettingsTemplateOptions createOptions = new CreateAccountSettingsTemplateOptions.Builder()
       .accountId(enterpriseAccountId)
       .name(accountSettingsTemplateName)
       .description("IAM enterprise account settings template example")
       .accountSettings(accountSettings)
       .build();
    Response<AccountSettingsTemplateResponse> createResponse = service.createAccountSettingsTemplate(createOptions).execute();
    AccountSettingsTemplateResponse createResult = createResponse.getResult();
    // Save the id for use by other test methods.
    accountSettingsTemplateId = createResult.getId();
    accountSettingsTemplateVersion = createResult.getVersion().longValue();
    System.out.println(createResult);
    
    const settings = {
    mfa: "LEVEL1",
    system_access_token_expiration_in_seconds: "3000",
    }
    const templateParams = {
    name: "Example-Account-Settings-Template",
    description: "IAM enterprise account settings template example",
    accountId: enterpriseAccountId,
    accountSettings: settings,
    }
    try {
    const res = await iamIdentityService.createAccountSettingsTemplate(templateParams);
    accountSettingsTemplateEtag = res.headers.etag;
    const { result } = res;
    accountSettingsTemplateId = result.id;
    accountSettingsTemplateVersion = result.version;
    console.log(JSON.stringify(result, null, 2));
    } catch (err) {
    console.warn(err);
    }
    
    account_settings = {}
    account_settings['mfa'] = 'LEVEL1'
    account_settings['system_access_token_expiration_in_seconds'] = 3000
    create_response = iam_identity_service.create_account_settings_template(
    name='Example-Account-Settings-Template',
    description='IAM enterprise account settings template example',
    account_id=enterprise_account_id,
    account_settings=account_settings,
    )
    account_settings_template = create_response.get_result()
    print('\ncreate_account_settings_template() response: ', json.dumps(account_settings_template, indent=2))
    global account_settings_template_id
    account_settings_template_id = account_settings_template['id']
    global account_settings_template_version
    account_settings_template_version = account_settings_template['version']
    
    settings := &iamidentityv1.AccountSettingsComponent{
    Mfa:                                  core.StringPtr("LEVEL1"),
    SystemAccessTokenExpirationInSeconds: core.StringPtr("3000"),
    }
    createOptions := &iamidentityv1.CreateAccountSettingsTemplateOptions{
    Name:            &accountSettingsTemplateName,
    Description:     core.StringPtr("GoSDK test Account Settings Template"),
    AccountID:       &enterpriseAccountID,
    AccountSettings: settings,
    }
    createResponse, response, err := iamIdentityService.CreateAccountSettingsTemplate(createOptions)
    b, _ := json.MarshalIndent(createResponse, "", "  ")
    fmt.Println(string(b))
    // Grab the ID and Etag value from the response for use in the update operation.
    accountSettingsTemplateId = *createResponse.ID
    accountSettingsTemplateVersion = *createResponse.Version
    accountSettingsTemplateEtag = response.GetHeaders().Get("Etag")
    

API를 사용하여 설정 템플릿 업데이트하기

설정 템플릿을 적용하기 전에 언제든지 업데이트할 수 있습니다. 특정 버전의 계정 설정 템플릿을 업데이트하려면 다음 단계를 완료하십시오

  1. 기업 계정에 설정 템플릿을 나열하고 업데이트하려는 템플릿 버전에 대한 응답에서 AccountSettingsTemplate 의 ID와 ETag를 확인하십시오.

    curl -X GET 'https://iam.cloud.ibm.com/v1/account_settings_templates?account_id=5bbe28be34524sdbdaa34d37d1f2294a' -H 'Content-Type: application/json' -H 'Authorization: Bearer $TOKEN'
    
    ListAccountSettingsTemplatesOptions listOptions = new ListAccountSettingsTemplatesOptions.Builder()
       .accountId(enterpriseAccountId)
       .build();
    Response<AccountSettingsTemplateList> response = service.listAccountSettingsTemplates(listOptions).execute();
    AccountSettingsTemplateList result = response.getResult();
    System.out.println(result);
    
    const params = {
    accountId: enterpriseAccountId,
    }
    try {
    const res = await iamIdentityService.listAccountSettingsTemplates(params);
    console.log(JSON.stringify(res.result, null, 2));
    } catch (err) {
    console.warn(err);
    }
    
    list_response = iam_identity_service.list_account_settings_templates(account_id=enterprise_account_id)
    account_settings_template_list = list_response.get_result()
    print('\nlist_account_settings_templates response: ', json.dumps(account_settings_template_list, indent=2))
    
    listOptions := &iamidentityv1.ListAccountSettingsTemplatesOptions{
    AccountID: &enterpriseAccountID,
    }
    listResponse, response, err := iamIdentityService.ListAccountSettingsTemplates(listOptions)
    b, _ := json.MarshalIndent(listResponse, "", "  ")
    fmt.Println(string(b))
    
  2. 설정 템플릿 정의를 업데이트합니다.

    템플릿 이름을 업데이트하면 모든 버전의 이름이 업데이트됩니다.

    curl -X POST 'https://iam.cloud.ibm.com/v1/account_settings_templates/{template_id}/version' -H 'Content-Type: application/json' -H 'Authorization: Bearer $TOKEN' -d '{
       "account_id": "5bbe28be34524sdbdaa34d37d1f2294a",
       "name": "my template name",
       "account_settings": {
          "mfa": "NONE",
       },
    }'
    
    AccountSettingsComponent accountSettings = new AccountSettingsComponent.Builder()
       .mfa("LEVEL1")
       .systemAccessTokenExpirationInSeconds("3000")
       .build();
    UpdateAccountSettingsTemplateVersionOptions updateOptions = new UpdateAccountSettingsTemplateVersionOptions.Builder()
       .accountId(enterpriseAccountId)
       .templateId(accountSettingsTemplateId)
       .version(Long.toString(accountSettingsTemplateVersion))
       .ifMatch(accountSettingsTemplateEtag)
       .name(accountSettingsTemplateName)
       .description("IAM enterprise account settings template example - updated")
       .accountSettings(accountSettings)
       .build();
    Response<AccountSettingsTemplateResponse> updateResponse = service.updateAccountSettingsTemplateVersion(updateOptions).execute();
    AccountSettingsTemplateResponse updateResult = updateResponse.getResult();
    accountSettingsTemplateEtag = updateResponse.getHeaders().values("Etag").get(0);
    System.out.println(updateResult);
    
    const settings = {
    mfa: "LEVEL1",
    system_access_token_expiration_in_seconds: "3000",
    }
    const params = {
    accountId: enterpriseAccountId,
    templateId: accountSettingsTemplateId,
    version: accountSettingsTemplateVersion,
    ifMatch: accountSettingsTemplateEtag,
    name: "Example-Account-Settings-Template",
    description: "IAM enterprise account settings template example - updated",
    accountSettings: settings,
    }
    try {
    const res = await iamIdentityService.updateAccountSettingsTemplateVersion(params);
    accountSettingsTemplateEtag = res.headers.etag;
    console.log(JSON.stringify(res.result, null, 2));
    } catch (err) {
    console.warn(err);
    }
    
    account_settings = {}
    account_settings['mfa'] = 'LEVEL1'
    account_settings['system_access_token_expiration_in_seconds'] = 3000
    update_response = iam_identity_service.update_account_settings_template_version(
    account_id=enterprise_account_id,
    template_id=account_settings_template_id,
    version=str(account_settings_template_version),
    if_match=account_settings_template_etag,
    name='Example-Account-Settings-Template',
    description='IAM enterprise account settings template example - updated',
    account_settings=account_settings,
    )
    account_settings_template = update_response.get_result()
    print('\nupdate_account_settings_template() response: ', json.dumps(account_settings_template, indent=2))
    account_settings_template_etag = update_response.get_headers()['Etag']
    
    settings := &iamidentityv1.AccountSettingsComponent{
    Mfa:                                  core.StringPtr("LEVEL1"),
    SystemAccessTokenExpirationInSeconds: core.StringPtr("3000"),
    }
    updateOptions := &iamidentityv1.UpdateAccountSettingsTemplateVersionOptions{
    AccountID:       &enterpriseAccountID,
    TemplateID:      &accountSettingsTemplateId,
    Version:         core.StringPtr(strconv.FormatInt(accountSettingsTemplateVersion, 10)),
    IfMatch:         &accountSettingsTemplateEtag,
    Name:            &accountSettingsTemplateName,
    Description:     core.StringPtr("GoSDK test Account Settings Template - updated"),
    AccountSettings: settings,
    }
    updateResponse, response, err := iamIdentityService.UpdateAccountSettingsTemplateVersion(updateOptions)
    b, _ := json.MarshalIndent(updateResponse, "", "  ")
    fmt.Println(string(b))
    accountSettingsTemplateEtag = response.GetHeaders().Get("Etag")
    

API를 사용하여 설정 템플릿 커밋하기

설정 템플릿을 검토하고 커밋하여 버전에서 더 이상 변경할 수 없도록 합니다. 버전을 커밋하는 것은 하위 계정에 할당하기 전에 필요한 단계입니다. 이렇게 하면 템플릿 할당 관리자가 준비가 완료되었다는 확인을 받은 후에만 버전을 할당할 수 있습니다.

  1. 검토하고 커밋하려는 신뢰할 수 있는 프로필 템플릿의 버전을 확인하십시오.

    curl -X GET 'https://iam.cloud.ibm.com/v1/account_settings_templates/AccountSettingsTemplate-767fc1f6-c77c-4196-b3d6-a009a5a536e9/versions/1' -H 'Content-Type: application/json' -H 'Authorization: Bearer $TOKEN'
    
    GetAccountSettingsTemplateVersionOptions getOptions = new GetAccountSettingsTemplateVersionOptions.Builder()
       .templateId(accountSettingsTemplateId)
       .version(Long.toString(accountSettingsTemplateVersion))
       .build();
    Response<AccountSettingsTemplateResponse> response = service.getAccountSettingsTemplateVersion(getOptions).execute();
    AccountSettingsTemplateResponse getResult = response.getResult();
    // Grab the Etag value from the response for use in the update operation.
    accountSettingsTemplateEtag = response.getHeaders().values("Etag").get(0);
    System.out.println(getResult);
    
    get_response = iam_identity_service.get_account_settings_template_version(
    template_id=account_settings_template_id, version=str(account_settings_template_version)
    )
    account_settings_template = get_response.get_result()
    print('\nget_account_settings_template response: ', json.dumps(account_settings_template, indent=2))
    global account_settings_template_etag
    account_settings_template_etag = get_response.get_headers()['Etag']
    
    get_response = iam_identity_service.get_account_settings_template_version(
    template_id=account_settings_template_id, version=str(account_settings_template_version)
    )
    account_settings_template = get_response.get_result()
    print('\nget_account_settings_template response: ', json.dumps(account_settings_template, indent=2))
    global account_settings_template_etag
    account_settings_template_etag = get_response.get_headers()['Etag']
    
    getOptions := &iamidentityv1.GetAccountSettingsTemplateVersionOptions{
    TemplateID: &accountSettingsTemplateId,
    Version:    core.StringPtr(strconv.FormatInt(accountSettingsTemplateVersion, 10)),
    }
    getResponse, response, err := iamIdentityService.GetAccountSettingsTemplateVersion(getOptions)
    b, _ := json.MarshalIndent(getResponse, "", "  ")
    fmt.Println(string(b))
    // Grab the Etag value from the response for use in the update operation.
    accountSettingsTemplateEtag = response.GetHeaders().Get("Etag")
    
  2. 답변을 검토하여 커밋할 준비가 되었는지 확인하십시오.

  3. 신뢰할 수 있는 프로필 템플릿의 버전을 커밋합니다.

    curl -X POST 'https://iam.cloud.ibm.com/v1/account_settings_templates/{template_id}/{version}/commit' -H 'Content-Type: application/json' -H 'Authorization: Bearer $TOKEN'
    
    CommitAccountSettingsTemplateOptions commitOptions = new CommitAccountSettingsTemplateOptions.Builder()
       .templateId(accountSettingsTemplateId)
       .version(Long.toString(accountSettingsTemplateVersion))
       .build();
    Response<Void> commitResponse = service.commitAccountSettingsTemplate(commitOptions).execute();
    
    const commitParams = {
    templateId: accountSettingsTemplateId,
    version: accountSettingsTemplateVersion,
    }
    try {
    const res = await iamIdentityService.commitAccountSettingsTemplate(commitParams);
    } catch (err) {
    console.warn(err);
    }
    
    commit_response = iam_identity_service.commit_account_settings_template(
    template_id=account_settings_template_id, version=str(account_settings_template_version)
    )
    
    commitOptions := &iamidentityv1.CommitAccountSettingsTemplateOptions{
    TemplateID: &accountSettingsTemplateId,
    Version:    core.StringPtr(strconv.FormatInt(accountSettingsTemplateVersion, 10)),
    }
    response, err := iamIdentityService.CommitAccountSettingsTemplate(commitOptions)
    

API를 사용하여 하위 계정에 설정 템플릿 할당

기업 내에서는 한 번에 하나의 설정 템플릿 버전에 대해서만 할당할 수 있습니다. 동일한 설정 템플릿의 다른 버전을 할당할 수 있지만, 기업에서 여러 설정 템플릿을 사용할 수는 없습니다. 생산 계정과 테스트 계정처럼 요구 사항이 다른 계정에 다른 버전을 할당할 수 있습니다.

기업 계정에는 IAM 템플릿을 할당할 수 없고, 하위 계정에만 할당할 수 있습니다.

계정 설정 템플릿에 대한 할당을 생성하려면 다음 단계를 완료하십시오

  1. 기업 계정에 설정 템플릿을 나열하고 하위 계정에 할당하려는 템플릿 버전에 대한 응답에서 하위 계정 ID( AccountSettingsTemplate )와 ETag를 기록합니다.

    curl -X GET 'https://iam.cloud.ibm.com/v1/account_settings_templates?account_id=5bbe28be34524sdbdaa34d37d1f2294a' -H 'Content-Type: application/json' -H 'Authorization: Bearer $TOKEN'
    
    ListAccountSettingsTemplatesOptions listOptions = new ListAccountSettingsTemplatesOptions.Builder()
       .accountId(enterpriseAccountId)
       .build();
    Response<AccountSettingsTemplateList> response = service.listAccountSettingsTemplates(listOptions).execute();
    AccountSettingsTemplateList result = response.getResult();
    System.out.println(result);
    
    const params = {
    accountId: enterpriseAccountId,
    }
    try {
    const res = await iamIdentityService.listAccountSettingsTemplates(params);
    console.log(JSON.stringify(res.result, null, 2));
    } catch (err) {
    console.warn(err);
    }
    
    list_response = iam_identity_service.list_account_settings_templates(account_id=enterprise_account_id)
    account_settings_template_list = list_response.get_result()
    print('\nlist_account_settings_templates response: ', json.dumps(account_settings_template_list, indent=2))
    
    listOptions := &iamidentityv1.ListAccountSettingsTemplatesOptions{
    AccountID: &enterpriseAccountID,
    }
    listResponse, response, err := iamIdentityService.ListAccountSettingsTemplates(listOptions)
    b, _ := json.MarshalIndent(listResponse, "", "  ")
    fmt.Println(string(b))
    
  2. 설정 템플릿을 [ Account ] 또는 [ AccountGroup]에 할당합니다.

    curl -X POST 'https://iam.cloud.ibm.com/v1/account_settings_assignments' -H 'Content-Type: application/json' -H 'Authorization: Bearer $TOKEN' -d '{
       "template_id": "AccountSettingsTemplate-cac1b203-5956-4981-bdec-0a4af4feab4d",
       "template_version": 1,
       "target_type": "Account",
       "target": "5bbe28be34524e88a34d37d1f2294a8a"
    }'
    
    CreateAccountSettingsAssignmentOptions assignOptions = new CreateAccountSettingsAssignmentOptions.Builder()
       .templateId(accountSettingsTemplateId)
       .templateVersion(accountSettingsTemplateVersion)
       .targetType("Account")
       .target(enterpriseSubAccountId)
       .build();
    Response<TemplateAssignmentResponse> assignResponse = service.createAccountSettingsAssignment(assignOptions).execute();
    TemplateAssignmentResponse assignmentResult = assignResponse.getResult();
    // Save the id for use by other test methods.
    accountSettingsTemplateAssignmentId = assignmentResult.getId();
    // Grab the Etag value from the response for use in the update operation.
    accountSettingsTemplateAssignmentEtag = assignResponse.getHeaders().values("Etag").get(0);
    System.out.println(assignmentResult);
    
    const assignParams = {
    templateId: accountSettingsTemplateId,
    templateVersion: accountSettingsTemplateVersion,
    targetType: "Account",
    target: enterpriseSubAccountId,
    }
    try {
    const assRes = await iamIdentityService.createAccountSettingsAssignment(assignParams);
    const { result } = assRes;
    accountSettingsTemplateAssignmentId = result.id;
    accountSettingsTemplateAssignmentEtag= assRes.headers.etag;
    console.log(JSON.stringify(result, null, 2));
    } catch (err) {
    console.warn(err);
    }
    
    assign_response = iam_identity_service.create_account_settings_assignment(
    template_id=account_settings_template_id,
    template_version=account_settings_template_version,
    target_type='Account',
    target=enterprise_subaccount_id,
    )
    assignment = assign_response.get_result()
    print('\ncreate_account_settings_assignment() response: ', json.dumps(assignment, indent=2))
    global account_settings_template_assignment_id
    account_settings_template_assignment_id = assignment['id']
    global account_settings_template_assignment_etag
    account_settings_template_assignment_etag = assign_response.get_headers()['Etag']
    
    assignOptions := &iamidentityv1.CreateAccountSettingsAssignmentOptions{
    TemplateID:      &accountSettingsTemplateId,
    TemplateVersion: &accountSettingsTemplateVersion,
    TargetType:      core.StringPtr("Account"),
    Target:          &enterpriseSubAccountID,
    }
    assignResponse, response, err := iamIdentityService.CreateAccountSettingsAssignment(assignOptions)
    b, _ := json.MarshalIndent(assignResponse, "", "  ")
    fmt.Println(string(b))
    accountSettingsTemplateAssignmentEtag = response.GetHeaders().Get("Etag")
    accountSettingsTemplateAssignmentId = *assignResponse.ID
    

과제가 실패하면, 재시도( account-settings-assigment-update ) 방법을 사용하십시오.

API를 사용하여 새 버전 생성하기

커밋되었거나 할당된 설정 템플릿을 변경하려면 새 버전을 만드십시오.

settings := &iamidentityv1.AccountSettingsComponent{
Mfa:                                  core.StringPtr("LEVEL1"),
SystemAccessTokenExpirationInSeconds: core.StringPtr("2600"),
RestrictCreatePlatformApikey:         core.StringPtr("RESTRICTED"),
RestrictCreateServiceID:              core.StringPtr("RESTRICTED"),
}
createOptions := &iamidentityv1.CreateAccountSettingsTemplateVersionOptions{
Name:            &accountSettingsTemplateName,
Description:     core.StringPtr("GoSDK test Account Settings Template - new version"),
AccountID:       &enterpriseAccountID,
TemplateID:      &accountSettingsTemplateId,
AccountSettings: settings,
}
createResponse, response, err := iamIdentityService.CreateAccountSettingsTemplateVersion(createOptions)
b, _ := json.MarshalIndent(createResponse, "", "  ")
fmt.Println(string(b))
accountSettingsTemplateVersion = *createResponse.Version

이후에 호출할 때 사용할 새 버전의 AccountSettingsTemplate ID와 버전을 저장합니다.

API를 사용하여 과제를 업데이트하기

새 버전으로 마이그레이션하기 위해 과제를 업데이트하거나 실패한 과제를 다시 시도합니다.

새로 할당된 템플릿 버전이 이전 버전을 대체합니다. 새 버전 할당에 대해 자세히 알아보세요.

  1. 기업 계정에서 설정 템플릿 할당을 나열하고 업데이트하려는 할당의 할당 ID, ETag 및 버전을 기록합니다
curl -X GET 'https://iam.cloud.ibm.com/v1/account_settings_assignments?account_id=5bbe28be34524sdbdaa34d37d1f2294a' -H 'Content-Type: application/json' -H 'Authorization: Bearer $TOKEN'
ListAccountSettingsTemplatesOptions listOptions = new ListAccountSettingsTemplatesOptions.Builder()
   .accountId(enterpriseAccountId)
   .build();
Response<AccountSettingsTemplateList> listResponse = service.listAccountSettingsTemplates(listOptions).execute();
AccountSettingsTemplateList listResult = listResponse.getResult();
System.out.println(listResult);
const params = {
accountId: enterpriseAccountId,
templateId: accountSettingsTemplateId,
}
try {
const res = await iamIdentityService.listAccountSettingsAssignments(params);
console.log(JSON.stringify(res.result, null, 2));
} catch (err) {
console.warn(err);
}
list_response = iam_identity_service.list_account_settings_assignments(
account_id=enterprise_account_id, template_id=account_settings_template_id
)
assignment_list = list_response.get_result()
print('\ncreate_account_settings_assignment() response: ', json.dumps(assignment_list, indent=2))
listOptions := &iamidentityv1.ListAccountSettingsAssignmentsOptions{
AccountID:  &enterpriseAccountID,
TemplateID: &accountSettingsTemplateId,
}
listResponse, response, err := iamIdentityService.ListAccountSettingsAssignments(listOptions)
b, _ := json.MarshalIndent(listResponse, "", "  ")
fmt.Println(string(b))
  1. 계정 설정 할당을 업데이트하십시오. 작업을 다시 시도하는 경우, 동일한 버전 번호를 사용하십시오.
curl -X PATCH 'https://iam.cloud.ibm.com/v1/account_settings_assignments/<assignment_id>' -H 'Authorization: Bearer $TOKEN' -H 'Content-Type: application/json' -H 'Authorization: Bearer $TOKEN' -d '{
   "template_version": 2
}'
UpdateAccountSettingsAssignmentOptions updateOptions = new UpdateAccountSettingsAssignmentOptions.Builder()
   .assignmentId(accountSettingsTemplateAssignmentId)
   .templateVersion(accountSettingsTemplateVersion)
   .ifMatch(accountSettingsTemplateAssignmentEtag)
   .build();
Response<TemplateAssignmentResponse> updateResponse = service.updateAccountSettingsAssignment(updateOptions).execute();
TemplateAssignmentResponse updateResult = updateResponse.getResult();
// Grab the Etag value from the response for use in the update operation.
accountSettingsTemplateAssignmentEtag = updateResponse.getHeaders().values("Etag").get(0);
System.out.println(updateResult);
const assignParams = {
assignmentId: accountSettingsTemplateAssignmentId,
templateVersion: accountSettingsTemplateVersion,
ifMatch: accountSettingsTemplateAssignmentEtag,
}
try {
const assRes = await iamIdentityService.updateAccountSettingsAssignment(assignParams);
console.log(JSON.stringify(assRes.result, null, 2));
} catch (err) {
console.warn(err);
}
assign_response = iam_identity_service.update_account_settings_assignment(
assignment_id=account_settings_template_assignment_id,
template_version=account_settings_template_version,
if_match=account_settings_template_assignment_etag,
)
assignment = assign_response.get_result()
print('\nupdate_account_settings_template_assignment response: ', json.dumps(assignment, indent=2))
account_settings_template_assignment_etag = assign_response.get_headers()['Etag']
updateOptions := &iamidentityv1.UpdateAccountSettingsAssignmentOptions{
AssignmentID:    &accountSettingsTemplateAssignmentId,
TemplateVersion: &accountSettingsTemplateVersion,
IfMatch:         &accountSettingsTemplateAssignmentEtag,
}
updateResponse, response, err := iamIdentityService.UpdateAccountSettingsAssignment(updateOptions)
b, _ := json.MarshalIndent(updateResponse, "", "  ")
fmt.Println(string(b))

API를 사용하여 할당 사항 제거하기

템플릿이 할당된 계정이나 계정 그룹에서 템플릿 할당을 제거할 수 있습니다. 템플릿이 의도한 대로 작동하지 않는 경우 그렇게 할 수 있습니다. 계정에서 템플릿 할당을 제거하면 기본적으로 템플릿의 이전 버전이 복원됩니다. 제거하는 할당이 템플릿의 첫 번째 버전 또는 유일한 버전인 경우, 하위 계정의 기업 관리 설정 환경설정이 제거됩니다.

과제를 삭제하려면 다음 단계를 따르세요:

  1. 삭제하려는 과제의 계정과 노트에 과제의 ID를 기재하십시오.
curl -X GET 'https://iam.cloud.ibm.com/v1/account_settings_assignments?account_id=5bbe28be34524sdbdaa34d37d1f2294a' -H 'Content-Type: application/json' -H 'Authorization: Bearer $TOKEN'
ListAccountSettingsTemplatesOptions listOptions = new ListAccountSettingsTemplatesOptions.Builder()
   .accountId(enterpriseAccountId)
   .build();
Response<AccountSettingsTemplateList> listResponse = service.listAccountSettingsTemplates(listOptions).execute();
AccountSettingsTemplateList listResult = listResponse.getResult();
System.out.println(listResult);
const params = {
accountId: enterpriseAccountId,
templateId: accountSettingsTemplateId,
}
try {
const res = await iamIdentityService.listAccountSettingsAssignments(params);
console.log(JSON.stringify(res.result, null, 2));
} catch (err) {
console.warn(err);
}
list_response = iam_identity_service.list_account_settings_assignments(
account_id=enterprise_account_id, template_id=account_settings_template_id
)
assignment_list = list_response.get_result()
print('\ncreate_account_settings_assignment() response: ', json.dumps(assignment_list, indent=2))
listOptions := &iamidentityv1.ListAccountSettingsAssignmentsOptions{
AccountID:  &enterpriseAccountID,
TemplateID: &accountSettingsTemplateId,
}
listResponse, response, err := iamIdentityService.ListAccountSettingsAssignments(listOptions)
b, _ := json.MarshalIndent(listResponse, "", "  ")
fmt.Println(string(b))
  1. 지정을 제거하십시오.

작업을 제거하면 이전 작업이 활성화될 수 있습니다. 자세한 내용은 템플릿 버전 작업하기를 참고하세요.

curl -X DELETE 'https://iam.cloud.ibm.com/v1/account_settings_assignments/<assignment_id>' -H 'Authorization: Bearer $TOKEN' }'
DeleteAccountSettingsAssignmentOptions deleteOptions = new DeleteAccountSettingsAssignmentOptions.Builder()
   .assignmentId(accountSettingsTemplateAssignmentId)
   .build();
Response<ExceptionResponse> deleteResponse = service.deleteAccountSettingsAssignment(deleteOptions).execute();
const params = {
assignmentId: accountSettingsTemplateAssignmentId,
}
try {
const res = await iamIdentityService.deleteAccountSettingsAssignment(params);
} catch (err) {
console.warn(err);
}
delete_response = iam_identity_service.delete_account_settings_assignment(
assignment_id=account_settings_template_assignment_id
)
deleteOptions := &iamidentityv1.DeleteAccountSettingsAssignmentOptions{
AssignmentID: &accountSettingsTemplateAssignmentId,
}
excResponse, response, err := iamIdentityService.DeleteAccountSettingsAssignment(deleteOptions)

API를 사용하여 버전 삭제하기

설정 템플릿 버전을 삭제하기 전에, 그 버전의 템플릿에 대한 모든 할당을 제거해야 합니다. 다음 단계를 완료하여 특정 버전을 삭제하십시오

  1. 기업 계정에서 설정 템플릿을 나열하고 삭제하려는 버전의 설정 템플릿 ID와 버전 번호를 기록합니다
   curl -X GET 'https://iam.cloud.ibm.com/v1/account_settings_templates?account_id=5bbe28be34524sdbdaa34d37d1f2294a' -H 'Content-Type: application/json' -H 'Authorization: Bearer $TOKEN'
ListAccountSettingsTemplatesOptions listOptions = new ListAccountSettingsTemplatesOptions.Builder()
   .accountId(enterpriseAccountId)
   .build();
Response<AccountSettingsTemplateList> response = service.listAccountSettingsTemplates(listOptions).execute();
AccountSettingsTemplateList result = response.getResult();
System.out.println(result);
const params = {
accountId: enterpriseAccountId,
}
try {
const res = await iamIdentityService.listAccountSettingsTemplates(params);
console.log(JSON.stringify(res.result, null, 2));
} catch (err) {
console.warn(err);
}
list_response = iam_identity_service.list_account_settings_templates(account_id=enterprise_account_id)
account_settings_template_list = list_response.get_result()
print('\nlist_account_settings_templates response: ', json.dumps(account_settings_template_list, indent=2))
listOptions := &iamidentityv1.ListAccountSettingsTemplatesOptions{
AccountID: &enterpriseAccountID,
}
listResponse, response, err := iamIdentityService.ListAccountSettingsTemplates(listOptions)
b, _ := json.MarshalIndent(listResponse, "", "  ")
fmt.Println(string(b))
  1. 버전 삭제:

API를 사용하여 모든 버전을 삭제

먼저 각 버전에 대한 할당을 제거해야 합니다.

curl -X DELETE 'https://iam.cloud.ibm.com/v1/account_settings_templates/AccountSettingsTemplate-767fc1f6-c77c-4196-b3d6-a009a5a536e9' -H 'Content-Type: application/json' -H 'Authorization: Bearer $TOKEN'
DeleteAllVersionsOfAccountSettingsTemplateOptions deleteTeplateOptions = new DeleteAllVersionsOfAccountSettingsTemplateOptions.Builder()
    .templateId(accountSettingsTemplateId)
    .build();
Response<Void> deleteResponse = service.deleteAllVersionsOfAccountSettingsTemplate(deleteTeplateOptions).execute();
const params = {
  templateId: accountSettingsTemplateId,
}
try {
  const res = await iamIdentityService.deleteAllVersionsOfAccountSettingsTemplate(params);
} catch (err) {
  console.warn(err);
}
delete_response = iam_identity_service.delete_all_versions_of_account_settings_template(
  template_id=account_settings_template_id
)
deleteOptions := &iamidentityv1.DeleteAllVersionsOfAccountSettingsTemplateOptions{
  TemplateID: &accountSettingsTemplateId,
}
response, err := iamIdentityService.DeleteAllVersionsOfAccountSettingsTemplate(deleteOptions)

설정 템플릿 제한 사항

기업 단위로 하나의 설정 템플릿만 할당할 수 있습니다. 여러 버전의 템플릿을 할당할 수 있지만, 다른 템플릿은 할당할 수 없습니다.