CLI を使用した組織固有の LDAP ユーザー・レジストリーの作成

Consumer Catalog CLI を使用して、 Consumer Catalog のユーザー認証を行うための組織固有の LDAP ユーザーレジストリを設定できます。 API も LDAP ユーザー・レジストリーによって保護できます。

開始前に

API Manager で LDAP のユーザーレジストリをリソースとして設定するには、 LDAP ディレクトリを作成し、エコ API Connect システムで利用可能にする必要があります。

LDAP レジストリは、APIのセキュリティ確保や、 Consumer Catalog ユーザーの認証を行うためのカタログのセキュリティ確保に利用できます。

重要: APIのセキュリティ保護に LDAP レジストリを使用している場合、 TLS セキュリティを適用して非セキュアなプロトコルをセキュアなものにアップグレードするSTARTTLSプロトコルはサポートされていません。
注: を使用 Active Directoryしている場合は、 LDAP"directory_type": "ad" の設定でプロパティを使用して指定する必要があります。

LDAP ユーザー・レジストリーを構成するには、以下のいずれかのロールが必要です。

  • 管理者
  • 所有者
  • トポロジー管理者
  • 次の役割を持つカスタム役割:Settings: Manage権限

このタスクについて

注:
  • また、 API Manager のUIを使用して、組織固有の LDAP ユーザー登録リストを作成することもできます。 詳細については、 API Manager での LDAP ユーザーレジストリの作成」 を参照してください。
  • さらに、REST API Connect API を使用して「 LDAP 」のユーザー登録情報を作成・管理することも可能です。詳細は、 REST API の API Connect ドキュメントを参照してください。
  • LDAP を使用している場合、 DataPower® API Gatewayグループ認証はサポートされていません。
  • 開発者ツールキットのCLIを使用することで、外部の LDAP グループをユーザーロール API Connect にマッピングし、ユーザー認証をより細かく制御できるようになります。 以下の手順は、LDAP ユーザー・レジストリー・リソースで external_group_mapping_enabled 構成を設定する方法を説明しています。 ユーザーロール API Connect での外部ロールマッピングの設定方法については、 「Cloud Manager ユーザーロールでの LDAP グループマッピングの設定」 を参照してください。

まず、構成ファイルにレジストリー詳細を定義して、LDAP ユーザー・レジストリーを作成します。 次に、 デベロッパーズ・ツールキットの CLI コマンドを使用してレジストリーを作成し、構成ファイルをパラメーターとして渡します。 コンシューマー カタログでレジストリを利用可能にするには、関連するカタログでレジストリを有効にする必要があります。 LDAP レジストリーを使用して API を保護するには、セキュリティー定義を構成する必要があります。 以下の手順を使用して、書き込み可能な LDAP ユーザー・レジストリーまたは読み取り専用の LDAP ユーザー・レジストリーを作成できます。

LDAP を使用した認証の詳細については、 「 LDAP 認証」 を参照してください。

管理サーバー CLI へのログイン

LDAP のユーザーレジストリ設定を定義するには、まず開発者ツールキットの CLIから、プロバイダー組織のメンバーとして管理サーバーにログインする必要があります。 以下のコマンドを使用します。
apic login --server mgmt_endpoint_url --username user_id --password password --realm provider/identity_provider
次のコマンドを入力して、使用可能なすべての ID プロバイダーのリストを表示することで、--realm パラメーターで使用する ID プロバイダーを判別できます (このコマンドを使用するためにログインする必要はありません)。
apic identity-providers:list --scope provider --server platform_api_endpoint_url --fields title,realm
例:
apic identity-providers:list --scope provider --server platform_api_endpoint_url --fields title,realm 
total_results: 2
results:
  - title: API Manager User Registry
    realm: provider/default-idp-2
  - title: Corporate LDAP user registry
    realm: provider/corporate-ldap
title 値により、使用する ID プロバイダーを判別できます。その後に、表示された realm 値から対応する --realm パラメーターを直接コピーできます。 インストール API Connect 後に管理者が作成したIDプロバイダーについては、その名前は作成時に決定されます。 プロバイダー組織のメンバーとしてログインするためのデフォルトの API Manager ローカル・ユーザー・レジストリーは default-idp-2 です。

ログイン・コマンドについて詳しくは、 管理サーバーへのログインを参照してください。

CLI の使用方法について詳しくは、 ツールキットのインストール、および コマンド・ライン・ツールの概要を参照してください。

LDAP 構成の定義

以下の例に示すように、LDAP ユーザー・レジストリーの構成を ldap_config_file.yamlファイルで定義します。 YAMLファイルの具体的な内容は、 LDAP サーバーの認証方法によって異なります。これについては、以下の表で説明します。
重要: セルフサービスによるオンボーディングが有効になっている場合、またはいずれかのサイトでアカウントの削除が予定されている場合は、 API Manager とConsumer Catalogの間、 あるいはConsumer Catalogのサイト間でユーザー登録情報を共有しないでください。 たとえ個別のユーザー登録が同じバックエンド認証プロバイダー(たとえば、 LDAP サーバーなど)を指している場合でも、それらに対して個別のユーザー登録を作成する必要があります。 この分離により、 Consumer Catalog はカタログ全体で一意のメールアドレスを維持できるようになりますが、 API Managerには同じ要件が課されることはありません。 また、 ユーザーが Consumer Catalogからアカウントを削除した際に、 API Manager へのアクセスに影響が及ぶという問題も回避できます。
name: registry_name
title: "display_title"
integration_url: LDAP_integration_url
user_managed: true_or_false
user_registry_managed: false
directory_type: ad
external_group_mapping_enabled: true_or_false
case_sensitive: true_or_false
email_required: true_or_false
email_unique_if_exist: true_or_false
identity_providers:
 - name: provider_name
   title: provider_title
endpoint:
  endpoint: "ldap_server_url_and_port"
configuration:
  authentication_method: authentication_method
  authenticated_bind: "true_or_false"
  admin_dn: "admin_dn"
  admin_password: admin_password
  search_dn_base: "search_dn_base"
  search_dn_scope: search_dn_scope  
  search_dn_filter_prefix: prefix
  search_dn_filter_suffix: suffix
  attribute_mapping:
    dn: "distinguished_name"
    cn: "common_name"
    sn: "last_name"
    mail: "email_address"
    userPassword: "password"
各認証方式に共通のレジストリー・プロパティーについて、以下の表で説明します。
プロパティー 説明
name レジストリーの名前。 この名前は、CLI コマンドで使用されます。
title グラフィカル・ユーザー・インターフェースに表示する説明的な名前。
integration_url 設定 API Connect 内の「 LDAP 」統合 URL。 以下の CLI コマンドを使用して、LDAP 統合 URL を判別できます。
apic integrations:list --server mgmt_endpoint_url --subcollection user-registry
user_managed ユーザー・レジストリーが書き込み可能かどうかを決定します。 書き込み可能 LDAP の場合は、true に設定する必要があります。 レジストリへの書き込みを許可したくない場合は false 、この設定を変更できます。詳細については、このトピックの最後にある 「 LDAP のレジストリを書き込み可能と読み取り専用間で切り替える」 のセクションを参照してください。 書き込み可能な LDAP ユーザーレジストリは、Cloud Manager および API Manager のユーザー認証には使用できない点にご注意ください。
user_registry_managed LDAP の場合は false に設定する必要があります。 API Connect がユーザー・レジストリーを管理するかどうかを決定します。 LUR レジストリーのみが API Connectによって管理されます。
directory ディレクトリー・タイプに以下のいずれかの値を指定します。
  • ad - 「 LDAP 」が「Microsoft Active Directory 」であることを示しています
  • standard - (デフォルト値)その他の LDAP を示します
external_group_mapping_enabled ユーザー・レジストリーが LDAP グループ・マッピングをサポートするかどうかを決定します。 有効な値は以下のとおりです。
  • true
  • false
デフォルト値は falseです。
case_sensitive ユーザー・レジストリーが大/小文字を区別するかどうかを決定します。 有効な値は以下のとおりです。
  • true
  • false
ユーザー名の大/小文字を適切に処理するために、ここでの大/小文字の区別の設定がバックエンドの LDAP サーバーでの設定と一致していることを確認する必要があります
  • バックエンド LDAP サーバーが大/小文字の区別をサポートする場合にのみcase_sensitivetrue に設定してください。
  • バックエンドの LDAP サーバーが大/小文字の区別をサポートしていない場合は、case_sensitivefalse に設定してください。
注: 少なくとも 1 人のユーザーがレジストリーにオンボードされた後は、この設定を変更することはできません。
email_required ユーザーのオンボーディング・プロセスの一部として E メール・アドレスが必要かどうかを決定します。 有効な値は以下のとおりです。
  • true
  • false
trueに設定した場合、ソース ID プロバイダーは、オンボーディング時に認証プロセスの一部として E メール・アドレスを提供する必要があります。
注: Cloud Manager または API Manager へのオンボーディングでは、デフォルトでメールアドレスの入力は必須ではありませんが、 Consumer Catalog へのオンボーディングでは必須となります。
email_unique_if_exist E メール・アドレスがユーザー・レジストリー内で固有でなければならないかどうかを決定します。 有効な値は以下のとおりです。
  • true
  • false
注: コンシューマー カタログ内のすべてのアカウント(同一サイト内の異なるユーザー登録情報を跨ぐものを含む)は、サイト管理者アカウントを含め、一意のメールアドレスを持つ必要があります。
identity_providers LDAP サーバーの詳細を含む配列。ここで、
  • name - LDAP サーバーの名前であり、CLI コマンドで使用される名前です
  • title - LDAP サーバーの表示名です
endpoint LDAP サーバーのエンドポイント。以下の例のように、URL とポートで構成されます。
"ldap://server.com:389"
tls_profile オプションで、LDAP サーバーが必要とする TLS クライアント・プロファイルを設定します。
protocol_version オプションで、使用する LDAP プロトコルのバージョン番号を設定します。 有効な値は以下のとおりです。
  • 2
  • 3
明示的に設定されない場合、デフォルトは 3 です。
構成セクションのプロパティーは、選択した認証方式によって異なります。 認証方式には、以下の 3 つがあります。
  • compose_dn - ユーザーの LDAP 識別名 (DN) をユーザー名から作成できる場合は、この形式を設定します。 たとえば、 uid=<username>,ou=People,dc=company,dc=com はユーザー名から構成できるDN形式です。 「作成 (DN)」が適切なオプションであるかどうかが不明な場合は、LDAP 管理者に問い合わせてください。 LDAP レジストリーを使用して API を保護する場合、DataPower API Gateway では compose_dn はサポートされません。
  • compose_upn - LDAP ディレクトリーが、john@acme.com などのユーザー・プリンシパル名とのバインディングをサポートしている場合は、この形式を選択します。 Microsoft Active Directory は、「作成 (UPN)」認証をサポートする LDAP ディレクトリーの一例です。 LDAP ディレクトリーが UPN とのバインディングをサポートしているかどうかが不明な場合は、LDAP 管理者に問い合わせてください。
    注: 管理バインド DN および管理バインド・パスワードは、この認証方式では使用されません。
  • search_dn - ユーザーの LDAP 識別名をユーザー名から作成できない場合 (ユーザーの基本 DN が異なっている場合など) は、この形式を選択します。 このフォーマットを選択すると、LDAP ディレクトリー内でユーザーを検索するために、管理者の DN とパスワードが必要になる場合があります。 LDAP ディレクトリーで匿名バインドが許可されている場合は、管理者の DN とパスワードを省略することができます。 LDAP ディレクトリーで匿名バインドが許可されているかどうかが不明な場合は、LDAP 管理者に問い合わせてください。
認証方式 compose_dn の場合は、以下の構成プロパティーを設定します。
プロパティ- 説明
authentication_method compose_dn
authenticated_bind バインド方式。 有効な値は以下のとおりです。
  • "true" - 認証済みバインド
  • "false" - 匿名バインド
レジストリーの検索に特定の許可を必要としない場合は、"false" を選択します。 特定の許可が必要な場合は、"true" を選択します。
admin_dn authenticated_bind"true" に設定した場合は、LDAP ディレクトリー内で検索を実行する権限を持つユーザーの識別名(DN) を入力します。 例:
"cn=admin,dc=company,dc=com"
admin_password authenticated_bind"true" に設定した場合は、admin_dn のユーザー・パスワードを入力します。
search_dn_base オプションで、基本 DN を設定します。例えば、次のように指定します。
"dc=company,dc=com"
bind_prefix DN に接頭部を設定します。例えば、次のように指定します。
(uid=
bind_suffix DN に接尾部を設定します。例えば、次のように指定します。
)
attribute_mapping が に設定 trueされている user_managed 場合は、ソースの LDAP 属性名とターゲット API Connect の値との対応関係を入力してください。 このマッピングは、次のように指定される名前と値のペアとして構成されます:
ldap_registry_attribute_name: "apic_ldap_attribute_value"
ここで:
  • ldap_registry_attribute_name - ソース LDAP 属性の名前です
  • apic_ldap_attribute_value - これは、 LDAPAPI Connect 属性に設定される値を表す文字列であり、その内容は [ ] 、ユーザーが登録時に指定した値で置き換えられます。
API Connect がユーザー登録時に必要とするユーザー・プロファイル・プロパティーは、 usernamefirst_namelast_nameemail、および passwordです。
以下に、属性マッピングの例を抜粋して示します。
attribute_mapping:
  dn: "uid=[username],ou=users,dc=company,dc=com"
  cn: "[first_name] [last_name]"
  sn: "[last_name]"
  mail: "[email]"
  userPassword: "[password]"
認証方式 compose_upn の場合は、以下の構成プロパティーを設定します。
プロパティ- 説明
authentication_method compose_upn
authenticated_bind バインド方式。 有効な値は以下のとおりです。
  • "true" - 認証済みバインド
  • "false" - 匿名バインド
レジストリーの検索に特定の許可を必要としない場合は、"false" を選択します。 特定の許可が必要な場合は、"true" を選択します。
admin_dn authenticated_bind"true" に設定した場合は、LDAP ディレクトリー内で検索を実行する権限を持つユーザーの識別名(DN) を入力します。 例:
"cn=admin,dc=company,dc=com"
admin_password authenticated_bind"true" に設定した場合は、admin_dn のユーザー・パスワードを入力します。
bind_suffix ユーザー・プリンシパル名のドメイン部分を入力します。 例:
@acme.com
attribute_mapping が に設定 trueされている user_managed 場合は、ソースの LDAP 属性名とターゲット API Connect の値との対応関係を入力してください。 このマッピングは、次のように指定される名前と値のペアとして構成されます:
ldap_registry_attribute_name: "apic_ldap_attribute_value"
ここで:
  • ldap_registry_attribute_name - ソース LDAP 属性の名前です
  • apic_ldap_attribute_value - これは、 LDAPAPI Connect 属性に設定される値を表す文字列であり、その内容は [ ] 、ユーザーが登録時に指定した値で置き換えられます。
API Connect がユーザー登録時に必要とするユーザー・プロファイル・プロパティーは、 usernamefirst_namelast_nameemail、および passwordです。
以下に、属性マッピングの例を抜粋して示します。
attribute_mapping:
  dn: "uid=[username],ou=users,dc=company,dc=com"
  cn: "[first_name] [last_name]"
  sn: "[last_name]"
  mail: "[email]"
  userPassword: "[password]"
認証方式 search_dn の場合は、以下の構成プロパティーを設定します。
プロパティー 説明
authentication_method search_dn
authenticated_bind バインド方式。 有効な値は以下のとおりです。
  • "true" - 認証済みバインド
  • "false" - 匿名バインド
レジストリーの検索に特定の許可を必要としない場合は、"false" を選択します。 特定の許可が必要な場合は、"true" を選択します。
admin_dn authenticated_bind"true" に設定した場合は、LDAP ディレクトリー内で検索を実行する権限を持つユーザーの識別名(DN) を入力します。 例:
"cn=admin,dc=company,dc=com"
admin_password authenticated_bind"true" に設定した場合は、admin_dn のユーザー・パスワードを入力します。
search_dn_base オプションで、基本 DN を設定します。例えば、次のように指定します。
"dc=company,dc=com"
search_dn_scope オプションで、DN の検索スコープを設定します。 スコープは、ディレクトリー情報ツリーのどの部分を調べるかを決定します。 設定される値は、以下のとおりです。
  • base
  • one
  • sub (デフォルト値)
search_dn_filter_prefix DN に接頭部を設定します。例えば、次のように指定します。
(uid=
search_dn_filter_suffix DN に接尾部を設定します。例えば、次のように指定します。
)
attribute_mapping が に設定 trueされている user_managed 場合は、ソースの LDAP 属性名とターゲット API Connect の値との対応関係を入力してください。 このマッピングは、次のように指定される名前と値のペアとして構成されます:
ldap_registry_attribute_name: "apic_ldap_attribute_value"
ここで:
  • ldap_registry_attribute_name - ソース LDAP 属性の名前です
  • apic_ldap_attribute_value - これは、 LDAPAPI Connect 属性に設定される値を表す文字列であり、その内容は [ ] 、ユーザーが登録時に指定した値で置き換えられます。
API Connect がユーザー登録時に必要とするユーザー・プロファイル・プロパティーは、 usernamefirst_namelast_nameemail、および passwordです。
以下に、属性マッピングの例を抜粋して示します。
attribute_mapping:
  dn: "uid=[username],ou=users,dc=company,dc=com"
  cn: "[first_name] [last_name]"
  sn: "[last_name]"
  mail: "[email]"
  userPassword: "[password]"

を保存しておくと ldap_config_file.yaml 、次のセクションの コマンド user-registries:create からアクセスできます。 構成ファイルの例については、 のセクションを参照してください。

LDAP ユーザー・レジストリーの作成

組織固有の LDAP ユーザー・レジストリーを作成するには、以下の CLI コマンドを実行します。
apic user-registries:create --server mgmt_endpoint_url --org organization_name ldap_config_file.yaml
ここで、それぞれ以下のとおりです。
  • mgmt_endpoint_url は、プラットフォーム API エンドポイント URL です。
  • organization_name は、プロバイダー組織の name プロパティーの値です。
  • ldap_config_file は、LDAP ユーザー・レジストリーの構成を定義する YAML ファイルの名前です。
このコマンドは、レジストリー作成の完了時に、次のような要約の詳細を表示します。
registry_name registry_url
registry_name は、設定 YAML ファイル内の プロパティ name から取得されます。 registry_url は、レジストリー・リソースにアクセスできる URL です。

これで LDAP のユーザーレジストリが作成されました。このレジストリをConsumer Catalog で利用可能にする方法については、次のセクションをご覧ください。

カタログでの LDAP レジストリーの構成

LDAPレジストリをConsumer Catalogユーザーの認証に使用できるようにするには、 そのConsumer Catalogに関連付けられているCatalogで、その機能を有効にする必要があります。 以下のステップを実行します。
  1. 次のコマンドを使用して、LDAP ユーザー・レジストリーの URL を確認します (または、レジストリー作成の要約から URL をコピーして貼り付けることができます)。
    apic user-registries:list --server mgmt_endpoint_url --org organization_name
  2. プロバイダー組織のメンバーとして管理サーバーにログインし、次のコマンドを入力します。
    apic login --server mgmt_endpoint_url --username user_id --password password --realm provider/identity_provider
    次のコマンドを入力して、使用可能なすべての ID プロバイダーのリストを表示することで、--realm パラメーターで使用する ID プロバイダーを判別できます (このコマンドを使用するためにログインする必要はありません)。
    apic identity-providers:list --scope provider --server platform_api_endpoint_url --fields title,realm
    例:
    apic identity-providers:list --scope provider --server platform_api_endpoint_url --fields title,realm 
    total_results: 2
    results:
      - title: API Manager User Registry
        realm: provider/default-idp-2
      - title: Corporate LDAP user registry
        realm: provider/corporate-ldap
    title 値により、使用する ID プロバイダーを判別できます。その後に、表示された realm 値から対応する --realm パラメーターを直接コピーできます。 インストール API Connect 後に管理者が作成したIDプロバイダーについては、その名前は作成時に決定されます。 プロバイダー組織のメンバーとしてログインするためのデフォルトの API Manager ローカル・ユーザー・レジストリーは default-idp-2 です。

    この apic login コマンドの詳細については、 「管理サーバーへのログイン」 を参照してください。

  3. 次のコマンドを入力してください(末尾のハイフンは、このコマンドがコマンドラインから入力を受け付けることを意味します):
    apic configured-catalog-user-registries:create --server mgmt_endpoint_url --org organization_name --catalog catalog_name -
    ここで、 catalog_name は、name必要なカタログのプロパティー。 このコマンドは、次の値を返します。
    Reading CONFIGURED_CATALOG_USER_REGISTRY_FILE arg from stdin
  4. 次のデータを入力して、改行します。
    user_registry_url: ldap_registry_url
    ここで、 ldap_registry_url は、手順 1 で取得した、 LDAP レジストリの URL です。
  5. 入力を停止するには、[ CTRL D Press] を押してください。

LDAP レジストリーの書き込み可能と読み取り専用の間での切り替え

LDAP ユーザー・レジストリーを作成した後、レジストリー構成の user_managed プロパティーを更新することで、LDAP ユーザー・レジストリーを書き込み可能と読み取り専用の間で切り替えることができます。 以下のステップを実行します。
  1. 次のコマンドを実行して、更新する LDAP ユーザー・レジストリーの名前または ID を確認します (または、レジストリー作成の要約を使用できます)。
    apic user-registries:list --server mgmt_endpoint_url --org organization_name
    このコマンドで、その組織のすべてのユーザー・レジストリーのリストが返されます。名前の次にレジストリー URL が表示されます。 レジストリー ID は、URL の末尾にあります。例えば、以下のようになります。 https://company.com/api/user-registries/x-x-x-x-x/registry_id
  2. 次のコマンドを入力してください(末尾のハイフンは、このコマンドがコマンドラインから入力を受け付けることを意味します):
    apic user-registries:update --server mgmt_endpoint_url --org organization_name registry_name_or_id -
    ここで、registry_name_or_id は、更新する LDAP ユーザー・レジストリーの名前または ID (前のステップで確認したもの) です。 このコマンドでは、以下が返されます。
    Reading USER_REGISTRY_FILE arg from stdin
  3. 次のデータを入力して、改行します。
    user_managed: true_or_false
    ここで、 true はレジストリを書き込み可能にし、 false はレジストリを読み取り専用にします。
  4. 入力を停止するには、[ CTRL D Press] を押してください。
レジストリを読み取り専用から書き込み可能に変更する場合は、前述のレジストリプロパティの表に記載されているとおり、設定 attribute_mapping も変更する必要があります。

LDAP ユーザー・レジストリーを使用した API の保護

LDAP ユーザー・レジストリーを使用して API を保護するには、以下の情報を参照してください。

および apic configured-catalog-user-registries コマンド apic user-registries の詳細については、 ツールキットのCLIリファレンスドキュメントを参照してください。

以下の例は、書き込み可能な LDAP をセットアップするために DN の検索を認証方式として使用する構成ファイルを示しています。
name: sdn-ldap
title: "SDN LDAP User Registry"
integration_url: https://mycompany.com/api/cloud/integrations/user-registry/xxx-xxx-xxx
user_managed: true
user_registry_managed: false
directory_type: standard
case_sensitive: false
identity_providers:
  - name: ldap
    title: "SDN LDAP Identity Provider"
endpoint:
  endpoint: "ldap://mycompany.com:389"
configuration:
  authentication_method: search_dn
  authenticated_bind: "true"
  admin_dn: "cn=admin,dc=company,dc=com"
  admin_password: xxxx
  search_dn_base: "dc=company,dc=com"
  search_dn_scope: sub
  search_dn_filter_prefix: (uid=
  search_dn_filter_suffix: )
  attribute_mapping:
    dn: "uid=[username],ou=users,dc=company,dc=com"
    cn: "[first_name] [last_name]"
    sn: "[last_name]"
    mail: "[email]"
    userPassword: "[password]"