サポートアドバイザリ:Azure SAML サポート
このドキュメントでは、AppDynamics 製品のサポートアドバイザリについて説明します。
概要
4.5.16 の時点で、SAML Azure ユーザーはコントローラ権限を失う可能性があります。
影響を受けるソフトウェア
4.5.16 以降のコントローラへのログイン。
回避策
以下の手順を実行し、AppDynamics Azure 統合設定でデータ変換を適用します。
Azure とコントローラでの属性の設定
Azure とコントローラで属性を設定するには、以下の手順に従います。
Azure での属性の設定
SAML 応答に追加する属性の要求を追加します。以下の手順は、コントローラで SAML を使用するために必要な 3 つの属性を Azure に追加する方法を示しています。
-
Azure から [User Attributes & Claims] ページに移動します。
-
[Add new claim] をクリックします。
-
最初の属性はユーザー名の属性です。次の例では、属性は
Usernameで、user.givennameとuser.surnameを結合する変換を通じて属性が形成されます。Azure は、コントローラの SAML 属性 Username Attribute にマッピングする SAML 応答に属性Usernameを渡します。名前空間を使用している場合は、名前空間も属性<namespace>/Usernameの一部になることに注意してください。 - 別の要求を作成して、表示名の属性を設定します。この例では、SAML 応答に渡され、コントローラの SAML 属性 Display Name Attribute にマッピングされる属性
DisplayNameを設定します。
-
最後の属性では、要求を作成し、ユーザーの電子メールの属性を設定します。Azure には電子メール属性のプリセットの名前空間があるため、[追加の要求(Additional claims)] > [要求名(Claim name)] から
http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddressをクリックして自動的に電子メール属性を作成します。
- 次のように作成された要求が表示されます。[Name] フィールドはデフォルト値の
emailaddressのままにします。
コントローラでの属性の設定
次の 3 つの方法のいずれかを使用して属性を設定します。
同じ属性を使用するコントローラ
- Azure で属性を設定したら、ローカル管理者としてコントローラにログインし、[Administration > Authentication Provider] に移動します。
-
[SAML Attribute Mapping] セクションで、Azure のユーザー名について設定されている属性の値を [Username Attribute] フィールドに入力します。
-
[Display Name Attribute] に、Azure の表示名について設定されている属性の値を入力します。
-
最後に、Azure の電子メールについて設定されている属性の値を [Display Name Attribute] に入力します。次のスクリーンショットの例は、前のセクションで設定した属性の例を含む [SAML Attribute Mappings] フィールドを示しています。[電子メール属性(Email Attribute)] フィールドには、名前空間と属性名
emailaddressが含まれていることに注意してください。
SAML 応答で属性を渡す
- SAML 応答で Name
Idを渡し、その値をSamlAccountName、UPN、emailなどの一意の識別子として設定できます。 -
コントローラで、[Username Attribute] フィールドを次のスクリーンショットのように空のままにします。NameId として
emailを渡す場合、AppDynamics はユーザー名のみを使用してユーザーを作成します。「@」以降はすべて無視されます。たとえばabc@xyz.comのような電子メールアドレスの場合、ユーザー名はabcとして作成されます。ログイン後、ユーザーは SAML で [Role Mapping] セクションに行った設定に基づいてロールを取得します。
注: ただし、ロールを手動で割り当てた場合は、ローカルユーザーとしてコントローラにログインし、ユーザーに権限を手動で付与する必要があります。新しく作成されたすべてのユーザーに対して行う必要があります。これにより、重複ユーザーが作成されることに注意してください。
コントローラでユーザー名属性を使用
コントローラの [Attribute] フィールドを、ユーザーを一意に識別する属性に設定します。例:SamlAccountName、UPN、email。このフィールドが設定されている場合、AppDynamics では SAML 応答からの NameId が考慮されないため、[Username Attribute] セクションで設定した内容がユーザー名として使用されます。ログインすると、ユーザーはコントローラの [SAML to Role Mapping] セクションの設定に基づいてロールを取得します。 REST API を使用した重複する SAML ユーザーの削除
以下の手順に従って、コントローラ REST API を使用して重複する SAML ユーザーを削除します。
ユーザー識別子の取得
- 次のいずれかのREST API メソッドを使用して、削除するユーザー識別子を取得します。
- 名前でユーザを取得する
-
注: AppDynamics と SAML に同じ名前を持つユーザーがいる場合、これらの API は、ユーザーが SAML か AppDynamics かを区別しません。
- (オンプレミスコントローラのみ)REST API でユーザー識別子を見つけることができない場合は、コントローラの MySQL データベースにクエリを送信できます。
- コントローラのホストマシンにログインします。
<controller-install-dir>/bin.への変更-
使用する OS に基づいて、次のコマンドを実行します。
- Linux
-
./controller.sh login-db - Windows
-
controller.bat login-db
-
プロンプトが表示されたら、コントローラデータベースのルートユーザーパスワードを入力します。
-
以下の MySQL クエリを実行します。
Select id, name from account.user where name like '%<name which you want to delete>%' and security_provider_type='SAML'
- (SaaS コントローラ)クライアントブラウザを使用してユーザー識別子を取得することもできます。
- Chrome または任意のブラウザを開き、コントローラにログインします。
- Developer Tool を開き、[Network] タブをクリックします。
- コントローラから、[Settings > Administration > Users] に移動します。
- users のネットワークコールを検索し、その応答を表示します。
- 応答からユーザーの ID を見つけ、以下に示すように「SAML」が
securityProviderTypeの値であることを確認します。
重複ユーザーの削除
ユーザー識別子を取得したら、Delete User API を使用して、重複ユーザーを削除します。
次の cURL コマンドの例では、user1 をコントローラの管理者アクセス権を持っているユーザーに、customer1 を実際のアカウント名に、http[s] をコントローラが使用しているプロトコルに、localhost:8080 をコントローラのホストマシンのドメインとポートに、user-id を削除するユーザー識別子に置き換えます。
curl -X DELETE -u user1@customer1 http[s]://localhost:8080/controller/api/rbac/v1/users/<user-id>
解像度
Azure で以前発生した問題で、Azure を有効にするために特別なコードを挿入する必要があったため、この問題は修復されません。Azure はこの問題を修正し、AppDynamics は Azure を他の SAML プロバイダーと同じように扱うことができるようになりました。残念ながら、これにより、既存のユーザーは既存のコントローラアカウントと権限から「切断」されます。
既存のお客様の場合、ユーザーの継続性を確保するために、AppDynamics の Azure SAML 設定に変換を適用する必要があります。これらの変更が適用されると、ユーザーは AppDynamics に中断なくアクセスできるようになります。
マニュアルの変更履歴
-
2020 年 2 月 3 日、v1(本アドバイザリの初版)