SAMLを使用したSSO設定

SAMLを使用したSSO設定について説明します。

設定の概要については、「設定の流れ」をご確認ください。

具体的な操作については、「操作手順」をご確認ください。

 

各手順タイトルの先頭にあるアイコンは、以下の設定先を示しています。

:

SSOプロバイダで設定する手順を示す。

:

HULFT10 for Container Servicesで設定する手順を示す。

:

AWSで設定または操作する手順を示す。

設定の流れ

SAMLを使用したSSO設定の流れは、以下のとおりです。

表3.1 SAMLを使用したSSO設定の流れ

SSOプロバイダ

HULFT10 for Container Services

AWS

手順1.「管理者ユーザーの作成」

管理者ユーザーを作成(*1)

管理者ユーザーを作成(*1)

-

手順2.「ユーザー認証設定に必要な情報の取得」

-

ユーザー認証設定をSAMLに変更して、SAML認証設定に表示されている以下の値を取得

  • 識別子 (エンティティID)

  • 応答URL (Assertion Consumer Service(ACS) URL)

→手順3.で設定

-

手順3.「ユーザー認証設定に必要な情報の登録」

HULFT10 for Container ServicesのSAML用のクライアントを作成

手順2. のSAML認証設定に表示されていた以下の値を設定

  • 識別子 (エンティティID)

  • 応答URL(Assertion Consumer Service(ACS) URL)

-

-

手順4.「SAML IdP XML Metadataの取得」

ユーザー認証設定に必要な以下の値を取得

  • SAML IdP XML Metadata

→手順5.で設定

-

-

手順5.「SAML IdP XML Metadataの設定」

-

手順4.で取得した以下の値を設定

  • SAML IdP XML Metadata

-

手順6.「SAML証明書およびSAML秘密鍵の登録」

-

-

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開発環境での操作は以下のとおりです。

  1. okta開発環境に管理者ユーザーを作成します。

    okta開発環境で作成した管理者ユーザーを、以降の手順でHULFT10 for Container Servicesに設定してください。

 

HULFT10 for Container Servicesでの操作は以下のとおりです。

= 備考 =

以下の手順は管理者権限のユーザーで実施していますが、存在しない場合はrootユーザーで実施してください。

  1. HULFT10 for Container Servicesの管理画面に管理者権限のユーザーIDでログインします。

  2. ホーム>Settings>ユーザー設定>ユーザー管理をクリックします。

  3. 新規作成ボタンをクリックします。

  4. ユーザー新規作成画面で以下の値を設定します。

    表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プロバイダに登録したパスワードでログインしてください。

  5. 保存ボタンをクリックします。

 

管理者ユーザーが作成されました。

= 備考 =

HULFT10 for Container Servicesの管理画面は「ユーザー認証設定に必要な情報の取得」の手順で使用します。閉じないで次の手順に進んでください。

ユーザー認証設定に必要な情報の取得

HULFT10 for Container Servicesのユーザー認証設定で、ユーザー認証方式に“SAML”を指定し、ユーザー認証設定に必要な情報を取得する手順は以下のとおりです。

  1. HULFT10 for Container Services管理画面のホーム>Settings>ユーザー設定>ユーザー認証設定をクリックします。

  2. ユーザー認証方式に“SAML”を指定します。

  3. 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開発環境での手順は以下のとおりです。

  1. okta開発環境のApplicationsApplicationsをクリックします。

  2. Applications画面でCreate App Integrationボタンをクリックします。

  3. Create a new app integrationダイアログで以下を選択し、Nextボタンをクリックします。

    表3.4 設定内容

    項目名

    設定内容

    Sign-in method

    SAML 2.0

  4. Create SAML Integration画面のGeneral Settingsタブで、以下を設定しNextボタンをクリックします。

    表3.5 設定内容

    項目名

    設定内容

    App name

    任意のクライアント名(例として、“hulft10-saml”)を指定

  5. 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プロバイダのマニュアルを参照してください。

  6. 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開発環境では、作成したアプリケーションにログインさせたいユーザーをアサインする必要があります。

手順は以下のとおりです。

  1. Okta開発環境のApplicationsApplicationsで、作成したアプリケーション(例として、“hulft10-saml”)をクリックします。

  2. Assignmentsタブで、ログインさせたいユーザーを以下のとおりアサインします。

    • すべてのユーザーをアサインしたい場合

      1. AssignボタンをクリックしてAssign to Groupsをクリックします。

      2. Assign hulft10-saml to Groupsダイアログで、EveryoneAssignをクリックします。

        AssignAssignedの状態になります。

      3. Doneボタンをクリックします。

        Okta開発環境に登録されているすべてのユーザーがアサインされます。

    • グループ単位でユーザーをアサインしたい場合

      1. AssignボタンをクリックしてAssign to Groupsをクリックします。

      2. Assign hulft10-saml to Groupsダイアログで、アサインしたいグループのAssignをクリックします。

        AssignAssignedの状態になります。

      3. Doneボタンをクリックします。

        指定したグループのユーザーがアサインされます。

    • ユーザー単位でアサインしたい場合

      1. AssignボタンをクリックしてAssign to Peopleをクリックします。

      2. Assign hulft10-saml to Peopleダイアログで、アサインしたいユーザーのAssignをクリックします。

      3. 新たに表示されたAssign hulft10-saml to Peopleダイアログで、Save and Go Backボタンをクリックします。

        元のAssign hulft10-saml to Peopleダイアログで、アサインしたいユーザーのAssignAssignedの状態になります。

      4. Doneボタンをクリックします。

        指定したユーザーがアサインされます。

SAML IdP XML Metadataの取得

ユーザー認証設定に必要なSAML IdP XML Metadataを取得する手順は以下のとおりです。

  1. okta開発環境で作成したSAML画面(例として、hulft10-saml画面)でSign onタブをクリックします。

  2. SettingsSign on methodsSAML 2.0Metadata URLcopyボタンをクリックします。

  3. Webブラウザのアドレスバーに、先の手順でコピーしたMetadata URLをペーストします。

  4. Webブラウザのウィンドウに表示されたXMLデータのすべてをコピーして控えておきます。

 

HULFT10 for Container Servicesのユーザー認証設定に必要なSAML IdP XML Metadataを取得しました。

SAML IdP XML Metadataの設定

SSOプロバイダから取得したSAML IdP XML Metadataを、HULFT10 for Container Servicesのユーザー認証設定に設定する手順は以下のとおりです。

  1. HULFT10 for Container Services管理画面のホーム>Settings>ユーザー設定>ユーザー認証設定をクリックします。

  2. SAML認証設定SAML IdP XML Metadataの入力フィールドに、「SAML IdP XML Metadataの取得」で取得したXMLデータをペーストします。

  3. 保存ボタンをクリックします。

  4. ユーザー認証設定の保存ダイアログで、ユーザー認証設定を変更するチェックボックスをチェックします。

  5. 保存ボタンをクリックします。

 

HULFT10 for Container ServicesにSAML IdP XML Metadataが設定されました。

SAML証明書およびSAML秘密鍵の登録

SAMLアサーションの署名に必要なサービスプロバイダのSAML証明書およびSAML秘密鍵を登録します。

 

  1. Secrets ManagerにSAML証明書およびSAML秘密鍵のファイルパスを以下の手順で登録します。

    1. Secrets ManagerのAWS Secrets Manager>シークレットで、新しいシークレットを保存するボタンをクリックします。

    2. シークレットのタイプを選択シークレットのタイプその他のシークレットのタイプをクリックします。

    3. キー/値のペアプレーンテキストタブをクリックします。

    4. プレーンテキストの入力域に、PEM形式のSAML証明書の内容を入力します。

    5. 次へボタンをクリックします。

    6. シークレットの名前と説明シークレットの名前に任意の名前を入力します。

    7. 次へボタンをクリックします。

    8. ローテーションを設定 - オプション画面で次へボタンをクリックします。

    9. レビュー画面で保存ボタンをクリックします。

    10. シークレット画面で、作成したシークレットの名前をクリックします。

    11. シークレットの詳細画面で、シークレットのARNの値をコピーして控えておきます。

    12. SAML秘密鍵のシークレットも同様の手順でSecrets Managerに登録して、シークレットのARNの値を取得します。

  2. ECSタスクから新規作成したSecrets Managerのシークレットを読み込めるようにします。

    以下の手順でEcstaskExecutionRoleに、手順1.で控えておいたARNの値を追加します。

    1. 以下のスタックから、リソースの論理IDECSSummary1>ECS1>EcstaskExecutionRoleの順にアクセスします。

      EC2使用の場合

      : CloudFormation NewDeployTemplate2

      Fargate使用の場合

      : CloudFormation NewDeployTemplate1

    2. EcstaskExecutionRoleに付与されているポリシーに、以下の権限を追加します。

      Action

      : secretsmanager:GetSecretValue

      Resource

      : SAML秘密鍵のARNの値およびSAML公開鍵のARNの値

  3. ECSがSecret ManagerからSAML証明書およびSAML秘密鍵を取得できるようにします。

    以下の手順で、ECS上にある管理コンテナのタスク定義の環境変数にSAML証明書とSAML秘密鍵を登録します。

    1. ECSのAmazon Elastic Container Service>タスク定義で、HULFT10 for Container Servicesの管理コンテナのタスクの画面を開きます。

    2. タスク定義:修正リストからHULFT10 for Container Services用のタスクをクリックします。

    3. 新しいリビジョンの作成リストボックスから新しいリビジョンの作成をクリックします。

    4. 新しいタスク定義リビジョンの作成画面で環境変数を追加ボタンをクリックします。

    5. 画面に追加で表示された以下の項目に、SAML証明書の値を設定します。

      表3.8 設定内容

      項目名

      設定内容

      キー

      HULFT_CONTROL_SAML_CERT

      値のタイプ

      ValueFrom

      Secrets Managerで取得したSAML証明書のシークレットのARN

    6. 環境変数を追加ボタンをクリックします。

    7. 画面に追加で表示された以下の項目に、SAML秘密鍵の値を設定します。

      表3.9 設定内容

      項目名

      設定内容

      キー

      HULFT_CONTROL_SAML_SECRET_KEY

      値のタイプ

      ValueFrom

      Secrets Managerで取得したSAML秘密鍵のシークレットのARN

    8. 作成ボタンをクリックします。

 

これで、ECSがSecrets ManagerからSAML証明書およびSAML秘密鍵を取得できるようになりました。

管理コンテナの再起動

HULFT10 for Container Servicesでのユーザー認証設定を有効にするために、管理コンテナを再起動します。

EC2の場合

EC2を使用している場合、以下の手順で管理コンテナを再起動します。

  1. CloudFormation NewDeployTemplate2の実行スタックを開き、リソースタブをクリックします。

  2. 論理IDECSSummary1となっている行の物理IDをクリックします。

    ECSSummary1でネストされたスタックのリソースの画面が開きます。

  3. 論理IDECS1となっている行の物理IDをクリックします。

    ECS1でネストされたスタックの情報画面が開きます。

  4. リソースタブをクリックして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を使用している場合、以下の手順で管理コンテナを再起動します。

  1. CloudFormation NewDeployTemplate1の実行スタックを開き、リソースタブをクリックします。

  2. 論理IDECSSummary1となっている行の物理IDをクリックします。

    ECSSummary1でネストされたスタックのリソースの画面が開きます。

  3. 論理IDFargateECSとなっている行の物理IDをクリックします。

    FargateECSでネストされたスタックの情報画面が開きます。

  4. リソースタブをクリックして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のプロファイル画面でそのユーザーに“転送コンテナ”の権限を付与する必要があります。

 

以下の手順で、転送コンテナユーザーを作成し、ユーザーの権限が“メンバー”となっていることを確認します。

  1. okta開発環境で転送コンテナ用のユーザーを作成します。

  2. HULFT10 for Container ServicesのログインリダイレクトURLをWebブラウザに入力し、ログイン画面を開きます。

  3. でログインボタンをクリックします。

  4. 手順1. で作成したユーザーのユーザー名およびパスワードを入力してサインインボタンをクリックします。

  5. oktaパスワードが失効していますダイアログが表示された場合は、新しいパスワードパスワードを再入力してくださいにパスワードを入力して、パスワード変更ボタンをクリックします。

    ここで入力したパスワードは仮パスワードになります。

  6. ホーム>Settings>個人設定>プロファイルをクリックします。

  7. プロファイル画面で、ユーザーの権限が“メンバー”となっていることを確認します。

  8. HULFT10 for Container Servicesの管理画面からログアウトします。

  9. SSOプロバイダからログアウトするため、WebブラウザのCookieを削除します。

 

以下の手順で、ユーザーの権限を“メンバー”から“転送コンテナ”に変更します。

  1. HULFT10 for Container ServicesのログインリダイレクトURLをWebブラウザに入力し、ログイン画面を開きます。

  2. 管理者ユーザーの作成で作成した管理者ユーザーのユーザー名およびパスワードを入力してサインインボタンをクリックします。

  3. ホーム>Settings>ユーザー設定>ユーザー管理をクリックします。

  4. ユーザー管理の一覧から、転送コンテナユーザーとして作成したユーザーのユーザーIDをクリックします。

  5. ユーザー管理画面で、以下を設定します。

    表3.10 設定内容

    項目名

    設定内容

    メールアドレス

    「ユーザーID」と同じメールアドレスを指定

    ユーザーの権限

    転送コンテナ

    その他の項目の設定は任意です。

  6. 保存をクリックします。

ユーザーの権限が“メンバー”から“転送コンテナ”に変更されました。

 

アクセストークンを取得する手順は以下のとおりです。

  1. ユーザー管理の一覧から、ユーザーの権限を“メンバー”から“転送コンテナ”に変更したユーザーのユーザーIDをクリックします。

  2. 転送コンテナユーザーのユーザー管理画面でアクセストークンを発行ボタンをクリックします。

  3. アクセストークンの発行ダイアログで、アクセストークンを発行ボタンをクリックします。

  4. アクセストークンの発行ダイアログに表示されたアクセストークンをコピーします。

  5. OKボタンをクリックします。

 

アクセストークンを取得しました。

アクセストークンの登録

転送コンテナでアクセストークンを使用できるようにするには、 スタックの出力タブのTransferControlTokenに記載されているSecrets Managerの値に、取得したアクセストークンを登録する必要があります。 CLIで登録、または、Secrets Managerのページで登録します。

 

Secrets Managerのページで登録する手順は以下のとおりです。

CLIで登録する手順については、「アクセストークンを使用した認証の設定」「アクセストークンをSecrets Managerに登録」を参照してください。

  1. AWS Secrets Manager>シークレットをクリックします。

  2. シークレット画面で、シークレットの名前に以下のスタックの出力タブのTransferControlTokenが表示されているリンクをクリックします。

    EC2使用の場合

    : CloudFormation NewDeployTemplate2

    Fargate使用の場合

    : CloudFormation NewDeployTemplate1

  3. 概要タブのシークレットの値に表示されているシークレットの値を取得するボタンをクリックします。

  4. シークレットの値編集するボタンをクリックします。

  5. シークレットの値を編集ダイアログのプレーンテキストタブに、アクセストークンの値を入力します。

  6. 保存ボタンをクリックします。

 

アクセストークンが有効になりました。

転送コンテナの再起動

登録したアクセストークンを転送コンテナで使用するためには、転送コンテナの再起動が必要です。

EC2の場合

EC2を使用している場合、以下の手順で転送コンテナを再起動します。

  1. CloudFormation NewDeployTemplate2の実行スタックのリソースタブをクリックします。

  2. 論理IDECSSummary1の行の物理IDをクリックします。

    ECSSummary1でネストされたスタックのリソースの画面が開きます。

  3. リソースタブをクリックして、論理IDECS1の行の物理IDをクリックします。

    ECS1でネストされたスタックの情報画面が開きます。

  4. リソースタブをクリックしてEcsClusterおよびEcsService2の値を取得します。

CLIまたはECSのページでサービスの更新を行います。

 

転送コンテナを再起動するコマンドの例

aws ecs update-service --cluster EcsCluster --service EcsService2 --force-new-deployment

このコマンドの--clusterには、本手順で取得したEcsClusterの値を指定します。

このコマンドの--serviceには、本手順で取得したEcsService2の値を指定します。

 

転送コンテナを再起動すると、アクセストークンが有効になります。

 

Fargateの場合

Fargateを使用している場合、以下の手順で転送コンテナを再起動します。

  1. CloudFormation NewDeployTemplate1の実行スタックのリソースタブをクリックします。

  2. 論理IDECSSummary1の行の物理IDをクリックします。

    ECSSummary1でネストされたスタックのリソースの画面が開きます。

  3. リソースタブをクリックして、論理IDFargateECSの行の物理IDをクリックします。

    FargateECSでネストされたスタックの情報画面が開きます。

  4. リソースタブをクリックしてFargateEcsClusterおよびFargateEcsServiceForTransferの値を取得します。

CLIまたはECSのページでサービスの更新を行います。

 

転送コンテナを再起動するコマンドの例

aws ecs update-service --cluster FargateEcsCluster --service FargateEcsServiceForTransfer --force-new-deployment

このコマンドの--clusterには、本手順で取得したFargateEcsClusterの値を指定します。

このコマンドの--serviceには、本手順で取得したFargateEcsServiceForTransferの値を指定します。

 

転送コンテナを再起動すると、アクセストークンが有効になります。

 

 

以上で、SAMLを使用したSSO設定が完了です。