SAS Viya環境のシングルサインオン設定方法(SAML編) 第2部 - 認証と認可の実装

0

背景

シングルサインオンのログイン方式(以下はSSO)は、多くのクラウドサービスの中で主流のログイン方法として、多くの利点があります。例えば、パスワードの使用が減少することで、セキュリティリスクを低下させることや一度のログインで複数のサービスやアプリケーションにアクセスできることによる、ユーザビリティの向上等です。

前回の記事(SAS Viya環境のシングルサインオン設定方法(SAML編) 第1部 - 基礎と準備)では、Azure ADとの連携でSSOを実現するための基礎概念と準備作業を紹介しました。本記事の第二部では、SAS Viyaのユーザーが運用や作業を行う際の参考となるよう、Azure ADとの連携でSSOを実現するための設定方法を下記のドキュメントの内容を基に整理することを目的としています。実際の設定を行う際は、常に最新バージョンのドキュメントを参照することをお勧めします。これにより、最新の情報に基づいた適切な手順で作業を進めることができます。

SAS Viyaドキュメント:SCIMの設定方法
SAS Viyaドキュメント:認証の設定方法

以下は本記事内容の一覧です。読者は以下のリンクで興味のあるセクションに直接ジャンプすることができます。

1.Microsoft Entra IDの作成
2.SCIM認可管理の設定
3.SAML認証の設定

1. Microsoft Entra IDの作成

1-1. 構築済みのSAS Viya環境とAzureのActive Directoryを連携するには、Azure側でAD Enterprise Appとアプリの管理者権限が必要です。

Azureポータル上で、「Microsoft Entra ID」と検索し、サービスを選択します。そして、左側メニューから「エンタープライズ アプリケーション」をクリックすると、既に登録したアプリの一覧画面が表示されます。新しいアプリを作成するために、画面上部の「新しいアプリケーション」ボタンをクリックします。その後に表示された画面の左上の「+独自のアプリケーションの作成」をクリックします。

1-2. アプリケーションの作成画面で、アプリの名前を設定し、「ギャラリーに見つからないその他のアプリケーションを統合します (非ギャラリー)」のオプションを選択し、「作成」ボタンをクリックします。

1-3. アプリの画面内で、左側の「Owners」をクリックし、アプリのオーナーが申請したユーザと一致しているかを確認します。これで、Microsoft Entra IDの作成は完了しました。

2. SCIM認可管理の設定

2-1. SAS Viyaのデフォルト認証方式はLDAPです。SSOログイン方式を利用するには、認証方式をSCIMに変更する必要があるため、まずはLDAPを無効にします。

①sasbootユーザでSAS Viyaの環境管理画面にログインし、「Configuration」画面で「identities service」を検索し、右側の画面内の「spring」の編集ボタンをクリックします。

②「profiles.active」からidentities-ldapを削除し、「Save」ボタンをクリックします。

③右上の「New Configuration」をクリックし、「sas.identities.providers」を選択します。

④「ldap.enables」をオフにし、「scim.enables」がオンになっていることを確認した上で、「Save」ボタンをクリックします。これでLDAPの無効化が完了しました。

2-2. 次にSAS Viya上でSCIMを利用するためのクライアントを作ります。この部分の作業はコマンドで実施するので、SAS Viya構築時に利用したサーバを使用します。

①まずRoot CA証明書を準備し、下記のコマンドで証明書のパスを定義します。下線部は適宜修正してください。

export SSL_CERT_FILE=$deploy/site-config/security/DigiCertCA.crt

②そして、SAS Viyaにログインするためのトークンを取得します。ネームスペースを適宜に修正してください。

export NS=viya-namespace; \
    export CONSUL_TOKEN=`kubectl -n ${NS} get secret sas-consul-client \
    -o go-template='{{(index .data "CONSUL_HTTP_TOKEN")}}' | base64 -d`

③コマンドが正しく実行されたことを確認します。

echo $CONSUL_TOKEN

以下のような出力になるはずです。

acXXX244-eeef-XXX-95ef-b1f3fXXX65e5

④新しいクライアント ID と secret を登録するためのトークンを取得します。

INGRESS_URL=https://hostname.example.com; \
    export BEARER_TOKEN=`curl -sk -X POST \
    "${INGRESS_URL}/SASLogon/oauth/clients/consul?callback=false&serviceId=idp-client-id" \
    -H "X-Consul-Token: $CONSUL_TOKEN" | awk -F: '{print $2}'|awk -F\" '{print $2}'`

⑤コマンドが正しく実行されたことを確認します。

echo "The registration access-token is: " ${BEARER_TOKEN}

以下のような出力になるはずです。(重要)こちらのトークンは後で使用するため、保存しておく必要があります。

The registration access-token is:  eyJhbGciOi-hz_-1eQhpfd_xxxxxxxxxxxxxxxx

⑥IDプロバイダーのクライアントIDをclient_credentialsグラントタイプで登録します。

curl -k -X POST "${INGRESS_URL}/SASLogon/oauth/clients" \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer $BEARER_TOKEN" \
    -d '{
        "client_id": "azure",
        "client_secret": "azuresecret",
"scope": ["SCIM"],
        "authorities": ["SCIM"],
        "authorized_grant_types": ["client_credentials"],
        "access_token_validity": 473040000
        }'

以下のような出力になるはずです:

{"client_id": "idp-client-id","authorized_grant_types":
    ["client_credentials"],"autoapprove":[],"access_token_validity":473040000,"authorities":["SCIM"],
    "lastModified":1628126258430,"required_user_groups":[]}

これでSAS Viyaでのクライアントが完了しました。

2-3. 次に、Azure ADでSCIMプロビジョニングの設定を行います。
①まず、Azure上で申請したAzure Enterprise Appを開き、「Assign users and groups」をクリックします。

②SAS Viyaにアクセスするユーザ/グループを選択するために、画面の上の「Add user/group」ボタンをクリックします。

③ユーザまたはグループ名を検索し、選択した上、「Assign」ボタンをクリックします。

④ユーザまたはグループの追加が完了したら、画面に表示されます。

⑤Azure ADサービスからSAS Viyaへのアクセスが必要なため、その前に、SAS Viya側でAzure ADのIPアドレスからのアクセスを許可するための設定が必要です。まずはAzure ADサービスが利用するIPアドレスを調べます。下記のサイトにアクセスし、「Azure IP Ranges and Service Tags」をダウンロードします。

https://www.microsoft.com/en-us/download/details.aspx?id=56519

ファイルを開き、AzureActiveDirectoryと検索し、「addressPrefixes」にあるIPアドレスをコピーします。

⑥ターミナルで下記のコマンドを実行し、Ingressコントローラのサービスを開き、「loadBalancerSourceRanges」下に、コピーしたIPアドレスを追加します。IPアドレスを追加する際に、フォーマットを下記の図のように揃える必要があります。

⑦次はユーザのプロビジョニングを実施します。申請したAzure Enterprise Appの画面に戻って、左側の「Provisioning」を選択し、Provisioning Modeで「Automatic」を選択します。

その後、次のような画面が表示されたら、「Tenant URL」にSAS ViyaのURLに/identities/scim/v2を加えた上で、入力します。例えば、SAS ViyaのURLがhttps://hostname.example.comの場合、https://hostname.example.com/identities/scim/v2を入力します。「Secret Token」にステップ2-1の④で作成したトークンを貼り付けます。完了したら、「Test Connection」ボタンをクリックし、接続を確認します。成功したら、「Save」ボタンをクリックします。

⑧「Admin Credentials」の設定を保存し終わったら、下記のような「Mappings」が表示されます。

まず、「Provision Azure Active Directory Users」をクリックし、「Enabled」を有効にし、「Attribute Mappings」で下記のSAS Viyaが使わない項目を削除します。
・preferredLanguage
・givenName
・surname
・Join(“”,[givenName],[surname])
・physicalDeliveryOfficeName
・employeeId
・department
・manager
完了したら、上の「Save」ボタンをクリックし、画面を閉じます。以下は、設定済みの画面となります。

次に、「Provision Azure Active Directory Groups」をクリックし、「Enabled」を有効にし、「Attribute Mappings」でdisplayNameとmembers以外の項目を削除し、「Save」ボタンをクリックします。

⑨「Mappings」を設定が完了したら、「Settings」の画面が表示されます。「Provisioning Status」をOnにして、「Save」ボタンをクリックします。そして、画面を閉じて、「Provisioning」のホーム画面に戻ります。

⑩最後は「Start provisioning」をクリック、provisioningプロセスが開始します。このプロセスは、追加したユーザ数によって、最大数時間かかる場合があります。完了したら、下記の図のように、ユーザ数とグループ数が表示されます。

⑪前の作業が完了後、次にSAS Viyaの環境管理画面を開き、左側のメニューから「Users」を選択し、右上の「Reload Identities」をクリックします。下図のように、ユーザ情報が表示されれば、成功です。

3. SAML認証の設定

ユーザ情報の登録が完了したら、次は登録されたユーザがSSO方式でログインできるようにするために、SAML認証設定を行います。

3-1. まずはSAS Viya側での設定を行います。ユーザsasbootでSAS Viyaにログインし、環境管理の「Configuration」画面を開きます。そして、「Definitions」を選択し、「sas.logon.saml」と検索し、画面右上の「New Configuration」ボタンをクリックします。

3-2. 下記各項目を入力します。

①「entityBaseURL」:SAS ViyaのベースURLに/SASLogonを加えた上で、入力します。例:https://hostname.example.com/SASLogon

②「entityID」:SAS Viyaのドメイン名を入力します。この値は次のAzureでの設定で使われます。例:hostname.example.com

③「serviceProviderCertificate」:サービスプロバイダが使用するPEMエンコード(base64)された証明書(例:sample_hostname_example_com.crtファイル)のコピーを貼り付けてください。このフィールドは必須です。

④「serviceProviderKey」:サービスプロバイダが使用するPEMエンコード(base64)プライベート証明書(例:で申請したsample_hostname_example_com.keyファイル)のコピーを貼り付けてください。このフィールドは必須です。下図は設定のイメージです。

⑤「setProxyParams」:無効にします。
他の部分はすべてデフォルトのままで、「Save」ボタンをクリックします。

3-3. 次は「sas.logon.saml.providers」の各項目の設定です。前の設定画面を閉じたら、「Definitions」で、「sas.logon.saml.providers」と検索し、画面右上の「New Configuration」ボタンをクリックします。そして、下記各項目を入力します。

①「idpMetadata」:入力する値はAzureで確認する必要があります。Azure Enterprise Appの画面を開き、「Set up single sign on」ボタンをクリックします。

開いた画面の「SAML Certificates」の「App Federation Metadata Url」の部分をコピーし、「idpMetadata」に貼り付けます。

②「linkText」:ログインページに表示されるログインリンクのラベルテキストを入力します(例:SSOログイン)。このフィールドはオプションです。任意の文字列を入力します。

③「metadataTrustCheck」:Azure IDプロバイダー証明書を確認するかどうかを指定します。On に設定します。

④「name」:このプロバイダーの一意の名前を指定します (例: azure)。特殊文字を含めないでください

⑤「nameID」:デフォルトの値のままにしておきます。

⑥「showSamlLoginLink」:このIDプロバイダーのサインインページにリンクを表示するかどうかを決定します。Onに設定します。

⑦他の部分はすべてデフォルトのままで、「Save」ボタンをクリックし、SAS Logon Managerのサービスを再起動します。

3-4. 次はAzure ADでEnterprise Appを設定します。
①https://hostname.example.com/SASLogon/saml/metadataからSASメタデータXMLファイルをダウンロードします。

②XMLファイルを開き、AssertionConsumerServiceと検索し、「AssertionConsumerService」タグの下のURLとIndexをコピーします。これは後でAzure側の設定で使用します。

③もう一度Azureポータルから、3-1で作ったアプリを開き、右側の「シングルサインオンの設定」をクリックします。

④「基本的な SAML 構成」のセクションの「編集」ボタンをクリックし、各項目を下記のように設定します。

・識別子(エンティティID):SAS Viyaのホスト名を入力します。例:hostname.example.com
・応答URL(Assertion Consumer Service URL):ダウンロードしたXMLファイル中の赤い枠の部分のURLを入力します。
・サインオンURL:空欄にします。
・リレー状態:/SASDrive/を入力します。
・ログアウトURL:空欄にします。

設定が完了したら、「保存」ボタンをクリックします。

⑤画面一番下の「Test」ボタンをクリックし、右側に出てきた画面内の「サインインのテスト」をクリックします。その後、ブラウザでSAS Viyaのログイン画面が表示されれば、Azure側の設定は完了となります。

5. SAS Viya側でのセキュリティ設定

SAML認証を使用する際、ユーザーのブラウザが安全に身元確認情報をサービスプロバイダに送信するために、特定のセキュリティ設定が必要になります。これは、ユーザーのセッションとSAMLリクエストを正しく関連付けるためです。

5-1. sasbootユーザを使って、SAS Viyaにログインし、左のメニューから「環境管理」を開きます。その後、環境管理のメニューから、「構成」をクリックし、右側の検索画面で、「定義」を選択し、「sas.commons.web.security.cors」を検索します。

5-2. 右側の画面から、「新しい構成」をクリックし、上部のサービスとのところで、「SAS Logon Manager」を選択します。

5-3. そして、構成の編集の画面内に、「allowedOrigins」の項目が表示され、その値を「https://login.microsoftonline.com」に修正し、保存ボタンをクリックします。

5-4. 定義の検索画面に戻り、今回は「sas.commons.web.security.cookies」を検索し、同様な操作で、「SAS Logon Manager」の構成を作成し、今回はsameSiteの値を「None」に設定し、保存します。

5-5. すべての設定が完了後、「SAS Logon Manager」のサービスを再起動すると、SSOログインが有効になります。

5-6. 最後は、もう一度ブラウザからSAS ViyaのURLにアクセスし、ユーザとパスワードを入力する箇所の下の「SSOログイン」をクリックすれば、ユーザIDとパスワードを入力することなく、シングルサインオンでSAS Viyaにログインできます。

まとめ

以上で、SAS ViyaとAzure ADを連携するSSOログイン方式の設定方法についての紹介を終えます。この手順を通じて、安全で効率的なシングルサインオン環境を構築することができ、ユーザーの利便性とセキュリティを同時に向上させることが可能になり、ユーザーは一つの認証情報でSAS Viyaと他のAzure ADに対応するアプリケーションへのアクセスが容易になります。

Share

About Author


SAS Viya Business Promotion & OSS Innovation推進室 Analytical Consultant

半導体業界でデータ分析による異常予兆検知システムを開発した経験を持つ。現在、業務課題解決ためにAIプラットフォーム上にオープンソースなどを活用したアナリティカルソリューションの構築や提案を担当している。さらに、アナリティクスハッカソンなどのイベントの企画に従事している。

Leave A Reply

Back to Top