SAMLを使用したSSO設定
SAMLを使用したSSO設定について説明します。
設定の概要については、「設定の流れ」をご確認ください。
具体的な操作については、「操作手順」をご確認ください。
各手順タイトルの先頭にあるアイコンは、以下の設定先を示しています。
|
: |
SSOプロバイダで設定する手順を示す。 |
|
: |
HULFT10 for Container Servicesで設定する手順を示す。 |
|
: |
AWSで設定または操作する手順を示す。 |
設定の流れ
SAMLを使用したSSO設定の流れは、以下のとおりです。
SSOプロバイダ |
HULFT10 for Container Services |
AWS |
---|---|---|
手順1.「管理者ユーザーの作成」 |
||
管理者ユーザーを作成(*1) |
管理者ユーザーを作成(*1) |
- |
- |
ユーザー認証設定をSAMLに変更して、SAML認証設定に表示されている以下の値を取得
→手順3.で設定 |
- |
HULFT10 for Container ServicesのSAML用のクライアントを作成
手順2. のSAML認証設定に表示されていた以下の値を設定
|
- |
- |
ユーザー認証設定に必要な以下の値を取得
→手順5.で設定 |
- |
- |
- |
手順4.で取得した以下の値を設定
|
- |
- |
- |
SAMLアサーションの署名に必要なサービスプロバイダのSAML証明書およびSAML秘密鍵を登録 |
手順7.「管理コンテナの再起動」 |
||
- |
- |
管理コンテナを再起動 |
手順8.「アクセストークンの取得」 |
||
転送コンテナユーザーを作成 |
アクセストークンの取得(*2) →手順9.で登録
|
- |
手順9.「アクセストークンの登録」 |
||
- |
- |
手順8.で取得したアクセストークンを登録 |
手順10.「転送コンテナの再起動」 |
||
- |
- |
転送コンテナを再起動 |
*1 |
: |
SSOが有効な場合、ID/パスワードを使用したログインはできません。 |
*2 |
: |
SSOが有効になると、パスワードを使用した認証によるログインが無効となるため、転送コンテナの再起動ができません。このため、アクセストークンを使用した認証が必要となります。 |
操作手順
SAMLを使用したSSO設定の操作手順を、SSOプロバイダに「okta」を使用した例で説明します。
「okta」以外に利用できるSSOプロバイダについては、「利用可能なシングルサインオン(SSO)プロバイダ」を参照してください。
管理者ユーザーの作成
SSOが有効になると、HULFT10 for Container Servicesへパスワードによるログインはできなくなります
SSOを有効にした後に管理者権限でHULFT10 for Container Servicesにログインできるよう、事前にSSOプロバイダでの管理者ユーザーと同期させるHULFT10 for Container Servicesの管理者ユーザーを作成します。
SSOプロバイダのokta開発環境での操作は以下のとおりです。
-
okta開発環境に管理者ユーザーを作成します。
okta開発環境で作成した管理者ユーザーを、以降の手順でHULFT10 for Container Servicesに設定してください。
HULFT10 for Container Servicesでの操作は以下のとおりです。
以下の手順は管理者権限のユーザーで実施していますが、存在しない場合はrootユーザーで実施してください。
-
HULFT10 for Container Servicesの管理画面に管理者権限のユーザーIDでログインします。
-
ホーム>Settings>ユーザー設定>ユーザー管理をクリックします。
-
新規作成ボタンをクリックします。
-
ユーザー新規作成画面で以下の値を設定します。
表3.2 設定内容
項目名
設定内容
ユーザーID
okta開発環境に登録したHULFT10 for Container Services管理者のEメールアドレス
表示名
(例)okta開発環境に登録したHULFT10 for Container Services管理者のEメールアドレス
メールアドレス
okta開発環境に登録したHULFT10 for Container Services管理者のEメールアドレス
初期パスワード
任意の初期パスワード(*1)
ユーザーの権限
管理者
その他の項目の設定は任意です。
*1
:
ユーザー新規作成画面で設定する初期パスワードはHULFT10 for Container Servicesの管理画面にログインするためのものです。
SSOの設定が有効になった後はこちらの初期パスワードではなく、SSOプロバイダに登録したパスワードでログインしてください。
-
保存ボタンをクリックします。
管理者ユーザーが作成されました。
HULFT10 for Container Servicesの管理画面は「ユーザー認証設定に必要な情報の取得」の手順で使用します。閉じないで次の手順に進んでください。
ユーザー認証設定に必要な情報の取得
HULFT10 for Container Servicesのユーザー認証設定で、ユーザー認証方式に“SAML”を指定し、ユーザー認証設定に必要な情報を取得する手順は以下のとおりです。
-
HULFT10 for Container Services管理画面のホーム>Settings>ユーザー設定>ユーザー認証設定をクリックします。
-
ユーザー認証方式に“SAML”を指定します。
-
SAML認証設定で表示されている以下の値をコピーして控えておきます。
表3.3 表示内容
項目名
表示内容
識別子(エンティティID)
(例)https://external-control-example.com/api/login/saml/metadata
応答URL(Assertion Consumer Service(ACS) URL)
(例)https://external-control-example.com/api/login/saml/acs
ユーザー認証設定に必要な情報を取得できました。
HULFT10 for Container Servicesの管理画面は「SAML IdP XML Metadataの設定」の手順で使用します。閉じないで次の手順に進んでください。
ユーザー認証設定に必要な情報の登録
HULFT10 for Container ServicesのSAML認証設定に表示された値を、SSOプロバイダのSAML用クライアントに設定します。
okta開発環境での手順は以下のとおりです。
-
okta開発環境のApplications-Applicationsをクリックします。
-
Applications画面でCreate App Integrationボタンをクリックします。
-
Create a new app integrationダイアログで以下を選択し、Nextボタンをクリックします。
表3.4 設定内容
項目名
設定内容
Sign-in method
SAML 2.0
-
Create SAML Integration画面のGeneral Settingsタブで、以下を設定しNextボタンをクリックします。
表3.5 設定内容
項目名
設定内容
App name
任意のクライアント名(例として、“hulft10-saml”)を指定
-
Create SAML Integration画面のConfigure SAMLタブで、以下を設定しNextボタンをクリックします。
表3.6 設定内容
項目名
設定内容
Single sign-on URL
HULFT10 for Container Services管理画面のユーザー認証設定で表示されていた「応答URL(Assertion Consumer Service(ACS) URL)」を指定
Audience URI(SP Entity ID)
HULFT10 for Container Services管理画面のユーザー認証設定で表示されていた「識別子(エンティティID)」を指定
Name ID format
EmailAddress(*1)
*1
:
Name ID formatとして指定されたものをHULFT10 for Container ServicesではユーザーIDとして扱うため、usernameやEmailAddressを指定することを推奨します。
項目名はSSOプロバイダごとに異なる場合があります。詳しくは、SSOプロバイダのマニュアルを参照してください。
-
Create SAML Integration画面のFeedbackタブで、以下を設定しFinishボタンをクリックします。
表3.7 設定内容
項目名
設定内容
3. Help Okta Support understand how you cnfigured this application
Are you a customer or paetner?
I'm an Okta customer adding an internal app
HULFT10 for ContainerのSAMLクライアントが作成されました。
Okta開発環境では、作成したアプリケーションにログインさせたいユーザーをアサインする必要があります。
手順は以下のとおりです。
-
Okta開発環境のApplications-Applicationsで、作成したアプリケーション(例として、“hulft10-saml”)をクリックします。
-
Assignmentsタブで、ログインさせたいユーザーを以下のとおりアサインします。
-
すべてのユーザーをアサインしたい場合
-
AssignボタンをクリックしてAssign to Groupsをクリックします。
-
Assign hulft10-saml to Groupsダイアログで、EveryoneのAssignをクリックします。
AssignがAssignedの状態になります。
-
Doneボタンをクリックします。
Okta開発環境に登録されているすべてのユーザーがアサインされます。
-
-
グループ単位でユーザーをアサインしたい場合
-
AssignボタンをクリックしてAssign to Groupsをクリックします。
-
Assign hulft10-saml to Groupsダイアログで、アサインしたいグループのAssignをクリックします。
AssignがAssignedの状態になります。
-
Doneボタンをクリックします。
指定したグループのユーザーがアサインされます。
-
-
ユーザー単位でアサインしたい場合
-
AssignボタンをクリックしてAssign to Peopleをクリックします。
-
Assign hulft10-saml to Peopleダイアログで、アサインしたいユーザーのAssignをクリックします。
-
新たに表示されたAssign hulft10-saml to Peopleダイアログで、Save and Go Backボタンをクリックします。
元のAssign hulft10-saml to Peopleダイアログで、アサインしたいユーザーのAssignがAssignedの状態になります。
-
Doneボタンをクリックします。
指定したユーザーがアサインされます。
-
-
SAML IdP XML Metadataの取得
ユーザー認証設定に必要なSAML IdP XML Metadataを取得する手順は以下のとおりです。
-
okta開発環境で作成したSAML画面(例として、hulft10-saml画面)でSign onタブをクリックします。
-
Settings-Sign on methods-SAML 2.0-Metadata URLのcopyボタンをクリックします。
-
Webブラウザのアドレスバーに、先の手順でコピーしたMetadata URLをペーストします。
-
Webブラウザのウィンドウに表示されたXMLデータのすべてをコピーして控えておきます。
HULFT10 for Container Servicesのユーザー認証設定に必要なSAML IdP XML Metadataを取得しました。
SAML IdP XML Metadataの設定
SSOプロバイダから取得したSAML IdP XML Metadataを、HULFT10 for Container Servicesのユーザー認証設定に設定する手順は以下のとおりです。
-
HULFT10 for Container Services管理画面のホーム>Settings>ユーザー設定>ユーザー認証設定をクリックします。
-
SAML認証設定のSAML IdP XML Metadataの入力フィールドに、「SAML IdP XML Metadataの取得」で取得したXMLデータをペーストします。
-
保存ボタンをクリックします。
-
ユーザー認証設定の保存ダイアログで、ユーザー認証設定を変更するチェックボックスをチェックします。
-
保存ボタンをクリックします。
HULFT10 for Container ServicesにSAML IdP XML Metadataが設定されました。
SAML証明書およびSAML秘密鍵の登録
SAMLアサーションの署名に必要なサービスプロバイダのSAML証明書およびSAML秘密鍵を登録します。
-
Secrets ManagerにSAML証明書およびSAML秘密鍵のファイルパスを以下の手順で登録します。
-
Secrets ManagerのAWS Secrets Manager>シークレットで、新しいシークレットを保存するボタンをクリックします。
-
シークレットのタイプを選択のシークレットのタイプでその他のシークレットのタイプをクリックします。
-
キー/値のペアでプレーンテキストタブをクリックします。
-
プレーンテキストの入力域に、PEM形式のSAML証明書の内容を入力します。
-
次へボタンをクリックします。
-
シークレットの名前と説明のシークレットの名前に任意の名前を入力します。
-
次へボタンをクリックします。
-
ローテーションを設定 - オプション画面で次へボタンをクリックします。
-
レビュー画面で保存ボタンをクリックします。
-
シークレット画面で、作成したシークレットの名前をクリックします。
-
シークレットの詳細画面で、シークレットのARNの値をコピーして控えておきます。
-
SAML秘密鍵のシークレットも同様の手順でSecrets Managerに登録して、シークレットのARNの値を取得します。
-
-
ECSタスクから新規作成したSecrets Managerのシークレットを読み込めるようにします。
以下の手順でEcstaskExecutionRoleに、手順1.で控えておいたARNの値を追加します。
-
以下のスタックから、リソースの論理IDECSSummary1>ECS1>EcstaskExecutionRoleの順にアクセスします。
- EC2使用の場合
-
: CloudFormation NewDeployTemplate2
- Fargate使用の場合
-
: CloudFormation NewDeployTemplate1
-
EcstaskExecutionRoleに付与されているポリシーに、以下の権限を追加します。
- Action
-
: secretsmanager:GetSecretValue
- Resource
-
: SAML秘密鍵のARNの値およびSAML公開鍵のARNの値
-
-
ECSがSecret ManagerからSAML証明書およびSAML秘密鍵を取得できるようにします。
以下の手順で、ECS上にある管理コンテナのタスク定義の環境変数にSAML証明書とSAML秘密鍵を登録します。
-
ECSのAmazon Elastic Container Service>タスク定義で、HULFT10 for Container Servicesの管理コンテナのタスクの画面を開きます。
-
タスク定義:修正リストからHULFT10 for Container Services用のタスクをクリックします。
-
新しいリビジョンの作成リストボックスから新しいリビジョンの作成をクリックします。
-
新しいタスク定義リビジョンの作成画面で環境変数を追加ボタンをクリックします。
-
画面に追加で表示された以下の項目に、SAML証明書の値を設定します。
表3.8 設定内容
項目名
設定内容
キー
HULFT_CONTROL_SAML_CERT
値のタイプ
ValueFrom
値
Secrets Managerで取得したSAML証明書のシークレットのARN
-
環境変数を追加ボタンをクリックします。
-
画面に追加で表示された以下の項目に、SAML秘密鍵の値を設定します。
表3.9 設定内容
項目名
設定内容
キー
HULFT_CONTROL_SAML_SECRET_KEY
値のタイプ
ValueFrom
値
Secrets Managerで取得したSAML秘密鍵のシークレットのARN
-
作成ボタンをクリックします。
-
これで、ECSがSecrets ManagerからSAML証明書およびSAML秘密鍵を取得できるようになりました。
管理コンテナの再起動
HULFT10 for Container Servicesでのユーザー認証設定を有効にするために、管理コンテナを再起動します。
EC2の場合
EC2を使用している場合、以下の手順で管理コンテナを再起動します。
-
CloudFormation NewDeployTemplate2の実行スタックを開き、リソースタブをクリックします。
-
論理IDがECSSummary1となっている行の物理IDをクリックします。
ECSSummary1でネストされたスタックのリソースの画面が開きます。
-
論理IDがECS1となっている行の物理IDをクリックします。
ECS1でネストされたスタックの情報画面が開きます。
-
リソースタブをクリックしてEcsClusterおよびEcsServiceの値を取得します。
CLIまたはECSのページでサービスの更新を行います。
管理コンテナを再起動するコマンドの例
aws ecs update-service --cluster EcsCluster --service EcsService --force-new-deployment
このコマンドの--clusterには、本手順で取得したEcsClusterの値を指定します。
このコマンドの--serviceには、本手順で取得したEcsServiceの値を指定します。
管理コンテナを再起動すると、HULFT10 for Container Servicesでのユーザー認証設定が有効になります。
Fargateの場合
Fargateを使用している場合、以下の手順で管理コンテナを再起動します。
-
CloudFormation NewDeployTemplate1の実行スタックを開き、リソースタブをクリックします。
-
論理IDがECSSummary1となっている行の物理IDをクリックします。
ECSSummary1でネストされたスタックのリソースの画面が開きます。
-
論理IDがFargateECSとなっている行の物理IDをクリックします。
FargateECSでネストされたスタックの情報画面が開きます。
-
リソースタブをクリックしてFargateEcsClusterおよびFargateEcsServiceForControlの値を取得します。
CLIまたはECSのページでサービスの更新を行います。
管理コンテナを再起動するコマンドの例
aws ecs update-service --cluster FargateEcsCluster --service FargateEcsServiceForControl --force-new-deployment
このコマンドの--clusterには、本手順で取得したFargateEcsClusterの値を指定します。
このコマンドの--serviceには、本手順で取得したFargateEcsServiceForControlの値を指定します。
管理コンテナを再起動すると、HULFT10 for Container Servicesでのユーザー認証設定が有効になります。
アクセストークンの取得
SSOが有効になると、パスワードを使用した認証によるログインが無効となるため、転送コンテナの再起動ができません。このため、アクセストークンを使用した認証が必要となります。
ユーザー認証によるログインを有効化する前にアクセストークンを使用した認証を設定済みの場合でも、ユーザー認証によるログインを有効化後にアクセストークンを使用した認証を再設定してください。
アクセストークンは、転送コンテナユーザーでログインしたHULFT10 for Container Servicesのユーザー管理画面で取得できます。
転送コンテナユーザーの作成は、SSOが有効となった後はパスワードの認証とは異なる手順となります。
転送コンテナ用のユーザーはSSOプロバイダで作成しますが、そのユーザーはHULFT10 for Container Servicesでは“メンバー”の権限が付与されています。
HULFT10 for Container Servicesのプロファイル画面でそのユーザーに“転送コンテナ”の権限を付与する必要があります。
以下の手順で、転送コンテナユーザーを作成し、ユーザーの権限が“メンバー”となっていることを確認します。
-
HULFT10 for Container ServicesのログインリダイレクトURLをWebブラウザに入力し、ログイン画面を開きます。
-
SSOでログインボタンをクリックします。
-
手順1. で作成したユーザーのユーザー名およびパスワードを入力してサインインボタンをクリックします。
-
oktaパスワードが失効していますダイアログが表示された場合は、新しいパスワードとパスワードを再入力してくださいにパスワードを入力して、パスワード変更ボタンをクリックします。
ここで入力したパスワードは仮パスワードになります。
-
ホーム>Settings>個人設定>プロファイルをクリックします。
-
プロファイル画面で、ユーザーの権限が“メンバー”となっていることを確認します。
-
HULFT10 for Container Servicesの管理画面からログアウトします。
-
SSOプロバイダからログアウトするため、WebブラウザのCookieを削除します。
以下の手順で、ユーザーの権限を“メンバー”から“転送コンテナ”に変更します。
-
HULFT10 for Container ServicesのログインリダイレクトURLをWebブラウザに入力し、ログイン画面を開きます。
-
管理者ユーザーの作成で作成した管理者ユーザーのユーザー名およびパスワードを入力してサインインボタンをクリックします。
-
ホーム>Settings>ユーザー設定>ユーザー管理をクリックします。
-
ユーザー管理の一覧から、転送コンテナユーザーとして作成したユーザーのユーザーIDをクリックします。
-
ユーザー管理画面で、以下を設定します。
表3.10 設定内容
項目名
設定内容
メールアドレス
「ユーザーID」と同じメールアドレスを指定
ユーザーの権限
転送コンテナ
その他の項目の設定は任意です。
-
保存をクリックします。
ユーザーの権限が“メンバー”から“転送コンテナ”に変更されました。
アクセストークンを取得する手順は以下のとおりです。
-
ユーザー管理の一覧から、ユーザーの権限を“メンバー”から“転送コンテナ”に変更したユーザーのユーザーIDをクリックします。
-
転送コンテナユーザーのユーザー管理画面でアクセストークンを発行ボタンをクリックします。
-
アクセストークンの発行ダイアログで、アクセストークンを発行ボタンをクリックします。
-
アクセストークンの発行ダイアログに表示されたアクセストークンをコピーします。
-
OKボタンをクリックします。
アクセストークンを取得しました。
アクセストークンの登録
転送コンテナでアクセストークンを使用できるようにするには、 スタックの出力タブのTransferControlTokenに記載されているSecrets Managerの値に、取得したアクセストークンを登録する必要があります。 CLIで登録、または、Secrets Managerのページで登録します。
Secrets Managerのページで登録する手順は以下のとおりです。
CLIで登録する手順については、「アクセストークンを使用した認証の設定」の「アクセストークンをSecrets Managerに登録」を参照してください。
-
AWS Secrets Manager>シークレットをクリックします。
-
シークレット画面で、シークレットの名前に以下のスタックの出力タブのTransferControlTokenが表示されているリンクをクリックします。
- EC2使用の場合
-
: CloudFormation NewDeployTemplate2
- Fargate使用の場合
-
: CloudFormation NewDeployTemplate1
-
概要タブのシークレットの値に表示されているシークレットの値を取得するボタンをクリックします。
-
シークレットの値の編集するボタンをクリックします。
-
シークレットの値を編集ダイアログのプレーンテキストタブに、アクセストークンの値を入力します。
-
保存ボタンをクリックします。
アクセストークンが有効になりました。
転送コンテナの再起動
登録したアクセストークンを転送コンテナで使用するためには、転送コンテナの再起動が必要です。
EC2の場合
EC2を使用している場合、以下の手順で転送コンテナを再起動します。
-
CloudFormation NewDeployTemplate2の実行スタックのリソースタブをクリックします。
-
論理IDがECSSummary1の行の物理IDをクリックします。
ECSSummary1でネストされたスタックのリソースの画面が開きます。
-
リソースタブをクリックして、論理IDがECS1の行の物理IDをクリックします。
ECS1でネストされたスタックの情報画面が開きます。
-
リソースタブをクリックしてEcsClusterおよびEcsService2の値を取得します。
CLIまたはECSのページでサービスの更新を行います。
転送コンテナを再起動するコマンドの例
aws ecs update-service --cluster EcsCluster --service EcsService2 --force-new-deployment
このコマンドの--clusterには、本手順で取得したEcsClusterの値を指定します。
このコマンドの--serviceには、本手順で取得したEcsService2の値を指定します。
転送コンテナを再起動すると、アクセストークンが有効になります。
Fargateの場合
Fargateを使用している場合、以下の手順で転送コンテナを再起動します。
-
CloudFormation NewDeployTemplate1の実行スタックのリソースタブをクリックします。
-
論理IDがECSSummary1の行の物理IDをクリックします。
ECSSummary1でネストされたスタックのリソースの画面が開きます。
-
リソースタブをクリックして、論理IDがFargateECSの行の物理IDをクリックします。
FargateECSでネストされたスタックの情報画面が開きます。
-
リソースタブをクリックしてFargateEcsClusterおよびFargateEcsServiceForTransferの値を取得します。
CLIまたはECSのページでサービスの更新を行います。
転送コンテナを再起動するコマンドの例
aws ecs update-service --cluster FargateEcsCluster --service FargateEcsServiceForTransfer --force-new-deployment
このコマンドの--clusterには、本手順で取得したFargateEcsClusterの値を指定します。
このコマンドの--serviceには、本手順で取得したFargateEcsServiceForTransferの値を指定します。
転送コンテナを再起動すると、アクセストークンが有効になります。
以上で、SAMLを使用したSSO設定が完了です。