Terraform을 사용하여 Okta의 Application 그룹을 할당하면 간편해집니다.

10125 단어 Terraformoktatech
안녕하세요.
전 세계의 모든 SaaS가 Terraform으로 관리되기를 바랍니다.
Okta Advent Calendar 2021 16일째 보도입니다!
이번에 Terraform으로 며칠 전Terraform 및 GiitHub Action을 사용한 Okta 코드 관리 자습서에 쓴 옥타의 관리를 쉽게 관리하는 방법이런 팁을 소개해 줬으면 좋겠다고 생각했어요.

옥타에서 실수할 때 겁나는 곳, 테라form으로 해결하고 싶은 곳


옥타와 사아스가 협업하면 옥타 측은 애플리케이션에서 대상인 사아스를 누가 어떻게 사용했는지 설정한다.
이때 옥타의 사용자를 Application과 연결할 때, 나는 사용자나 조합을 Application의 Assignments 와 연결시킨다고 생각한다.
특히 SaaS에서도 Provisioning을 지원할 경우 사용자 그룹을 링크할 때 적용되는 라이센스 또는 역할을 설정할 수 있습니다.
이 경우 팀 단위로 배정하는 것이 수월해지기 때문에 많은 사람이 그렇게 한다.
이 그룹의 분배는 우선도 개념이 있기 때문에 허가증과 역할을 설정하기 위해 이 우선도를 사용하고 싶지만 이 우선도의 변화 방식은 드래그 앤 드롭으로 진행된다.
Okta の Assignments 画面
배정된 조 수가 몇 개 정도면 큰 문제는 없지만, 제작되면 수십 개 조가 등록돼 상당히 혼란스러운 상태가 된다.
정렬할 때 화면을 굴려야 하기 때문에 조작하기 어렵고 배열 위치가 다르다. 실수로 인해 배열이 바뀌었다. 다시 배열할 때마다 SaaS가 설정 처리를 해서 무의식적으로 동기화되고 수동으로 조작하는 것이 매우 힘들어진다. 나는 이 문제를 해결하고 싶다.
따라서 본고는 Terraform이 이Assignments의 분배를 실현하는 방법을 소개할 것이다!

차리다


환경의 준비는 아래의 보도를 보십시오.

이루어지다


Terraform의 전체 샘플 코드입니다.Terraform의 많은 배열과 중복 처리를 사용합니다.
./app_assignments.tf
# 割り当てるグループを作成
resource "okta_group" "priority_high" {
  name        = "優先度が高いグループ"
  description = ""
}

resource "okta_group" "priority_low" {
  name        = "優先度が低いグループ"
  description = ""
}

# 割り当てるグループを配列を使って指定
locals {
  test_app_group_assignments = [
    {
      id = okta_group.priority_high.id # 優先度が高いグループ
    },
    {
      id = okta_group.priority_low.id  # 優先度が低いグループ
    },
  ]
}

# Okta の Application を参照
data "okta_app" "test" {
  label = "Test"
}

# Application の Assignment を設定
resource "okta_app_group_assignments" "test" {
  app_id = data.okta_app.test.id

  # group ブロックを配列から展開
  dynamic "group" {
    for_each = local.test_app_group_assignments

    content {
      id       = group.value["id"]
      priority = group.key + 1
      # profile = プロビジョニングに必要な追加パラメータ(JSON形式)
    }
  }
}
다음은 각 요소에 대한 해설이다.

그룹 생성


resource "okta_group" "priority_high" {
  name        = "優先度が高いグループ"
  description = ""
}

resource "okta_group" "priority_low" {
  name        = "優先度が低いグループ"
  description = ""
}
Okta 그룹을 만들고 있습니다.

배열을 사용하여 할당할 그룹 지정하기


locals {
  test_app_group_assignments = [
    {
      id = okta_group.priority_high.id # 優先度が高いグループ
    },
    {
      id = okta_group.priority_low.id  # 優先度が低いグループ
    },
  ]
}
Terraform의 Assignments 문구를 사용하여 locals에 지정된 그룹의 배열을 생성합니다.

Okta 참조 Application


data "okta_app" "test" {
  label = "Test"
}
이번 애플의 설정 자체는 테라폼이 아닌 옥타로 수동으로 제작됐다.
이후 기술Assignments에 할당된 Applicationsokta_app_group_assignments를 지정해야 하는데 Terraform에서 만들지 않았기 때문에 Okta에서 ID를 가져와야 합니다.
따라서 app_id 문장을 사용하면 OKta의 Applications에서 Application 이름과 data에서 지정한 문자열이 일치하는 내용을 찾을 수 있고Terraform에서 이 속성을 사용할 수 있다.

Application의 Assignment 설정


resource "okta_app_group_assignments" "test" {
  app_id = data.okta_app.test.id

  # group ブロックを配列から展開
  dynamic "group" {
    for_each = local.test_app_group_assignments

    content {
      id       = group.value["id"]
      priority = group.key + 1
      # profile = プロビジョニングに必要な追加パラメータ(JSON形式)
    }
  }
}
애플 분배 그룹에 대한 정의.
워낙app_group_assignments는 다음과 같이 분배 그룹의 분배를 진행합니다
resource "okta_app_group_assignments" "test" {
  app_id = data.okta_app.test.id

  group {
    id       = okta_group.priority_high.id
    priority = 1
  }
  group {
    id       = okta_group.priority_low.id
    priority = 2
  }
}
하지만 중간에 다른 그룹을 추가하면 label의 값이 중진으로 바뀌어 유지하기 어려워진다.
따라서 그룹 정보를 그룹 priority 블록에 저장하는 정의가 그룹에서 자동으로 전개됩니다.
수조의 index는 직접 group의 값으로 변하기 때문에 배열의 순서에 주의해야 한다.
또 해당 애플리케이션이 프로비저닝을 지원할 경우 추가 라이선스와 역할 정보가 필요하다.
매개변수를 priority 속성에 JSON 형식으로 포함합니다.
필요한 JSON은 애플에 따라 규격을 조사해야 한다.
조사 방법의 비결
낙타로 수동으로 설정한 후 profile 명령으로 차점을 얻은 뒤 낙타에서 설정한 내용을 JSON으로 제거한다.

최후


이번에 Terraform을 사용하여 옥타terraform plan의 인코딩을 실현하였습니다!
특히 Organization Units에는 Google Workspace, 라이선스, 캐릭터 조합이 많은 Microsoft365의 Provisioning이 기여할 것으로 생각합니다!
Terraform을 사용하면 수작업으로 힘든 일을 할 수 있습니다.
수공 때문에 괴로워하는 사람들을 도울 수 있다면 좋겠어요!

좋은 웹페이지 즐겨찾기