Okta
Oktaを業務アセットとして接続すると、Oktaのアカウント・グループ・ロール・アプリケーションをYESODから管理できます。接続に必要な準備と、管理できる範囲を説明します。
概要
Oktaは、クラウドベースのIDaaSを提供するプロバイダーです。企業やアプリケーションに対して、認証・認可の仕組みを提供します。
Oktaの製品群は、大きく次の3つに分かれます。
- Okta Platform: すべてのOktaサービスの基盤となるクラウドIDプラットフォーム
- Okta Workforce Identity: 社員・パートナーなど社内ユーザー向けのID管理製品群
- Auth0 Platform: 顧客向けアプリケーションに組み込む開発者向けIDプラットフォーム
このうち、YESODの業務アセットが操作するのはOkta Workforce IdentityのUniversal Directoryです。
| 参照先 | URL |
|---|---|
| 公式HP | https://www.okta.com/ja-jp/products/workforce-identity/ |
| 公式ヘルプ | https://support.okta.com/help/s/translatedhome?language=ja |
| APIドキュメント | https://developer.okta.com/docs/reference/ |
主要機能
Okta Workforce Identityは、社員のアカウントを統合管理するサービスです。SSOやMFAで安全にアプリへアクセスさせ、入退社のライフサイクルまで自動化します。
認証とアクセス制御
- シングルサインオン(SSO)
- 多要素認証(MFA)
- パスワードレス認証
- 条件付きアクセス(リスクベース認証、場所やデバイスに応じた制御)
ディレクトリとアイデンティティ管理
- Universal Directoryによるユーザー・グループ・属性の管理
- カスタム属性やスキーマの拡張
ライフサイクル管理
- ユーザーのプロビジョニングとデプロビジョニング(自動での作成・削除・更新)
- 入社・異動・退職に伴うアカウントライフサイクルの自動化
セキュリティとポリシー
- 認証ポリシー(パスワードポリシー、MFA要件の設定)
- アクセス制御ポリシー(利用条件に応じた制限)
- 監査ログとレポートによる追跡性の確保
管理と運用
- 管理者ロールと権限分離(Super Admin、User Admin、App Adminなど)
- REST API / SCIM / SDKによる外部システム連携
- Okta Integration Network(OIN)によるSaaS連携
管理できること
Universal Directoryの次の値を管理できます。
| 項目 | 備考 |
|---|---|
| アカウント管理 | アカウントの作成・削除(無効化)。属性同期による属性更新 |
| グループの管理 | アカウントに対するグループの付与・剥奪。グループプッシュ(グループの作成/削除) |
| ロールの管理 | アカウントに対するロールの付与・剥奪 |
| アプリケーションの管理 | アカウントに対するアプリケーションの付与・剥奪 |
事前に必要なもの
- Okta側で発行したAPIトークン
- APIトークンを発行するユーザーの権限(「接続の準備」を参照)
- Oktaの「API Access Managementの利用」
接続の準備
Oktaとの接続には、APIトークンが必要です。
APIトークンの発行者に必要な権限
次の権限を持つユーザーでAPIトークンを発行してください。
- ユーザー: 「ユーザーを管理」
- グループ: 「グループを管理」
- IDおよびアクセス管理: 「ロール、リソース、管理者の割り当てを表示」
- アプリケーション: 「アプリケーションを管理」
1つのロールでこれらの権限をまとめて持つ必要はありません。複数のロールを組み合わせて、上記の権限を持つユーザーでAPIトークンを作成できれば問題ありません。

APIトークンを作成する
-
Oktaの管理画面のサイドメニューから「セキュリティ」>「API」へ移動します。
-
「トークン」タブを開きます。
-
「トークンの作成」ボタンを選択します。
-
任意のToken名を入力します。
-
「トークンの作成」を実行します。 トークン値が表示されます。
-
表示された「トークン値」を控えます。 この値を、YESODでの接続に使用します。
アカウントの作成
Okta上に同一の「ログイン名」のアカウントが存在するかどうかに応じて、次のように動作します。
| Oktaの状態 | 動作 |
|---|---|
| 同一メールアドレスのアカウントがOktaに存在しない | アカウントを新規作成します |
| 同一メールアドレスの有効なアカウントがOktaに存在する | そのアカウントの情報を更新します |
| 同一メールアドレスの無効なアカウントがOktaに存在する | そのアカウントを有効にして情報を更新します |
パスワードの設定
パスワードの設定に対応しています。
- アカウント作成時にパスワードを生成しない場合、招待メールが送信されます。ユーザーは招待メールからパスワードを設定します。
- アカウント作成時にパスワードを生成する場合、メールは送信されません。生成したパスワードを別途共有して、Oktaへアクセスしてもらいます。
アカウントの削除
Oktaのサービス仕様には「無効」と「削除」がありますが、業務アセット経由のアカウント削除では、Okta上での無効化が利用されます。
割当種別
| 割当種別名 | タイプ | 割当項目 | 備考 |
|---|---|---|---|
| グループ | Multiple | グループA、グループB、グループC… | グループのタイプがOktaグループのもののみ管理対象です。Everyone, Okta Administratorsは、条件に合わせて自動的に割り当てられる特権グループでユーザーが操作できないため、管理対象外です。項目はOktaの管理画面のグループページ(/admin/groups)から確認できます |
| ロール | Multiple | スーパ管理者、組織管理者、アプリケーション管理者、グループ管理者、グループメンバーシップ管理者、ヘルプデスク管理者、モバイル管理者、レポート閲覧者、読み取り専用管理者… | 項目はOktaの管理画面の管理者ページのロールタブ(/admin/access/admins/permissions)から確認できます |
| アプリケーション | Multiple | Okta Admin Console、Okta Dashboard、Okta Browser Plugin… | 項目はOktaの管理画面のアプリケーションページ(/admin/apps/active)から確認できます |
グループの割当順
Oktaのグループは、割当の順番を指定できます。
- 数字が小さいものから順にタスクが実行されます
- 空の優先度は一番最後になります
OktaでGoogle Workspaceのアカウントを管理している場合に、一番最初にGoogle Workspaceの割当をしたいときなどに利用できます。
同期する項目
同期できる項目は、OktaのProfileObjectとCredentialsObjectに依存します。
| 必須 | 属性名 | key | デフォルト値 | 型 | 例 | 備考 |
|---|---|---|---|---|---|---|
| ✅ | ユーザーの一意の識別子(username) | user.profile.login | params.domain != null ? String.substringBefore(user.email, "@") + "@" + params.domain : user.email | string | - | - |
| ✅ | ユーザーのプライマリメールアドレス | user.profile.email | user.email | string | - | - |
| - | ユーザーのセカンダリ電子メールアドレス | user.profile.secondEmail | - | string | - | アカウントの回復に使用するメールアドレスです |
| - | ユーザーの名(givenName) | user.profile.firstName | user.givenNameLocalPreferred | string | - | - |
| - | ユーザーの姓(familyName) | user.profile.lastName | user.familyNameLocalPreferred | string | - | - |
| - | ユーザーのミドルネーム | user.profile.middleName | - | string | - | - |
| - | 使用者の敬称の接頭辞。欧米言語では肩書き | user.profile.honorificPrefix | - | string | - | - |
| - | ユーザーの接尾辞 | user.profile.honorificSuffix | - | string | - | - |
| - | ユーザーの肩書き(副社長など) | user.profile.title | - | string | - | - |
| - | エンドユーザーに表示するのに適したユーザー名 | user.profile.displayName | - | string | - | - |
| - | ニックネーム | user.profile.nickName | - | string | - | - |
| - | ユーザーのオンラインプロフィールのURL(ウェブページなど) | user.profile.profileUrl | - | string | - | - |
| - | 自宅の電話番号など、ユーザーのプライマリ電話番号 | user.profile.primaryPhone | - | string | - | - |
| - | 利用者の携帯電話番号 | user.profile.mobilePhone | - | string | - | - |
| - | ユーザーの住所の道路 | user.profile.streetAddress | - | string | - | - |
| - | ユーザーの住所の市区町村 | user.profile.city | - | string | - | - |
| - | ユーザーの住所の州または地域 | user.profile.state | - | string | - | - |
| - | 郵便番号 | user.profile.zipCode | - | string | - | - |
| - | 国コード | user.profile.countryCode | - | string | - | 国コードが正しくないと無視されます。Oktaに反映されないまま、アカウントが作成されるため注意してください |
| - | 郵便住所 | user.profile.postalAddress | - | string | - | - |
| - | ユーザーが使う言語 | user.profile.preferredLanguage | - | string | "ja-JP", "en-US" | - |
| - | ロケール | user.profile.locale | - | string | "ja-JP", "en-US" | - |
| - | タイムゾーン | user.profile.timezone | - | string | "Asia/Tokyo", "America/Los_Angeles" | - |
| - | 「Employee(従業員)」や「Contractor(請負業者)」など、組織とユーザーの関係を表す値 | user.profile.userType | - | string | - | - |
| - | 組織または会社から割り当てられたユーザー固有の識別子 | user.profile.employeeNumber | - | string | - | - |
| - | ユーザーに割り当てられたコストセンター名 | user.profile.costCenter | - | string | - | - |
| - | ユーザーの組織名 | user.profile.organization | - | string | user.company[0].name | - |
| - | ユーザーが所属する「部門」の名前 | user.profile.division | - | string | user.project[0].name | - |
| - | ユーザーが所属する「部署」の名前 | user.profile.department | - | string | user.organization[0].name | - |
| - | ユーザーのマネージャーのID | user.profile.managerId | - | string | - | - |
| - | ユーザーのマネージャーの表示名 | user.profile.manager | - | string | - | - |
| - | 初期パスワード | user.credentials.password | - | string | - | 指定しない場合、デフォルトではYESODが作成したパスワードになります |
| - | カスタム属性 | user.profile.{カスタム属性の変数名} | - | string / boolean | - | stringCustomAttributeというカスタム属性の場合、キーの設定はuser.profile.stringCustomAttributeとなります。ユーザープロファイルで定義されていないカスタム属性をkeyとして指定した場合は、エラーになります。カスタム属性の設定で設けられている制約事項(stringの長さなど)に違反している場合も、エラーになります |
グループプッシュ
割当種別の「グループ」は、グループプッシュに対応しています。グループプッシュそのものの説明は、グループプッシュとはを参照してください。
グループの作成
Okta上に同一の名前のグループが存在するかどうかに応じて、次のように動作します。
| Oktaの状態 | 動作 |
|---|---|
| 同一の名前のグループがOktaに存在しない | グループを新規作成します |
| 同一の名前のグループがOktaに存在する | 存在しているグループの情報を更新します |
Oktaのグループには階層がありません。そのため、YESODの階層構造とは関係なく、すべてフラットに扱われます。
作成されたグループは、Oktaの管理画面のグループページ(/admin/groups)から確認できます。
グループの削除
削除したグループは完全削除されます。
グループプッシュで同期する項目
| 必須 | 属性名 | key | デフォルト値 | 型 | 例 | 備考 |
|---|---|---|---|---|---|---|
| ✅ | グループの名前 | name | group.groupNameLocal | string | - | - |
| - | グループの説明 | description | - | string | - | - |