SEくぼたの事件簿

インフラSEとしての活動を記録していきます

Azure AD Connect (AADC) を SQL Server Express で利用する場合の制限値の確認方法

こんにちは。

 

最近はオンプレ AD と Azure AD を Azure AD Connect (AADC) を利用して同期しているっていう環境をよく見かけます。

AADC では、 別途購入した SQL Server を利用することも可能ですが、 AADC に同梱される SQL Server Express Local DB を利用するといったケースも多いかと思います。

 

しかし、 SQL Server Express Local DBを利用する際には、以下の制限があります。

  • Azure AD Connect には、ID データを格納する SQL Server データベースが必要です。 既定では、SQL Server 2019 Express LocalDB (SQL Server Express の簡易バージョン) がインストールされます。 SQL Server Express のサイズ制限は 10 GB で、約 100,000 オブジェクトを管理できます。 さらに多くのディレクトリ オブジェクトを管理する必要がある場合は、インストール ウィザードで別の SQL Server インストール済み環境を指定します。 SQL Server のインストールの種類により、Azure AD Connect のパフォーマンスに影響することがあります。

docs.microsoft.com

 

ここで疑問に思ったのが、 サイズ制限 10GB で役 100,000 オブジェクト管理できるというところ!

SQL Express のサイズ上限が 10 GB というのはよく聞きますが (聞かれてない方はすみません、、、そういう制約なのです)、約 100,000 オブジェクトとは???ってところにも手を出してみます。

 

というわけで!今回は

AADC にて Local DB を利用する際の制約」について記載します。

 

上記に記載の制約とのことだったので、以下 3 つに分けて確認していきます。

 

  1. SQL Express のサイズ上限 10 GB はどこをみたらよいのか
  2. 約 100,000 オブジェクトとはどこをみたらよいのか
  3. 約 100,000 オブジェクトとはどういうことか

 

========================================

1. SQL Express のサイズ上限 10 GB はどこをみたらよいのか

========================================

標準設定にて AADC をインストールすると、AADC のバージョンにもよりますが、以下のパスにデータベース ファイルが配置されます。

※ AADC Version 2.xx で確認しています。

C:\Program Files\Microsoft Azure AD Sync\Data\ADSync2019

 

このパスに ADSync.mdf というファイルがあり、これが実際のデータです。

f:id:KKubo19:20211207195114p:plain

このファイルが 10 GB 以内であれば OK ということですね!

結構簡単なお話です。

 

========================================

2. 約 100,000 オブジェクトとはどこをみたらよいのか

========================================

次に約 100,000 オブジェクトってなんだろうってことなのですが、

これは、 AD から Azure AD に同期をおこなっているユーザーやグループのオブジェクト総数ではないという点に注意です!!!!!

同期する数が 100,000 を切っていたらいいというわけではないんですね!

 

それは、 AADC が以下の構成になっていることに起因するようです。

f:id:KKubo19:20211207201003p:plain

 

AADC の Sync サービスでは、上記のとおり、各ディレクトリ(AD や Azure AD)と接続する [コネクタ スペース] とコネクタ スペースの情報をマージする [メタバース] に分かれています。

細かい情報が知りたい方は、以下の URL を見てみてください。

docs.microsoft.com

 

なので!!!!!純粋に自分が同期していると思っているオブジェクトだけでなくそれ以外にもオブジェクトがいるよ!!ってことなんだそうです!

そのため、メタバースとコネクタ スペースのオブジェクト数をカウントする必要があるみたいですね~!

 

  • オブジェクト数のカウント方法

1. AADC で Synchronization Service を起動します。

f:id:KKubo19:20211207201453p:plain

2. Tools から Statistics をクリックします。

f:id:KKubo19:20211207201858p:plain

3. コネクタ スペースごとのオブジェクト数やメタバースのオブジェクト数が確認できます。

下図の赤枠がオブジェクトの総数です。

f:id:KKubo19:20211207202021p:plain

これが 約 100,000 まで OK ということですね!!!

 

========================================

3. 約 100,000 オブジェクトとはどういうことか

========================================

なぜ約 100,000 オブジェクトになっているのか、、、、、超えたらどうなるの?って思いますね!

これは、SQL Server Express の 10 GB のサイズ制限によるもののようです!

つまり、 だいたい 100,000 オブジェクトだとデータベースのサイズが 10 GB くらいになるよってことのようです!

 

なので、 100,000 オブジェクト超えていたとしてもデータベース サイズが 10 GB 以内なら特に問題ないようです!!

 

  • まとめ

今回は AADC について調べてみました。

Azure AD への同期数が オブジェクト数と思っていると意外と違う!!ってことにびっくりしますね!

最初はコネクタ スペース とか メタバースってなんやねん!!!!!!って思うかもですが、そうやってできているんだなあ~っとぼんやり思っていただくだけでもよいかも!

興味がある方は、公開情報に細かく記載があるのでぜひ読んでみてください。

docs.microsoft.com

 

 

  • 最後に!

Twitterでも情報発信したいと思いますので、興味があったらフォローしてください!

Azure AD と Salesforce のプロビジョニングでのエラー

こんにちは。

今回は Azure AD を利用した Salesforce とのプロビジョニングの設定でのエラーについて記載します。

プロビジョニングは簡単にいうと Azure AD のユーザーを Salesforce に同期するよってことですね。

 

その際にエラーが発生したので、対応した内容を記録しておきます。

 

  • 発生したエラー

今回、Azure AD のプロビジョニング ログに以下のエラーが発生していました。

・エラーコード

AzureActiveDirectoryDuplicateAppRoleForValueProperty

 

・エラーメッセージ

All application roles must have unique Id, Name and Claim in Azure AD. Attempt to update application roles resulted in a number of duplicated entries and will be aborted. This is most commonly caused by having non-unique role names in the directory of import. Application roles with non-unique values: [Id: 0921073b-b00d-40d7-be96-ac30921e3599, Name: Authenticated Website, Claim: ] [Id: 6808f7a0-09e8-42f5-a681-8cc0f60709cd, Name: Authenticated Website, Claim: ] . This operation was retried 0 times. It will be retried again after this date: 2021-11-04T09:46:54.4614788Z UTC

 

f:id:KKubo19:20211104185615p:plain

  • 設定方法

1. Azure AD にアクセスをしてエンタープライズアプリケーションをクリック

f:id:KKubo19:20211104191850p:plain

2. 新しいアプリケーションをクリック

f:id:KKubo19:20211104191721p:plain

3. 検索ボックスに salesforce と入力し、表示されたアイコンをクリック

f:id:KKubo19:20211104192113p:plain

4. 任意の名前を入力して、作成をクリック

f:id:KKubo19:20211104192144p:plain

5. 作成されたアプリケーションに移動し、プロビジョニングをクリック

f:id:KKubo19:20211104192647p:plain

6. 作業の開始をクリック

 

f:id:KKubo19:20211104192715p:plain

7. 自動を選択

f:id:KKubo19:20211104192748p:plain

8. Salesforce に管理者でログオンして、画面右上から設定をクリック

f:id:KKubo19:20211104192949p:plain

9. 私のセキュリティトークンのリセットからセキュリティトークンのリセットをクリック

f:id:KKubo19:20211104193100p:plain

10. 9で設定していたユーザーのメールアドレス宛に以下のメールが届きます。

その中のセキュリティトークンをコピーします。

f:id:KKubo19:20211104193609p:plain

10. Azure AD の画面に戻り、以下の情報を入力してテスト接続をクリック

管理ユーザー名 : Salesforce の管理アカウント

管理者パスワード : 上記ユーザーのパスワード

シークレットトークン : 10 で確認した値

テナントの URL : ガバメントのテナント以外であれば空欄

        ※ちなみに私は空欄

f:id:KKubo19:20211104193841p:plain

11. テストが成功したら保存をクリック

12.  表示されたマッピングから Provision Azure Active Directory Users をクリック

f:id:KKubo19:20211104194314p:plain

13. 必要に応じてマッピングを変更

      saleforce のユーザー名を Azure AD のほかの属性にする場合は、Username の行をクリック

f:id:KKubo19:20211104194531p:plain

14. ソース属性より変更可能

f:id:KKubo19:20211104194618p:plain

Azure AD の規定属性に加え、オンプレ ADからディレクトリ拡張した値も利用可能

f:id:KKubo19:20211104194732p:plain

設定が終わったら保存をクリック

 

  • 動作確認

再度プロビジョニングのブレードを確認すると、下図の状態になっています。

プロビジョニングが開始していない場合は、プロビジョニングの開始ボタンをクリック

f:id:KKubo19:20211104195033p:plain

今回はエラーが発生していたので、以下からログを確認しました。

f:id:KKubo19:20211104195139p:plain

冒頭に記載したとおり、以下のログが確認できてプロビジョニングが失敗していることが確認できます。

f:id:KKubo19:20211104195232p:plain

 

なにこれ!?!?!?!

ってなったわけですが、調べていくと、記載の通りロールが重複しているってことがわかります。

重複するロール名は「Authenticated Website」とあるので、 Salesforce 側のロール (プロファイル) を確認すると.........

f:id:KKubo19:20211104195631p:plain

おったあああああ~~~~~~~~~~

なんで同じ名前のプロファイルが2つあるや!!笑

これが原因と思われます!

 

ってことでこれを削除したいのだが。。。。。。。。

削除できん!!!笑

 

Salesforce のコミュニティを確認してみると、どうやらサポートに問い合わせて削除してもらわないといけないらしい。。。。。

これはめんどくさいぞ!!!!!!!笑

 

まあでもとりあえず問合せってことで以下のリンクより問合せ

Salesforce Help | Login

 

ログイン後、以下からケースを作成可能です。

f:id:KKubo19:20211104200303p:plain

問合せをしてしばらくすると、開発環境ではサポートできないとのこと。。。。。詰んだ。。。。

 

  • 他の方法を検討してみた

Azure AD にてプロビジョニングのマッピングを再確認してみると、 Profilename にマッピングしているものがいた!!

f:id:KKubo19:20211130183430p:plain

これを変更したらプロビジョニングできるのでは??と思ったのですが、削除できません。

なので一回上記赤枠の属性をクリックして対象の属性を他の値に変更します。

f:id:KKubo19:20211130183906p:plain

すると削除ボタンがアクティブになるので、削除!!!!

 

本来は、Profilename に値が入らなくなるのでやめたほうがいいのですが、検証環境のためこれで一時しのぎしました。

 

皆様ちゃんとサポートに問い合わせして対応してくださいね!

あくまでも一時しのぎです。ごめんなさい。

 

プロビジョニング ログを確認すると、プロビジョニングが成功したことが確認できます。

やはり、上記の Profilename 属性が原因だったことが分かりました。

f:id:KKubo19:20211130184422p:plain

 

 

 

  • 最後に!

Twitterでも情報発信したいと思いますので、興味があったらフォローしてください!

 

 

AzureADを利用してガルーンクラウドにシングルサインオンする(ドメイン参加端末のみアクセス許可)

こんにちは。

 

この間、前職の先輩社員から下記みたいなことってできるよね?

と相談を受けました。せっかくなので先輩社員とともに検証してみましたのでその内容を記録します。

※実際に構築する際のお役にたてば何よりです!

 

 

これを利用するために今回AzureADを利用しています。

大まかに以下の内容を利用します。

  1. オンプレADと AzureADをAzureADConnect で同期設定( Hybrid Azure AD Join )
  2. AzureADにてガルーンクラウドシングルサインオン設定
  3. ガルーンクラウドに対してAzureADの条件付きアクセスを設定

イメージだと下図の感じです。

※こちらの環境の都合上 Intune とか入ってしまっていますが無視してください。

f:id:KKubo19:20210925113556p:plain

 

  • 必要ライセンス

今回必要なライセンスは Azure AD Premium P1 以上です。

内訳は下記の感じです。

 1. オンプレADと AzureADをAzureADConnect で同期設定( Hybrid Azure AD Join )

  →AzureAD Freeで可能 ( SLAはないけど )

 2. AzureADにてガルーンクラウドシングルサインオン設定

       →AzureAD Freeで可能 ( SLAはないけど )

    3. ガルーンクラウドに対してAzureADの条件付きアクセスを設定

  →AzureAD Premium P1以上が必要

 

  • 今回の前提

今回の構成ではHybrid AzureAD Join端末が必要となります。

Hybrid Azure AD Join構成は過去に方法を書いたので今回は省略します。

 

kbtblog.hatenablog.com

また、下記に記載していますが、オンプレADのExtensionAttribute1という値を利用しています。

この値をAzureADに同期する設定をAzureADConnect内で実施していますが、今回は手順を省略しています。

 

 

今回のブログでは上記が完了した前提で、以下2点を記載します。

1. AzureADを利用してガルーンクラウドシングルサインオンを設定

2. AzureADの条件付きアクセスを設定

 

  • 事前検討事項

シングルサインオンを実施する際にだいたいいつも検討することになると思いますが、

以下を検討しましょう。

 

 1. ガルーンクラウドにアクセスしてよい人をどのように制御するか

 2. AzureADとガルーンクラウドのIDが違う場合、どのようにマッピングするか

 3. AzureADを経由せず、ガルーンクラウドにアクセスさせてよいか

 4. どの認証プロトコルを利用するか

 

今回はそれぞれこんな感じで対応します。

 1. AzureAD内でユーザーを指定

 →実運用だとグループとかで指定したほうがよいかと!

 2. 以下の図の通りマッピング

 ※AzureADのIDと利用SaaSのIDが違うってことが多々あるため、、、

f:id:KKubo19:20210925115950p:plain

今回はExtension Attribute1という場所を使ってサインインするようにします。

 

3. 今回はガルーンクラウドに直接アクセスもOKにします。

 ※NGにするときもチェックボックスにチェック入れるだけなので

 

4. ガルーンクラウドはSAML2.0に対応しているのでSAML認証で設定します。

 

  • 設定方法

AzureADポータルよりエンタープライズアプリケーションを開きます。

f:id:KKubo19:20210925120541p:plain

新しいアプリケーションをクリック

f:id:KKubo19:20210925120755p:plain

検索画面にKintoneと入力し、表示されたKintoneをクリック

※ガルーンクラウドなのになんで?と思うかもしれませんが、Kintoneとガルーンクラウドは共通のポータルになっているようだ。。。。

これってつまりガルーンクラウドのSSO設定したらKintoneにもSSOされるってことでは・・・・??逆も然り・・・笑

まあいいか・・・・(知らん顔)

f:id:KKubo19:20210925120911p:plain

名前を入力して作成をクリック

f:id:KKubo19:20210925121307p:plain

ユーザーとグループの割り当てをクリック

f:id:KKubo19:20210925121454p:plain

ユーザーまたはグループの追加をクリック

f:id:KKubo19:20210925121533p:plain

選択されていませんをクリック

f:id:KKubo19:20210925121610p:plain

対象のグループやユーザーを選択

f:id:KKubo19:20210925121737p:plain

割り当てをクリック

f:id:KKubo19:20210925121803p:plain

シングルサインオンをクリックしてSAMLを選択

f:id:KKubo19:20210925121912p:plain

ガルーンクラウド側に移り、cybozu.com共通管理をクリック

f:id:KKubo19:20210925122200p:plain

ドメイン情報が必要になるため、ドメインを控える

その後、ログインをクリック

f:id:KKubo19:20210925122430p:plain

SAML認証を有効にするにチェックを入れる

f:id:KKubo19:20210925122512p:plain

Service Prividerメタデータのダウンロードをクリックしてxmlファイルをダウンロード

f:id:KKubo19:20210925122716p:plain

AzureAD側に戻り、メタデータをアップロードするをクリックして上記でダウンロードしたxmlファイルをアップロード

f:id:KKubo19:20210925122849p:plain

赤枠内がガルーンクラウドドメインとなるよう情報を追記

※エンティティIDは*がデフォルトで入りますが、*だとエラーになるのでドメイン名に修正

なお、一回エラー起きると保存できなくなるのでやりなおし、、、笑

f:id:KKubo19:20210925123206p:plain

ユーザー属性とクレームの編集をクリック

f:id:KKubo19:20210925123343p:plain

必要な要求の値をクリック

f:id:KKubo19:20210925123559p:plain

ソース属性から今回ガルーンクラウドにアクセスするときに利用する値の場所を選択して保存

user.msds_cloudextentsionattribute1を選択しました。

f:id:KKubo19:20210925123701p:plain

証明書(Base64)のダウンロードをクリックして証明書をダウンロード

f:id:KKubo19:20210925123917p:plain

ログインURLとログアウトURLをメモ

f:id:KKubo19:20210925124031p:plain

ガルーンクラウド側の画面に戻り、SSOエンドポイントURLにログインURLをログアウト後に遷移するURLにログアウトURLを入力し、先ほどダウンロードした証明書をアップロードして保存

f:id:KKubo19:20210925124201p:plain

ちなみにこれにチェックボックスいれるとかならずAzureADからサインインするように制限できます。

f:id:KKubo19:20210925124236p:plain

ただし、ドキュメントみると、これにチェックいれるとKintoneのAPIが使えなくなるみたいなこと書いてあった。。。。。まじっすか!!!

検証してないのでほんとかわからないのですが、、、、一応

 

AzureADに戻りTestをクリック

f:id:KKubo19:20210925124406p:plain

対象ユーザーを選択

f:id:KKubo19:20210925124432p:plain

無事入れました。

f:id:KKubo19:20210925124508p:plain

AzureADから発行するURLだとここがログインURLになっているのですが、

ガルーンクラウドはSP-Iniciate対応なので、「https://xxx.cybozu.com/g/」でアクセスすれば、予定表画面にアクセス可能です。

ここまでで、シングルサインオンの設定は完了!

 

ここからは条件付きアクセスを使ってHybridAzureADJoinした端末からのみアクセス可能にします。

 

エンタープライズアプリケーション内の作成したアプリから条件付きアクセスを選択し新しいポリシーをクリック

※先ほどまでと同じブレードです。

f:id:KKubo19:20210925125120p:plain

名前を入力

f:id:KKubo19:20210925125230p:plain

今回はHybrid AzureAD JoinのみOKとするので、こんな設定にしました。

f:id:KKubo19:20210925125413p:plain

f:id:KKubo19:20210925125538p:plain

本来はアクセス可能としたグループとかを割り当てることになるかと思います。

※アクセスできなくなった時のことを考えて対象外のユーザーを作成しておくことも重要

 

また、今回はとりあえずで作成したので考慮していませんが、

f:id:KKubo19:20210925125654p:plain

この設定をしていないので、スマホからのアクセスが不可となります。

f:id:KKubo19:20210925125723p:plain

スマホからもアクセスしたい場合、この条件から対象外として、スマホ用の条件付きアクセスを作成すると良いと思います。

※Intuneにて準拠済みならOKみたいなのをスマホ用として作成するとよいかも!

 Intuneライセンスいるけどね。。。。

 

設定が終わったら、作成ボタンをクリックしますが、デフォルトだとレポート専用となっています。

※レポートは出すけど、実際にブロックしたりしないよってことね!

慎重にやるならこれで稼働したのちオンに切り替えるとよいと思います。

f:id:KKubo19:20210925125956p:plain

ポリシーが作成されたのち、ちゃんと適応されるか確認するために、What ifを利用します。

f:id:KKubo19:20210925130116p:plain

条件を指定してWhat ifを実行すると

f:id:KKubo19:20210925130240p:plain

どのポリシーが適用されるか確認できます。

f:id:KKubo19:20210925130314p:plain

実際にアクセスすると

f:id:KKubo19:20210925130513p:plain

ブロックされました!!!

 

Hybrid Azure AD Join端末から試すと!

WindowsにサインインしただけでAzureADのログオン画面もでることなくアクセスできました!

f:id:KKubo19:20210925130748p:plain

ちなみに今回Chromium Edgeで実施していますが、Chromeとかだとデフォルトはこうなるのでご注意ください。

f:id:KKubo19:20210925131013p:plain

  • まとめ

条件付きアクセスとかを色々変えると様々なパターンのアクセス条件が作成できるので、ライセンスお持ちの方はぜひ利用してみては??

 

 

  • 最後に!

Twitterでも情報発信したいと思いますので、興味があったらフォローしてください!