
IBM Security Appliance REST API 向けの冪等関数。現在は ISAM および ISDS Appliance を対象としています。
このリポジトリには、IBM セキュリティー・アプライアンスをそれぞれの REST API を使用して管理するための Python コードが含まれています。 ISAM アプライアンスのコードが最も成熟しています。
ISDS アプライアンスのコードは開発中です。
ISVG アプライアンスのコードは新しいものです(10.0.1.0 以上でのみテスト済み)。
このパッケージには Python v3.9 以上が必要です。
以下の Python パッケージが必要です:
以下の Python パッケージはオプションです:
アプライアンスは、その LMI に IP アドレスが定義されている必要があります。これは、アプライアンスがライセンスの承諾を含む初期セットアップを完了していることを意味する場合があります。
これらの変更は後方互換性があります。デフォルトでは検証を行いませんが、常に通知を表示します:
Certificate verification has been disabled. Python is NOT verifying the SSL
certificate of the host appliance and InsecureRequestWarning messages are
being suppressed for the following host:
https://{0}:{1}
To use certificate verification:
1. When the certificate is trusted by your Python environment:
Instantiate all instances of ISAMAppliance with verify=True or set
the environment variable IBMSECLIB_VERIFY_CONNECTION=True.
2. When the certificate is not already trusted in your Python environment:
Instantiate all instances of ISAMAppliance with the verify parameter
set to the fully qualified path to a CA bundle.
See the following URL for more details:
https://requests.readthedocs.io/en/latest/user/advanced/#ssl-cert-verification
この証明書検証の警告を改善するには、以下の手順を検討してください:
正しい使用方法:
証明書がディスク上のどこかにある場合は、ISAMAppliance を次のようにインスタンス化します:
ISAMAppliance(…, verify=<path to cert>)
これは、以下のようなコマンドを使用してアプライアンスから取得できます:
openssl s_client -connect ${HOSTNAME}:${PORT} </dev/null 2>/dev/null | openssl x509 -outform pem > isamAppliance.pem
証明書が Python 環境ですでに信頼されている場合は、ISAMAppliance を次のようにインスタンス化します:
ISAMAppliance(…, verify=True)
または、環境変数 IBMSECLIB_VERIFY_CONNECTION=true を設定します。
ホスト名が証明書と一致しないというエラーが発生する場合:
これは次のようになります:
<stack trace>
…
raise CertificateError("hostname %r doesn't match %r" % (hostname, dnsnames[0]))
urllib3.util.ssl_match_hostname.CertificateError: hostname '192.168.42.111' doesn't match 'appliance.ibm.com'
ISAMAppliance のインスタンス化時に使用するホスト名が、証明書の Subject Alternative Name と一致していることを確認してください。
次のコマンドで確認できます:
openssl x509 -in <cert-pem-file> -text
例:
$ openssl x509 -in /path/to/appliance.pem -text
Certificate:
Data:
Version: 3 (0x2)
…
X509v3 Subject Alternative Name:
DNS:appliance.ibm.com
…
以下はエラーを生成します:
ISAMAppliance(host=”192.168.42.111”, lmi_port=443, verify=/path/to/appliance.pem)
ホストが Subject Alternative Name と一致しないためです。 代わりに、次を使用してください:
ISAMAppliance(host=”appliance.ibm.com”, lmi_port=443, verify=/path/to/appliance.pem)
このパッケージはバージョニングに日付を使用します。例: "2017.03.18.0"
これはパッケージがリリースされた日付で、1 日に複数回リリースがある場合(まれであると想定)に対応するために末尾にシーケンス番号が付きます。
この Python パッケージは以下の機能を提供します:
{
rc: <0 for success, higher for errors>
changed: <True or False>
warnings: <List of strings with warnings - e.g. incompatible version>
data: <JSON data returned by appliance REST API that the function called>
}
注:ゼロ以外の rc を返送するよりも、警告を返すことが推奨されます。
ここでサポートされている各アプライアンスのクラスを作成するために、抽象 ibmappliance クラスが拡張されています。
現在のところ、ISAM と ISDS アプライアンスです。
必要なユーザーの各タイプに対して、抽象 User が拡張されます。ISAM の場合、アプライアンスアクセス用のユーザーと、Web Runtime(ポリシーサーバー)への認証用の別のユーザーです。
ISAM には 4 つの主要なパッケージがあります - base、web、aac、fed。web には、組み込み LDAP、ランタイム、wga モジュールの一部としてアクティブ化される機能など、Web 機能のセットアップに必要なすべてのコンポーネントが含まれています。aac には mga モジュールの一部としてアクティブ化される機能が含まれ、fed には federation の機能が含まれます。base には、aac と fed の runtime と Audit Configuration を含むその他すべてが含まれます(これらは aac と に共通であるため、 にあります)。
パッケージ名とファイル名は以下の意図で作成されました:
任意の IBM アプライアンスに依存しない、汎用的な雑多な関数が含まれています。例:json_compare()。
get_all()この関数は通常、その機能に関連するすべてのオブジェクトを返します。
get()この関数は、特定の 1 つのオブジェクトの詳細を返します。
set()この関数は、操作対象のオブジェクトが存在するかどうかを判断し、存在しない場合は add() を呼び出し、それ以外の場合は update() を呼び出します。
update() がない場合は、アプライアンス上の既存の値と関数で設定される値に違いがあるかどうかを比較し、異なる場合は add() を呼び出す前にそのオブジェクトを delete() します。
add()オブジェクトがすでに存在するかどうかを確認し、存在する場合はスキップし、それ以外の場合は追加します。
update()オブジェクトがすでに存在するかどうかを確認し、存在する場合は変更を行う前に更新が必要かどうかを確認し、それ以外の場合は何もしません。
delete()オブジェクトがすでに存在するかどうかを確認し、存在する場合は削除し、それ以外の場合は何もしません。
import_<>()"import" は予約語のため、何をインポートするかを示すサフィックスがあります(例:ファイルまたはキー)。これは、インポートする前にオブジェクトが存在するかどうかを確認します。
export_<>()エクスポートする前に存在するかどうかを確認します - ファイルにエクスポートする場合、ファイルがすでに存在する場合は再エクスポートしません。 エクスポート
compare()compare は get_all() 関数からの JSON 出力を受け取り、それを比較します。各アプライアンスに固有のデータ(UUID 値など)を JSON から取り除きます。返される deleted_keys 値は、比較前に削除された JSON キーをリストします。
アプライアンスオブジェクトを作成し、関数に渡します。必要なアプライアンスと User オブジェクトは、ユーザー名/パスワードの代わりに証明書を使用した認証など、将来の拡張を可能にするためのクラスです。
check_modeデフォルトは False で、True を渡すと変更を行わずに返します。変更が検出された場合、"changed" フラグが True に設定されます。
forceデフォルトは False で、True を渡すと冪等性ロジックを上書きします。
その他のパラメーターは REST API ドキュメントに完全に一致します。意図は REST API ドキュメントを参照することであり、それを繰り返さないことです。詳細については REST API ドキュメントを参照してください。
バグが発見された場合、またはこのパッケージでカバーされていない REST API がある場合は、github で issue を報告してください。 バグを報告する際は、トレースログとともに詳細なメモを提供してください。
このリポジトリの内容は、Apache 2.0 ライセンスの下でオープンソースです。
Copyright 2017 International Business Machines
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
fedbase