SOAP による Web サービスの保護
InterSystems IRIS は、セキュリティを Web サービスおよび Web クライアントに追加する方法を記述する WS-Security、WS-Policy、WS-SecureConversation、および WS-ReliableMessaging の各仕様の一部をサポートしています。このトピックでは、ツールの概要を示し、サポートされる規格をリストします。
認証を必要とする Web サービスが InterSystems IRIS Web クライアントで使用されており、これを使用する特別な理由がない場合は、従来の WS-Security ログイン機能を使用できます。"WS-Security ログイン機能の使用法" を参照してください。
SOAP セキュリティに関連する InterSystems IRIS のツール
InterSystems IRIS には、Web サービスおよび Web クライアントのセキュリティに関連する以下のツールが用意されています。
-
着信メッセージで受信した証明書とシグニチャを検証する際に InterSystems IRIS が使用する信頼された証明書を用意する機能。
-
X.509 証明書を表現する機能。所有している証明書および通信先のエンティティの証明書を IRISSYS データベースに格納できます。所有している証明書では、発信メッセージに署名する必要がある場合、対応する秘密鍵も格納できます。
IRISSYS データベースにおいて、X.509 証明書は、InterSystems IRIS 資格情報セット内 (具体的には、%SYS.X509CredentialsOpens in a new tab のインスタンス内) に格納されます。このクラスのメソッドを使用して、証明書 (および、オプションで該当する場合には関連付けられた秘密鍵ファイル) をデータベースにロードします。このメソッドを直接実行するか、または管理ポータルを使用できます。
資格情報セットを所有するユーザおよびこれを使用できるユーザを指定できます。
また、%SYS.X509CredentialsOpens in a new tab クラスは、エイリアス、サムプリント、サブジェクト・キー識別子などによって、証明書にアクセスするメソッドも提供します。セキュリティ上の理由により、%SYS.X509CredentialsOpens in a new tab クラスは、通常のオブジェクトおよび SQL テクニックを使用してアクセスすることはできません。
-
SSL (Secure Sockets Layer) および TLS (Transport Layer Security) のサポート管理ポータルを使用して InterSystems IRIS SSL/TLS 構成を定義し、この構成を使用して、X.509 証明書によって、InterSystems IRIS Web サービスまたは Web クライアントから、あるいはこれらへの通信を保護できます。
SSL/TLS 構成については、インターシステムズの "TLS ガイド" を参照してください。
-
WS-Policy のサポート。InterSystems IRIS は、WS-Policy の情報を InterSystems IRIS Web サービスまたは Web クライアントにアタッチする機能を提供します。ポリシーは、以下のような項目を指定できます。
-
WS-SecureConversation の使用。
-
SSL/TLS の使用。
-
使用する WS-Security 機能または必要な WS-Security 機能。
-
使用する WS-Addressing ヘッダまたは必要な WS-Addressing ヘッダ。WS-Addressing ヘッダについては、"Web サービスおよび Web クライアントの作成" を参照してください。これらのヘッダを手動で追加する方法についても説明しています。
-
MTOM (Message Transmission Optimization Mechanism) パッケージの使用。MTOM については、"Web サービスおよび Web クライアントの作成" を参照してください。MTOM パッケージを手動で使用する方法についても説明しています。
ポリシーは、個別の構成クラスで作成されます。そのクラスでは、XData ブロックを使用して、ポリシー (XML ドキュメント) を格納し、ポリシーのアタッチ先のサービスまたはクライアントの部分を指定します。ポリシーは、サービス全体、クライアント全体、または特定のメソッド (あるいは、特定の要求メッセージもしくは応答メッセージ) にアタッチできます。
スタジオ・ウィザードを使用して、この構成クラスを作成できます。ウィザードは、一連の事前定義されたポリシーおよび豊富なオプションを提供します。ポリシーが X.509 証明書を必要とするときには、必ずウィザードによって、IRISSYS に格納されている証明書から選択できるようになります。同様に、ポリシーが SSL/TLS を必要とする場合は、必ず既存の SSL/TLS 構成の選択も可能になります (該当する場合)。
必要に応じて、後でポリシーを直接編集できます。ポリシーは、構成クラスをコンパイルしたときに有効になります。
-
-
WS-Security 要素の直接作成および直接作業のサポート。InterSystems IRIS には、<UsernameToken> や <Signature> などの WS-Security ヘッダ要素を表すための一連の XML 対応クラスが用意されています。これらの専用クラスは、これらの要素の作成や変更に使用するメソッド、および要素間の参照を提供します。
WS-Policy サポートを使用している場合、InterSystems IRIS は、これらのクラスを自動的に使用します。WS-Security サポートを直接使用する場合、これらのクラスのインスタンスを作成してセキュリティ・ヘッダに挿入するコードを記述します。
いずれの場合も、InterSystems IRIS Web サービスまたは Web クライアントが SOAP メッセージを WS-Security 要素と共に受信すると、これらの要素を表すためにこれらのクラスのインスタンスが作成されます。また、%SYS.X509CredentialsOpens in a new tab のインスタンスも作成し、着信メッセージで受信されたすべての証明書を格納します。
-
WS-SecureConversation 要素の直接作成および直接作業のサポート。InterSystems IRIS には、これらの要素を表すための一連の XML 対応クラスが用意されています。Web サービスでコールバック・メソッドを定義し、Web サービスが安全な通信の要求に応答する方法を制御します。
WS-Policy を使用するか、または WS-Security および WS-SecureConversation を直接使用することができます。WS-Policy を使用する場合、必要に応じて WS-Security ツールが自動的に使用されます。WS-Security または WS-SecureConversation を直接使用する場合は、さらにコーディングする必要があります。
WS-Security ヘッダの概要
SOAP メッセージは、WS-Security ヘッダ要素内 (SOAP <Header> 要素の <Security> サブ要素) にセキュリティ要素を保持します。以下の例は、考えられるコンポーネントの一部を示しています。
これらの要素は、以下のとおりです。
-
タイムスタンプ・トークン (<Timestamp>) には <Created> 要素と <Expires> 要素があり、このメッセージの有効期間の範囲が指定されます。タイムスタンプは、厳密に言うと、セキュリティ要素ではありません。ただし、タイムスタンプが署名されている場合、リプレイ攻撃を阻止するためにタイムスタンプを使用できます。
-
バイナリ・セキュリティ・トークン (<BinarySecurityToken>) は、受信者がシグニチャの検証または暗号化要素の解読をできるようにするための情報を含むバイナリ・エンコード・トークンです。これらは、シグニチャ要素、暗号化要素、およびアサーション要素で使用することができます。
-
ユーザ名トークン (<UsernameToken>) によって、Web クライアントによる Web サービスへのログインが可能になります。このトークンには、Web サービスで要求されるユーザ名とパスワードが組み込まれており、既定ではクリア・テキストで組み込まれています。パスワードを保護するいくつかのオプションがあります。
-
アサーション要素 (<Assertion>) には、作成した SAML アサーションが組み込まれます。このアサーションは、署名済みでも未署名でもかまいません。
アサーション要素には、サブジェクト確認要素 (<SubjectConfirmation>) を含めることができます。この要素は、Holder-of-key メソッドまたは Sender-vouches メソッドを使用できます。前者の場合、アサーションは、他の目的で使用できるキー・マテリアルを保持します。
-
暗号化キー要素 (<EncryptedKey>) には、キーが格納され、暗号化メソッドが指定されているほか、他の同様の情報が含まれています。この要素には、メッセージがどのように暗号化されたのかが記述されます。"暗号化の概要" を参照してください。
-
シグニチャ要素 (<Signature>) は、メッセージの部分に署名します。非公式のフレーズ メッセージの部分への署名は "デジタル・シグニチャの概要" で説明されているように、シグニチャ要素がメッセージのこれらの部分に適用されることを意味します。
図ではこれは示されていませんが、シグニチャ要素には、メッセージの署名済み部分を指す <Reference> 要素が格納されています。
ここで示すように、暗号化キー要素には、前に同じメッセージに含まれていたバイナリ・セキュリティ・トークンへの参照が一般的に含まれており、そのトークンには、受信者が暗号化キーの解読に使用できる情報が含まれています。ただし、トークンへの参照をメッセージの別の場所で持つのではなく、解読に必要な情報を <EncryptedKey> に含めることができます。InterSystems IRIS は、これについて複数のオプションをサポートしています。
同様に、デジタル・シグニチャは、一般的に 2 つの部分から構成されます。すなわち、X.509 証明書を使用するバイナリ・セキュリティ・トークンと、このバイナリ・セキュリティ・トークンを直接参照するシグニチャ要素です(バイナリ・セキュリティ・トークンではなく、代わりに Holder-of-key メソッドを持つ署名済みの SAML アサーションを使用する方法です)。シグニチャが <Signature> 要素のみから構成されることも可能です。この場合、この要素には、受信者がシグニチャを検証できる情報が含まれます。InterSystems IRIS は、これについても複数のオプションをサポートしています。
SOAP セキュリティ標準
このセクションでは、InterSystems IRIS Web サービスおよび Web クライアントの WS-Security、WS-Policy、WS-SecureConversation、および WS-ReliableMessaging に対するサポートの詳細を示します。
"XML 標準" および "SOAP 標準" も参照してください。
InterSystems IRIS における WS-Security のサポート
InterSystems IRIS は、OASIS で作成された WS-Security 1.1 (http://docs.oasis-open.org/wss/v1.1/wss-v1.1-spec-pr-SOAPMessageSecurity-01.pdfOpens in a new tab) の以下の部分をサポートします。
-
WS-Security ヘッダ (http://www.oasis-open.org/committees/download.php/16790/wss-v1.1-spec-os-SOAPMessageSecurity.pdfOpens in a new tab)
-
X.509 トークン・プロファイル 1.1 (http://www.oasis-open.org/committees/download.php/16785/wss-v1.1-spec-os-x509TokenProfile.pdfOpens in a new tab)
-
XML 暗号化 (https://www.w3.org/TR/xmlenc-core/Opens in a new tab)。以下のアルゴリズムから選択できます。
-
ブロック暗号化 (データ暗号化) :AES-128 (既定)、AES-192、または AES-256
-
鍵転送 (キー暗号化) :RSA-OAEP (既定) または RSA-v1.5
-
-
Exclusive XML Canonicalization を使用した XML シグニチャ (https://www.w3.org/TR/xmldsig-core/Opens in a new tab)。以下のアルゴリズムから選択できます。
-
ダイジェスト・メソッド :SHA1 (既定)、SHA256、SHA384、または SHA512
-
シグニチャ・アルゴリズム :RSA-SHA1、RSA-SHA256 (既定)、RSA-SHA384、RSA-SHA512、HMACSHA256、HMACSHA384、または HMACSHA512
既定のシグニチャ・アルゴリズムは変更できないことに注意してください。変更するには、管理ポータルにアクセスし、[システム管理]、[セキュリティ]、[システムセキュリティ]、[システムワイドセキュリティパラメータ] の順にクリックします。既定のシグニチャ・アルゴリズムを指定するオプションには、[既定のシグニチャ・ハッシュ] というラベルが付いています。
暗号化または署名において、バイナリ・セキュリティ・トークンに X.509 証明書が含まれる場合、InterSystems IRIS は X509v3 トークン・タイプの X.509 証明書トークン・プロファイルに従います。キー・マテリアルが SAML アサーションを使用する場合、InterSystems IRIS は、WS-Security SAML トークン・プロファイル仕様に従います。
デジタル・シグニチャの適用先のメッセージ部分を指定できます。
-
-
UsernameToken Profile 1.1 (http://docs.oasis-open.org/wss/v1.1/wss-v1.1-spec-pr-UsernameTokenProfile-01.pdfOpens in a new tab)
-
SAML バージョン2.0 を基盤としたほとんどの WS-Security SAML トークン・プロファイル 1.1 (http://docs.oasis-open.org/wss/v1.1/wss-v1.1-spec-os-SAMLTokenProfile.pdfOpens in a new tab)。例外は、InterSystems IRIS SOAP サポートには SAML 1.0 または 1.1 を参照する機能がないことです。
発信 SOAP メッセージの場合、InterSystems IRIS Web サービスおよび Web クライアントは、SAML アサーション・トークンに署名できます。ただし、実際の SAML アサーションの定義は、アプリケーションで行う必要があります。
着信 SOAP メッセージの場合、InterSystems IRIS Web サービスおよび Web クライアントは、SAML アサーション・トークンを処理して、シグニチャを検証できます。SAML アサーションの詳細はアプリケーションで検証できなければなりません。
SAML の完全サポートは実装されていません。InterSystems IRIS の SAML サポートは、ここに掲載した詳細のみに適用されます。
InterSystems IRIS における WS-Policy のサポート
WS-Policy 1.2 (https://www.w3.org/Submission/WS-Policy/Opens in a new tab) と WS-Policy 1.5 (https://www.w3.org/TR/ws-policyOpens in a new tab) の両方のフレームワークが、関連付けられている特定のポリシー・タイプと共にサポートされます。
-
WS-SecurityPolicy 1.1 (http://www.oasis-open.org/committees/download.php/16569/Opens in a new tab)
-
WS-SecurityPolicy 1.2 (http://docs.oasis-open.org/ws-sx/ws-securitypolicy/v1.2/ws-securitypolicy.htmlOpens in a new tab)
-
Web Services Addressing 1.0 - Metadata (https://www.w3.org/TR/ws-addr-metadataOpens in a new tab)
-
Web Services Addressing 1.0 - WSDL Binding (https://www.w3.org/TR/ws-addr-wsdlOpens in a new tab)
-
WS-MTOMPolicy (https://www.w3.org/Submission/WS-MTOMPolicy/Opens in a new tab)
<PolicyReference> は 2 つの場所のみでサポートされています。構成要素内の <Policy> 要素の代わりとして、または <Policy> 要素の唯一の子としてです。
WS-SecurityPolicy 1.2 は、以下のようにサポートされます。WS-SecurityPolicy 1.1 の同等の部分もサポートされます。
-
4.1.1 SignedParts は、以下の例外付きでサポートされます。
-
本文はサポートされます。
-
ヘッダはサポートされます。
-
添付はサポートされません。
-
-
4.1.2 SignedElements はサポートされません。
-
4.2.1 EncryptedParts は、以下の例外付きでサポートされます。
-
本文はサポートされます。
-
ヘッダはサポートされません。
-
添付はサポートされません。
-
-
4.2.2 EncryptedElements はサポートされません。
-
4.3.1 RequiredElements はサポートされません。
-
4.2.1 RequiredParts はサポートされます。
-
ヘッダはサポートされます。
-
-
5.1 sp:IncludeToken はサポートされます。
-
5.2 Token Issuer および Required Claims はサポートされません。
-
5.3 派生キー・プロパティは、X509Token および SamlToken に対してのみサポートされます。
-
5.4.1 UsernameToken はサポートされます。
-
5.4.2 IssuedToken はサポートされません。
-
5.4.3 X509Token はサポートされます。
-
5.4.4 KerberosToken はサポートされません。
-
5.4.5 SpnegoContextToken はサポートされません。
-
5.4.6 SecurityContextToken はサポートされません。
-
5.4.7 SecureConversationToken はサポートされます。
-
5.4.8 SamlToken はサポートされます。
-
5.4.9 RelToken はサポートされません。
-
5.4.10 HttpsToken は、TransportBinding アサーションに対してのみサポートされます。
-
5.4.11 KeyValueToken はサポートされます。
-
6.1 [Algorithm Suite] は、部分的にサポートされます。
-
Basic256、Basic192、Basic128 はサポートされます。
-
Basic256Rsa15、Basic192Rsa15、Basic128Rsa15 はサポートされます。
-
Basic256Sha256、Basic192Sha256、Basic128Sha256 はサポートされます。
-
Basic256Sha256Rsa15、Basic192Sha256Rsa15、Basic128Sha256Rsa15 はサポートされます。
-
TripleDes、TripleDesRsa15、TripleDesSha256、TripleDesSha256Rsa15 はサポートされません。
-
InclusiveC14N、SOAPNormalization10、STRTransform10 はサポートされません。
-
XPath10、XPathFilter20、AbsXPath はサポートされません。
-
-
6.2 [Timestamp] はサポートされます。
-
6.3 [Protection Order] はサポートされます。
-
6.4 [Signature Protection] はサポートされます。
-
6.5 [Token Protection] はサポートされます。
-
6.6 [Entire Header and Body Signatures] はサポートされます。
-
6.7 [Security Header Layout] はサポートされます。
-
7.1 6.1 ごとの AlgorithmSuite アサーション
-
7.2 6.7 ごとの Layout アサーション
-
7.3 TransportBinding は、HttpsToken でのみサポートされます。
-
7.4 SymmetricBinding はサポートされます。
-
7.5 AsymmetricBinding は、以下のようにサポートされます。
-
セクション 5.4 でサポートされるトークンに対してのみ。
-
セクション 6 のプロパティに対してのみ。
-
-
8.1 SupportingTokens アサーションはサポートされます。
-
8.2 SignedSupportingTokens アサーションはサポートされます。
-
8.3 EndorsingSupportingTokens アサーションはサポートされます。
-
8.4 SignedEndorsingSupportingTokens アサーションはサポートされます。
-
8.5 Encrypted SupportingTokens アサーションはサポートされます。
-
8.6 SignedEncrypted SupportingTokens アサーションはサポートされます。
-
8.7 EndorsingEncrypted SupportingTokens アサーションはサポートされます。
-
8.8 SignedEndorsingEncrypted SupportingTokens アサーションはサポートされます。
-
9.1 Wss10 アサーションは、以下の例外付きでサポートされます。
-
sp:MustSupportRefKeyIdentifier はサポートされます。
-
sp:MustSupportRefIssuerSerial はサポートされます。
-
sp:MustSupportRefExternalURI はサポートされません。
-
sp:MustSupportRefEmbeddedToken はサポートされません。
-
-
9.2 Wss11 アサーションは、以下の例外付きでサポートされます。
-
sp:MustSupportRefKeyIdentifier はサポートされます。
-
sp:MustSupportRefIssuerSerial はサポートされます。
-
sp:MustSupportRefExternalURI はサポートされません。
-
sp:MustSupportRefEmbeddedToken はサポートされません。
-
sp:MustSupportRefKeyThumbprint はサポートされます。
-
sp:MustSupportRefKeyEncryptedKey はサポートされます。
-
sp:RequireSignatureConfirmation はサポートされます。
-
-
10.1 Trust13 アサーションは、以下の例外付きでサポートされます。
-
sp:MustSupportClientChallenge はサポートされません。
-
sp:MustSupportServerChallenge はサポートされません。
-
sp:RequireClientEntropy はサポートされます。
-
sp:RequireServerEntropy はサポートされます。
-
sp:MustSupportIssuedTokens はサポートされません。今のところは無視されます。
-
sp:RequireRequestSecurityTokenCollection はサポートされません。
-
sp:RequireAppliesTo はサポートされません。
-
-
Trust10 アサーション (http://specs.xmlsoap.org/ws/2005/07/securitypolicy/ws-securitypolicy.pdfOpens in a new tab を参照)
Note:Trust10 アサーションは簡易な形でのみサポートされています。InterSystems IRIS は、エラーのスローを回避するために Trust10 アサーションを Trust13 アサーションに変換します。
InterSystems IRIS における WS-SecureConversation のサポート
InterSystems IRIS は、以下のように WS-SecureConversation 1.3 (http://docs.oasis-open.org/ws-sx/ws-secureconversation/v1.3/ws-secureconversation.pdfOpens in a new tab) の一部をサポートしています。
-
SCT Binding (WS-Trust の Issuance Binding に基づいて SecureConversationTokens を発行) および WS-Trust キャンセル・バインディングをサポートしています (http://docs.oasis-open.org/ws-sx/ws-secureconversation/v1.4/os/ws-secureconversation-1.4-spec-os.htmlOpens in a new tab の Canceling Contexts を参照)。
-
使用されるサービスが独自のセキュリティ・トークン・サービスとして動作する場合をサポートします。
-
トークンに対する単純な要求および単純な応答のみをサポートします。
InterSystems IRIS は、WS-Trust 1.3 (http://docs.oasis-open.org/ws-sx/ws-trust/v1.3/ws-trust.pdfOpens in a new tab) の必要なサポート部分もサポートしています。WS-Trust のサポートは、WS-SecureConversation が必要とするバインディングに限定されます。これは一般的な実装ではありません。
InterSystems IRIS における WS-ReliableMessaging のサポート
InterSystems IRIS は、HTTP を介したメッセージを同期するために、WS-ReliableMessaging 1.1 および 1.2 をサポートします。 応答メッセージでは、匿名の応答のみがサポートされています。同期メッセージのみがサポートされているので、キューは実行されません。
http://docs.oasis-open.org/ws-rx/wsrmp/200702/wsrmp-1.1-spec-os-01.htmlOpens in a new tab および http://docs.oasis-open.org/ws-rx/wsrm/200702Opens in a new tab を参照してください。