SDKとしてのコマンダーCLI

コマンダーCLIをライブラリとして利用

インストール

以下は、Pythonの仮想環境を使って依存関係を分離しつつ、ソースコードからコマンダーを開発・テストする方法となります。コマンダーCLIはライブラリとして利用することも、必要に応じてCLIのソースコードをカスタマイズすることも可能です。

コマンダーリポジトリをクローンする

こちらのGithubページからリポジトリをローカルマシンにクローンします。

$ git clone https://github.com/Keeper-Security/Commander
cd Commander

「master」ブランチは本番リリースと同期されます。「release」ブランチは今後のリリースに対応しています。任意で「release」ブランチに切り替えるには、以下を実行します。

git checkout release

Pythonをインストールする

python.orgから最新のPython3インストールを使用します。

仮想環境を作成して有効にする

python3 -m venv venv
source venv/bin/activate

依存関係をインストールし、開発モードでセットアップする

pip install -r requirements.txt
pip install -e .

セットアップ完了

コマンダーCLIを起動できるようになりました。

keeper shell

認証プロセスの詳細については「ログイン」ページをご参照ください。利用できるコマンドについてもぜひご確認ください。


Pythonコード

認証

SDKを使ってKeeper コマンダーにサインインするには、主に2つの方法があります。

手動認証

この方法ではユーザー名を入力した後、コマンダーからログインプロンプトが表示されます。ユーザーが認証を完了すると、プログラムの処理が続行されます。

from keepercommander.params import KeeperParams
from keepercommander import api

params = KeeperParams()
params.user = input('User email: ')
api.login(params) # Initiates login prompts
api.sync_down(params)

自動認証

この方法では、ログイン状態維持の構成を作成した際に生成された config.json ファイルを使用します。設定ファイルが有効であれば、プログラムはコマンダーにプロンプトなしでサインインします。設定ファイルが無効または期限切れの場合は、プログラムはログインプロンプトに戻ります。

from keepercommander.__main__ import get_params_from_config

params = get_params_from_config("{{path_to_config_file}}")

ボルト操作

Pythonスクリプト内でbash形式のCLIコマンドを直接実行するには、keepercommander ライブラリの cli パッケージをインポートし、do_command 関数を使用します。

from keepercommander.__main__ import get_params_from_config
from keepercommander import cli

# ログイン 
my_params = get_params_from_config("{{path_to_config_file}}")

# コマンドの実行
cli.do_command(my_params, "{{cli_command}}")

上記の例では、認証は config.json ファイルを参照する get_params_from_config 関数によって行われます。構成ファイルの作成方法については、「永続的なログイン構成の作成」の項目をご覧ください。

また、コマンダーSDK に含まれる内部クラスや関数を活用することで、さらに柔軟な操作が可能になります。こちらのGinhubページで、レコードの検索、チームの作成、フォルダの共有など、スタンドアロンPythonスクリプトをご参照いただけます。

from keepercommander.__main__ import get_params_from_config
from keepercommander import api

# ログイン
params = get_params_from_config("{{path_to_config_file}}")
api.login(params)
api.sync_down(params)

# 共有フォルダを検索
shared_folder_name = 'Example Shared Folder'
folder_search = api.search_shared_folders(params, shared_folder_name)

# フォルダが存在する場合完全なレコードディクショナリを取得
keeper_folder = None
if folder_search:
    keeper_folder = folder_search[0]
    for record in keeper_folder.records:
        record_obj = api.get_record(params, record["record_uid"])
        print(record_obj.to_dictionary())
else:
    print('No folder found')

エンタープライズ利用

エンタープライズデータにアクセスする機能は、params.enterprise オブジェクトが設定されていない限り、データを取得しません。params.enterpriseapi.query_enterprise() 関数を使って設定できます。以下のプログラムは、audit-report コマンドのJSON出力をPython内で直接取得する例です。

from keepercommander.__main__ import get_params_from_config
from keepercommander import api
from keepercommander.commands.aram import AuditReportCommand

from json import loads

# ログイン
params = get_params_from_config("{{path_to_config_file}}")
api.login(params)
api.sync_down(params)

api.query_enterprise(params) # エンタープライズ情報を設定

# Python内でJSONレポートを直接取得
kwargs = {
    'report_type':'raw', 
    'format':'json',
    'limit':-1,
    'aggregate':['occurences']
}
command_class = AuditReportCommand()
command_run = command_class.execute(params, **kwargs)
report = loads(command_run)

コマンダーSDKの内部クラスや関数を利用することで、SDKの全機能を活用できます。こちらで、レコード検索、チーム作成、フォルダ共有などの例を含む、独立したPythonスクリプトをご確認ください。

最終更新