it-swarm-ja.com

Azure ActiveDirectoryを使用してVMベースのWebサーバーへのアクセスを保護する

特注のWebベースのサービスをAzureに導入しようとしています。これは3つのLinuxVMで実行され、そのうちの1つは(ポート443で)外向きである必要があり、他は別のサブネット上にあり、外向きのサーバーにのみアクセス可能である必要があります。このビットは簡単で、正常に機能します。

私の問題は、独自の認証がないことです。そのため、Azureサービス(できればMFAを使用)を使用して外部ユーザーにこれを提供したいと思います。これは私が混乱しているところです。

これを行うために、Azure Active DirectoryB2Cテナントをセットアップしました。次に、条件付きアクセスを提供するためにこれにアプリケーションを登録し、次にWebサーバーにリンクするためにAzureアプリケーションプロキシを登録する必要があると考えました。

ただし、すべてのドキュメントは、オンプレミスサービスにリンクするアプリケーションプロキシについて説明しているようであり、私のようなクラウドにすでに存在するサービスについては説明していないので、他のものを使用する必要がありますか?

間違ったツリーを吠えているので、別のサービスセットを使用する必要があるのでしょうか、それともAzureでは実行できないのでしょうか。誰かがいくつかのガイダンスを提供することができれば、私は非常に感謝するでしょう。

7
forensicpete

Azureで認証を管理する方法はいくつかあります。特に、Active Directory/AzureADディレクトリを使用する大規模な組織の場合はそうです。ただし、あなたの場合は、Azure AD B2Cのみを使用する必要があります(ビジネスディレクトリは必要ありません)。

少し違うものが必要な賞金があるので、2つに分けます。

  • パート1:パブリック登録(Azure AD B2C)を使用したAzure経由の認証方法を使用したい。
  • パート2:Active Directory資格情報(Azure AD)を使用したAzure経由の認証方法を使用したい。

有用な情報

ちょっとしたリマインダー:

  • Active Directory= Microsoftが設計したローカルビジネスディレクトリで、大企業が何年も(1999)使用しており、独占的に使用されています。
  • Azure Active Directory=クラウドの要件に適合した最新のビジネスディレクトリ。ローカルのActiveDirectoryと同期して、ローカルの世界とクラウドの間で柔軟性を持たせることができます。 (Office365は完全にAzureADに依存しています。)
  • Azure Active Directory B2C=クライアント登録に適した最新のユーザーディレクトリ。自動登録機能を備えたID管理システムを提供します。 (従来のID管理と比較したこのサービスの利点については説明しません。これは主題ではありませんが、ここで情報を簡単に見つけることができます: https://Azure.Microsoft.com/en-us/ services/active-directory-b2c / )->重要:これはAzure ActiveDirectoryの拡張機能です。

Azure Application Proxyについて:これは主に、Permiseで既にアクセス可能であり、ActiveDirectoryまたはAzureAD認証をすでに使用しているインフラストラクチャのケースに使用されます。このツールは、外部(特定のログインインターフェイスの一種)から認証トークンを取得し、パブリックIPからアプリケーションへの安全なリモートアクセスを提供します。あなたの場合、それは役に立ちません。あなたはすでにパブリックIPを持っているので、あなたのアプリケーションはすでに外部から利用可能です。

パート1:パブリック登録(Azure AD B2C)を使用したAzure経由の認証方法を使用したい。


これは主に、Webアプリケーションの安全で完全な認証方法を持つユーザーのポートフォリオを管理するためのターンキーソリューションです。

1.1どのように機能しますか?

Azure AD B2Cサービスを作成すると、最初に、選択した名前のAzure ADディレクトリが作成され、その後にDNSサフィックス.onmicrosoft.comが続きます。次に、この新しいディレクトリをAzure ADB2Cサービスに自動的にリンクしました。メールで登録したユーザーは、AzureADディレクトリに追加されます。 それはあなたのデータベースです。

そこから、新しいユーザーはAzure ADB2Cを介してAzureADディレクトリに直接登録できると考えられます。

操作をすばやく図式化するには:

  1. クライアントはサーバーから「接続」をクリックします。
  2. サーバー上のスクリプトは、Azure AD B2CサービスのURL(通常、b2clogin.comやmicrosoftonline.comなどのDNSサフィックスが付いています)にリダイレクトします。
  3. そこから、クライアントは、ログイン/パスワード(MFAあり/なし)で接続するか、登録することを提案して自由にカスタマイズできるページを表示します。
  4. クライアントがクリックしてログイン/登録すると、Azure ADB2Cが認証トークンをサーバーに返します。
  5. サーバー(コード)はこのトークンを使用し(REST API(MSAL))を介してAzure AD B2Cと通信するため)、アプリケーションへのアクセスを許可するかどうかを決定します。

1.2 Azureから構成するにはどうすればよいですか?

2つの重要なステップがあります(他のオプションを見つけてください):

アプリケーションの登録:

  • プログラムからAzureAD B2C REST APIに接続するための構成情報を作成するだけです。
  • 構成内容:
    • WebAPIをアクティブ化する必要があります
    • URL返信を指定する必要があります。
    • これは、Azure ADB2Cによって送信された情報を取得するWebサービスのURLです。これは、コードがユーザー認証を検証し、ナビゲートを継続できる場所です。
    • 送信されたPOST変数を回復する方法を知っている限り、任意のURLが有効です。
    • 画像: アプリケーションの登録
    • スクリプトの構成に使用されるIDアプリケーションに注意してください。

ユーザーフローを作成します。

  • ここで、クライアントがログインページに表示されたときに表示される内容に関する戦略を設定します。
  • 構成内容:
    • 「サインアップしてサインインする」オプションを開始することを選択する必要があります(他のことは後で行いますが、ここに興味深いリンクがあります: https://docs.Microsoft.com/en-us/Azure/active -directory-b2c/user-flow-versions )。
    • IDプロバイダー「Eメール」を選択してください
    • (ここでMFAを観察できます。後で戻ってきます)
    • 活用する属性を選択します。
    • 収集属性= Azure ADB2Cがデータベースに収集するもの。
    • 要求を返す= URL応答でサーバーに加えてAzureADB2Cが返すもの。
    • 画像: ユーザーフロー
  • 実現すると、Webアプリケーションを使用できるように準備できるようになります。

1.3 Webアプリケーションから構成するにはどうすればよいですか?

var msalConfig = {
    auth: {
        clientId: "e760cab2-b9a1-4c0d-86fb-ff7084abd902", // This is your client ID
        authority: "https://fabrikamb2c.b2clogin.com/fabrikamb2c.onmicrosoft.com/b2c_1_susi", // This is your holding info
        validateAuthority: false
    }
    hidden: {
        cacheLocation: "localStorage",
        storeAuthStateInCookie: true
    }
};
  • 彼のClientIdを登録する必要があります(これは、以前にAzure AD B2Cに登録したものに対応します)
  • そして、ユーザーフローの名前の末尾が付いた権限、たとえば私にとっては、次のようになります。 https://makoad.b2clogin.com/makoAD.onmicrosoft.com/B2C_1_Default2

    • 122行目には、MSALによって取得されたトークンの使用方法を示す関数callApiWithAccessTokenがあります。
            headers: {
              'Authorization': 'Bearer' + accessToken,
            }
  • これは古典的で、accessTokenはページを使い続けるためのユーザーのパスポートです。そこから、ユーザーのIDを正しく取得してページで活用するために必要なすべてのGET/POST/PUTリクエストを呼び出すことができます。
  • 必要に応じて詳しい情報を提供することもできますが、サンプルページで十分だと思います。

1.4 MFAと条件付きアクセスを構成するにはどうすればよいですか?

  • 残念ながら、Azure AD B2CのMFAの場合、条件付きアクセスを使用することはまだできません。
  • 条件付きアクセスとMFAは、AzureADでのみ機能します。 (Azure ADではユーザーの登録は公開されません->これを行うための手法はまだありますが、時間がかかります)

パート2:Active Directory資格情報(Azure AD)を使用したAzure経由の認証方法を使用したい。


  • 進行中の作業。 :)(少し長いです)

それが誰かを助けることを願っています。 (すべてを説明するのは難しいです、いくつかの情報を避けるために事前に申し訳ありません)

4
Reclad

これを実現する方法はたくさんありますが、私がよく知っているいくつかの選択肢について簡単に説明します。

この全体を通して、Azure ActiveDirectoryをAADと呼びます。

AADとは

AADとは何か、そうでないものについて簡単に説明しましょう。 AADはActive Directoryではありません。彼らに共通しているのは名前だけです。 AADはLDAPではなく、RADIUSをサポートしておらず、ActiveDirectoryエンドポイントを必要とするものに対してActiveDirectoryエンドポイントとして機能することはできません。

AADはREST APIベースの認証サービスです。OAuth 2をサポートしており、SAMLもサポートしていると思います。構成するものはすべてこれらのエンドポイントを使用する必要があります。認証。

少し皮肉なことに、Azureのネイティブサービスの多くは、認証エンドポイントとしてAADをサポートしていません

実行可能なオプション

Azure Application Gateway

これは基本的に、Azureでホストされているサービス用のAzureアプリケーションプロキシです。設定するのが最も簡単な解決策かもしれません。前回使用してからしばらく経ちますが、AAD認証に対応しているはずです。 Application Gatewayをセットアップおよび構成する方法については、Azureが提供するドキュメントがたくさんあります。

Azure Application Gatewayのドキュメント

サードパーティの認証プロキシ

デプロイメントの前でApacheやnginxなどを使用している場合は、 Skipper のようなサードパーティの認証プロキシを使用してWebサイトへのアクセスをゲートできます。スキッパーサービスをデプロイし、顧客のAAD OAuthエンドポイントに接続するように構成する必要があります。

実行不可能なオプション

Azureアプリケーションプロキシ

質問で述べたように、これはAzureでホストされているアプリケーションでの使用を目的としたものではありません。

サードパーティのVPNゲートウェイ

OAuthまたはバックエンドメカニズムとしてSAMLをサポートするVPNサーバーを認識していません。OpenVPNはそれをサポートしていないと思います。これは最も一般的に使用されているVPNサーバーです。可能性があります。ただし、オプションが存在する可能性があります。

AzureVPNゲートウェイ

ADDで認証する場合、Azure VPN GatewayはTLSまたはRADIUSのいずれかによる認証のみを許可し、どちらもAADと互換性がないため、これは実際にはオプションではありません。結果として、これは実行可能なオプションではありません。

2
Swiss