目次

SAMLシングルサインオンの実装

Deep Security Smart CheckでSAMLシングルサインオンを有効にすると、組織内のユーザが既存の組織アカウントで Deep Security Smart Check にログインできるようになります。IDプロバイダを使用して、次のようなユーザ認証アクセス制御機能を実装することもできます。

  • パスワードの強度または変更の強制
  • ワンタイムパスワード(OTP)
  • 2要素認証または多要素認証(2FA / MFA)

Deep Security Smart Check では、SAML 2.0 IDプロバイダからのログインフローのHTTP POST バインディングのみがサポートされ、サービスプロバイダからのログインフローはサポートされません。

Deep Security Smart CheckでSAMLシングルサインオンを使用するには

  1. Deep Security Smart Check をSAMLサービスプロバイダとして設定する
  2. IDプロバイダを信頼するように Deep Security Smart Check を設定する
  3. Deep Security Smart Check をIDプロバイダのサービスプロバイダとして設定します。

Deep Security Smart Check をSAMLサービスプロバイダとして設定する

Deep Security Smart Check サービスが smartcheck.example.comで利用可能な場合は、 overrides.yaml ファイルに次の設定を追加し、 helm upgrade を実行して新しい設定を適用することで、SAMLを有効にできます。

auth:
  saml:
    enabled: true
    location: smartcheck.example.com
helm upgrade \
  --values overrides.yaml \
  deepsecurity-smartcheck \
  https://github.com/deep-security/smartcheck-helm/archive/master.tar.gz

この例では、 Deep Security Smart Check が deepsecurity-smartcheck としてインストールされており、最新のソフトウェアリリースを使用しているものとします。必要に応じて、このコマンドを変更する必要があります。

IDプロバイダを信頼するように Deep Security Smart Check を設定する

メタデータURLを使用したIDプロバイダエントリの自動プロビジョニング

Deep Security Smart Check が、必要なメタデータを直接IDプロバイダに提供できる場合が最も簡単です。IDプロバイダーが identity.example.comにある場合は、次のAPIリクエストを使用してIDプロバイダーを信頼するように Deep Security Smart Check を構成できます。

curl -X POST \
  https://smartcheck.example.com/api/identity-providers/saml \
  -H 'Authorization: Bearer [token]' \
  -H 'Content-Type: application/json' \
  -d '{
    "name": "IdentityProvider",
    "description": "My SAML identity provider. Contact identity@example.com for support.",
    "metadataURL": "identity.example.com"
  }'

Deep Security Smart Check は、IDプロバイダのメタデータをURLから定期的に更新します。

IDプロバイダがプライベート認証局によって発行された証明書を使用している場合は、信頼を確立するために認証局のルート証明書の提供が必要になることがあります。詳細については、 Deep Security Smart Check APIのドキュメントを参照してください。

メタデータXMLを使用したIDプロバイダエントリの手動プロビジョニング

Deep Security Smart CheckからIDプロバイダにアクセスできない場合は、IDプロバイダからSAMLメタデータを取得し、Base-64を使用してエンコードして、API要求に含めることができます。

curl -X POST \
  https://smartcheck.example.com/api/identity-providers/saml \
  -H 'Authorization: Bearer [token]' \
  -H 'Content-Type: application/json' \
  -d '{
    "name": "IdentityProvider",
    "description": "My SAML identity provider. Contact identity@example.com for support.",
    "metadataXML": "[Base64-encoded metadata XML]"
  }'

Deep Security Smart Check では、URLがないとIDプロバイダのメタデータを更新できないため、IDプロバイダのレコードを定期的に更新して、IDプロバイダでの変更と同期を保つ必要があります。

Deep Security Smart Check をIDプロバイダのサービスプロバイダとして設定する

IDプロバイダ管理者は、 Deep Security Smart Check をサービスプロバイダ(証明書利用者)として準備し、SAMLアサーションでセッション名とロールを送信するようにクレームトランスフォームを設定する必要があります。

メタデータURLを使用したサービスプロバイダエントリの自動プロビジョニング

IDプロバイダが必要なメタデータを直接 Deep Security Smart Check に問い合わせることができれば、最も簡単です。 Deep Security Smart Check が smartcheck.example.comにある場合は、 Deep Security Smart Check をサービスプロバイダとして設定するときに、URL https://smartcheck.example.com/saml をメタデータURLとして使用できます。

メタデータXMLを使用したサービスプロバイダエントリの手動プロビジョニング

Deep Security Smart Check が smartcheck.example.comにある場合は、URL https://smartcheck.example.com/saml を使用してサービスプロバイダのメタデータXMLを取得できます。 Deep Security Smart Check をサービスプロバイダとして設定するときに、サービスプロバイダのメタデータXMLをIDプロバイダ管理者に提供できます。

参照の要求

セッション名(必須)

クレームには、Name属性がhttps://deepsecurity.trendmicro.com/SAML/Attributes/RoleSessionName``Attributeエレメントと、1つのAttributeValueエレメントが含まれるSAMLアサーションが必要です。Deep Security Smart Check は、セッション名として AttributeValue を使用します。

通常、セッション名はIDプロバイダのユーザ名またはメールアドレスから取得されます。

ロールセッション名のSAMLデータの例(簡略版)

<samlp:Response xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol">
  <Assertion xmlns="urn:oasis:names:tc:SAML:2.0:assertion">
    <AttributeStatement>
      <Attribute Name="https://deepsecurity.trendmicro.com/SAML/Attributes/RoleSessionName">
        <AttributeValue>alice</AttributeValue>
      </Attribute>
    </AttributeStatement>
  </Assertion>
</samlp:Response>

役割(必須)

クレームには、Name属性がhttps://deepsecurity.trendmicro.com/SAML/Attributes/Role``Attributeエレメントと、1~10個のAttributeValueエレメントが含まれるSAMLアサーションが必要です。Deep Security Smart Check は、属性値を使用してセッションに割り当てられる役割を決定します。複数の役割がアサートされている場合、 Deep Security Smart Check では、セッションを開始する前に、アサートされた役割の1つを選択する必要があります。

通常、ロール名はIDプロバイダ内のユーザのグループメンバーシップから取得されます。

ロールのSAMLデータの例(簡略版)

<samlp:Response xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol">
  <Assertion xmlns="urn:oasis:names:tc:SAML:2.0:assertion">
    <AttributeStatement>
      <Attribute Name="https://deepsecurity.trendmicro.com/SAML/Attributes/Role">
        <AttributeValue>auditor</AttributeValue>
      </Attribute>
    </AttributeStatement>
  </Assertion>
</samlp:Response>

Workload SecurityのSAML属性の形式に慣れている場合は、 Deep Security Smart Checkの方がユーザロール属性の形式が簡単であることがわかります。