はじめに
この記事はDENSO Advent Calendar 2024の3日目の記事です。
Terraform を使った Okta の構成について調査していた際に得た知見を紹介します。
Okta アプリケーションの作り方
Okta のダッシュボードからアプリケーションの作成をする場合、Create App Integration
、Browse App Catalog
のどちらかから実行できます。
この Browse App Catalog
からの作成では、ユーザーが一から設定を行う必要はなく、様々なアプリへの SSO を簡単に設定できるので、非常に便利です。Okta やアプリ側のドキュメントにて、この導線でのアプリ連携の方法は丁寧に解説されているので良く使っています。
例えば、Github との連携方法のドキュメントは以下です。
Terraform での Okta アプリケーションの作り方
Terraform は Okta の構成管理にも使えます。
から、okta_app_saml
を使います。
このリソースを作成する際に、preconfigured_app
に所定のパラメータを与えることで、Browse App Catalog
から選択してアプリを作成した場合と同じ様に SSO の設定を簡略化して実行することができます。
preconfigured_app (String) Name of application from the Okta Integration Network. For instance 'slack'. If not included a custom app will be created. If not provided the following arguments are required: 'sso_url' 'recipient' 'destination' 'audience' 'subject_name_id_template' 'subject_name_id_format' 'signature_algorithm' 'digest_algorithm' 'authn_context_class_ref'
以下は Slack の SAML SSO アプリケーションを作成するサンプルコードになります。この様に記述した tf ファイルを作成して実行することで、Browse App Catalog
で slack
を検索して選択可能なカタログから作成したものと同等の設定でアプリケーションの作成を完了できます。
terraform {
required_providers {
okta = {
source = "okta/okta"
version = "4.11.1"
}
}
}
provider "okta" {
base_url = "okta.com"
}
resource "okta_app_saml" "slack_sso" {
accessibility_self_service = false
app_settings_json = jsonencode({
domain = "your-workspace-domain.slack.com"
})
assertion_signed = false
auto_submit_toolbar = true
hide_ios = false
hide_web = false
honor_force_authn = false
implicit_assignment = false
label = "Slack SAML SSO"
preconfigured_app = "slack"
response_signed = false
saml_signed_request_enabled = false
saml_version = "2.0"
status = "ACTIVE"
user_name_template = "$${source.login}"
user_name_template_type = "BUILT_IN"
}
作成後、Okta アプリケーション内のメタデータを使って Slack 側の SSO 設定を完了させることで SSO 可能になります。OKTA_API_TOKEN
, OKTA_ORG_NAME
を環境変数に設定して実行するのを忘れないでください。
preconfigured_app
のパラメータの調べ方
preconfigured_app
に指定するパラメータは、手動で Browse App Catalog
から作成した所望のアプリケーションの okta_app_saml
のデータを出力して確認することができます。
data "okta_app_saml" "hoge" {
label = "Slack SAML SSO"
}
output "hoge" {
value = data.okta_app_saml.hoge
}
上記のコードを tf ファイルに追記して、terraform apply
を実行することで出力から preconfigured_app
に指定すべき値を確認できます。
Changes to Outputs:
+ hoge = {
:
+ name = "slack" <- ここ
:
}
終わりに
preconfigured_app
に指定する値の調べ方については、きっとより良い方法があると思うので、見つけたらアップデートします。