コンテンツにスキップ

XDR Python SDKによる認証🔗

Python SDKでのクライアント認証情報🔗

Python SDKは、インストール時にクライド認証情報を用いてお客様のSecureworks® Taegis™アカウントに認証します。これにはパスワードとMFAトークンが必要ですが、組織がSSO認証を登録している場合は不要です。SSOが有効な場合、デバイスコード認証リンクが表示されます。

注意

これらの例で必要に応じてトークンを生成・設定するには、下記のトークンの生成を参照してください。

使用例🔗

from taegis_sdk_python import GraphQLService
from pprint import pprint as pp

service = GraphQLService(environment="US1")

results = service.clients.mutation.create_client(name="my_awesome_app", roles=None)

print(f"CLIENT_ID: {results.client.client_id}")
print(f"CLIENT_SECRET: {results.client_secret}")
pp(results)

注意

お客様の環境に合わせて変更してください。

パートナー認証情報🔗

テナント固有のクライアント認証情報が必要な場合は、サービスコンストラクタにtenant_idを追加してください。

from taegis_sdk_python import GraphQLService
from pprint import pprint as pp

service = GraphQLService(environment="US1", tenant_id="<tenant_id>")

results = service.clients.mutation.create_client(name="my_awesome_app", roles=None)

print(f"CLIENT_ID: {results.client.client_id}")
print(f"CLIENT_SECRET: {results.client_secret}")
pp(results)

また、複数のテナント認証情報を同時に作成する場合は以下のようにします。

from taegis_sdk_python import GraphQLService
from pprint import pprint as pp

service = GraphQLService()

# service context let's you change out values per call!

with service(environment="US1", tenant_id="<tenant_id>"):
    results = service.clients.mutation.create_client(name="my_awesome_tenant_app", roles=None)

with service(environment="US1", tenant_id="<another_tenant_id>"):
    results2 = service.clients.mutation.create_client(name="my_awesome_another_tenant_app", roles=None)

print(f"CLIENT_ID: {results.client.client_id}")
print(f"CLIENT_SECRET: {results.client_secret}")
pp(results)

特権認証情報🔗

from taegis_sdk_python import GraphQLService
from pprint import pprint as pp

service = GraphQLService(environment="US1")

results = service.clients.mutation.create_client(name="my_awesome_app", roles=['ba0fdcbd-e87d-4bdd-ae7d-ca6118b25068'])

print(f"CLIENT_ID: {results.client.client_id}")
print(f"CLIENT_SECRET: {results.client_secret}")
pp(results)

トークンの生成🔗

認証のためにCLIENT_IDとCLIENT_SECRETを環境変数に設定できます。ユーザーインタラクティブなスクリプトの場合、事前に認証を用意する必要はありません。Python SDKはAPI呼び出し時に有効なトークンを確認し、見つからない場合は実行時に認証情報を要求します。

Pythonスクリプト例🔗

from taegis_sdk_python import GraphQLService
service = GraphQLService()
print(service.access_token)

コマンドライン例🔗

export CLIENT_ID="you_client_id"
export CLIENT_SECRET="your_client_secret"
python script.py

XDR Python SDKでのトークン利用について🔗

XDR Python SDKの認証フローは、キャッシュ済みトークン→OAuthによる認証→SSOまたはユーザー名/パスワード/MFAによる認証です。トークンは~/.taegis_sdk_python/configファイルにキャッシュされます。

OAuth🔗

CLIENT_IDCLIENT_SECRETからのOAuthトークンがデフォルトで使用されます。

CLIENT_IDCLIENT_SECRETを生成するには:

from taegis_sdk_python.services import GraphQLService
from pprint import pprint as pp
service = GraphQLService(environment="US1")
result = service.clients.mutation.create_client(name="my_awesome_app", roles=None)
print(f"CLIENT_ID: {result.client.client_id}")
print(f"CLIENT_SECRET: {result.client_secret}")
pp(result)

重要

CLIENT_IDCLIENT_SECRETの結果は暗号化されたボールトに保管してください。

以下の例で<client_id><client_secret>をお客様の値に置き換えてください。

CLIENT_ID=<client_id> CLIENT_SECRET=<client_secret> python script.py

環境変数のカスタマイズ🔗

write_to_configを使用して、環境ごとにカスタム環境変数を設定できます。これは自動化や、同じスクリプトから異なる環境へアクセスする必要がある場合に便利です。

from taegis_sdk_python import GraphQLService
from taegis_sdk_python.config import write_to_config

# write_to_config(environment, default_reference, custom_reference)

write_to_config("US1", "CLIENT_ID", "US1_CLIENT_ID")
write_to_config("US1", "CLIENT_SECRET", "US1_CLIENT_SECRET")

service = GraphQLService()
US1_CLIENT_ID=<client_id> US1_CLIENT_SECRET=<client_secret> python script.py

ユーザー名🔗

環境変数にOAuthトークンを指定しない場合、ユーザー名の入力を求められます。組織でシングルサインオンが有効な場合はリンクが表示され、それ以外の場合はパスワードとMFAトークンの入力が求められます。

認可トークンのクリア🔗

認証トークンを手動でクリアする必要がある場合は、以下を使用してください。

from taegis_sdk_python.config import write_to_config

write_to_config("US1", "access_token", "")

クライアント認証情報の検索🔗

from taegis_sdk_python import GraphQLService

service = GraphQLService()
search_results = service.clients.query.clients(client_ids=["<CLIENT_ID>"])
print(search_results)

名前付き認証情報の検索🔗

ワイルドカード一致には%を使用できます。

from taegis_sdk_python import GraphQLService

service = GraphQLService()
results = service.clients.query.clients(name="%docs-test-client%")
print(results)

管理者認証情報の検索🔗

from taegis_sdk_python import GraphQLService

service = GraphQLService()
results = service.clients.query.clients(role_ids=["c373d68a-fdca-476f-5b48-92ed5804dc53"])
print(results)

クライアントシークレットのリセット🔗

クライアントIDを保持したままクライアントシークレットをリセットする場合は、rotateClientSecretミューテーションを使用して新しいクライアントシークレットを生成できます。ID入力にはUUIDまたはclient_idのいずれかを指定できます。

from taegis_sdk_python import GraphQLService

service = GraphQLService()
update_results = service.clients.mutation.rotate_client_secret('c373d68a-fdca-476f-5b48-92ed5804dc53')
print(update_results)
from taegis_sdk_python import GraphQLService

service = GraphQLService()
update_results = service.clients.mutation.rotate_client_secret('b42USvw1jm5fk3Y2VqoAWSyG4CF47Ek5')
print(update_results)

クライアントの削除🔗

クライアント認証情報の利用が終了したら、deleteClientミューテーションを使用して認証情報を無効化できます。ID入力にはUUIDまたはclient_idのいずれかを指定できます。

from taegis_sdk_python import GraphQLService

service = GraphQLService()
delete_results = service.clients.mutation.delete_client('c373d68a-fdca-476f-5b48-92ed5804dc53')
print(delete_results)
from taegis_sdk_python import GraphQLService

service = GraphQLService()
delete_results = service.clients.mutation.delete_client('b42USvw1jm5fk3Y2VqoAWSyG4CF47Ek5')
print(delete_results)