ワークフローでは、特定のTD APIキーやPostgreSQL認証情報を使用する必要があることがよくあります。
TD APIキー、データベース認証情報、およびその他のオブジェクトは、潜在的に機密性の高いビジネスデータへのアクセスに使用できるため、安全に取り扱うことが重要です。
TD Workflowsは、通常のワークフローパラメータとは別に認証情報を安全に管理できる、セキュアなシークレット管理システムを提供しています。
シークレットのベストプラクティスも参照してください。
TD Workflows SFTPデータコネクタの例を確認してください。
- セキュリティ上の理由から、TD Workflowsサービスにアップロードされたシークレットをダウンロードすることはできません。
- シークレットは主にtd_loadでYAMLに認証情報を展開するために使用されます。SQL変数、演算子のパラメータなどとしては使用できません。
ワークフローがTD Workflowsにプッシュされると、ワークフローをプッシュしたユーザーの権限が自動的に使用されます。
別のユーザーの権限でワークフローを実行するには、td wf secretsコマンドを使用して別のキーをTD Workflowsサービスにアップロードします。特定のTD APIキーを使用してワークフローを設定します。
以下のコマンドを実行して使用するAPIキーをアップロードし、プロンプトが表示されたらAPIキーを入力します。APIキーはターミナルに表示されません。その後、Enterキーを押します。
td wf secrets \
--project nasdaq_analysis \
--set td.apikeyこれで、このプロジェクト内のすべてのワークフローがそのAPIキーを使用します。ワークフローを開始して試してみてください。
td wf start nasdaq_analysis \
nasdaq_analysis \
--session now指定されたAPIキーはワークフローログに表示されませんが、ワークフローは正常に実行されるはずです。無効なAPIキーが指定された場合、実行は失敗します。
APIキーを変更するには、secretsのsetコマンドを再度実行し、別のAPIキーを指定します。
デフォルトのAPIキーの使用に戻すには、アップロードしたAPIキーを削除します。
td wf secrets \
--project nasdaq_analysis \
--delete td.apikeyワークフロー内のタスクを、異なるTDアカウントにアクセスするために異なるAPIキーを使用するように設定したい場合があります。
ワークフローを正常に実行するには、一時ファイルがまだ存在しない場合、2つのそれぞれのAPIキーのアカウントにデータベースworkflow_tempを作成する必要がある場合があります。
2つの異なるAPIキーをアップロードします。
td wf secrets --project nasdaq_analysis --set apikey1
td wf secrets --project nasdaq_analysis --set apikey22つのタスクが2つの異なるAPIキーを使用するように設定します。
timezone: UTC
schedule:
daily>: 07:00:00
_export:
td:
database: workflow_temp
+task1:
_secrets:
td:
apikey: apikey1
td>: queries/daily_open.sql
create_table: daily_open
+task2:
_secrets:
td:
apikey: apikey2
td>: queries/monthly_open.sql
create_table: monthly_openワークフローを開始し、正常に実行されることを確認します。
td wf start nasdaq_analysis \
nasdaq_analysis \
--session nowこのセクションでは、pg>演算子を使用するワークフローがすでにあることを前提としています。
PostgreSQLのユーザーとパスワードを安全に設定するには、td wf secretsコマンドを使用してTD Workflowsにアップロードします。
td wf secrets --project my_project --set pg.user
td wf secrets --project my_project --set pg.passwordワークフローファイルにpg.userとpg.passwordが存在する場合は、必ず削除してください。
このプロジェクト内のすべてのワークフローは、pg>演算子を実行する際に指定されたユーザーとパスワードを使用します。他のいくつかの演算子設定オプションも安全に定義できます。これには以下が含まれます:
hostportuserpassworddatabasesslconnect_timeoutsocket_timeoutschema
さまざまな設定オプションの詳細については、Digdagドキュメントを参照してください。
ワークフロープロジェクト内で異なるPostgreSQL認証情報のセットを使用するには、異なる名前でアップロードします。
td wf secrets --project my_project --set db1.pg.user
td wf secrets --project my_project --set db1.pg.password
td wf secrets --project my_project --set db2.pg.user
td wf secrets --project my_project --set db2.pg.password次に、それぞれdb1とdb2の名前を使用して認証情報を参照します。
名前は自由に選択できます。
+task1:
_secrets:
pg: db1
pg>: query1.sql
+task2:
_secrets:
pg: db2
pg>: query2.sqlこれで、task1はdb1の認証情報を使用し、task2はdb2の認証情報を使用します。
複数の認証情報セットを管理する場合、ファイルを使用して一度にすべてをアップロードする方が便利な場合があります。YAMLおよびJSON形式のサンプルを以下に示します。
- 認証情報のキーと値のペアを含むファイルを作成します。
db1.pg.user: user1
db1.pg.password: pw1
db2.pg.user: user2
db2.pg.password: pw2
db3.pg.user: user3
db3.pg.password: pw3- 認証情報をTD Workflowsにアップロードします
td wf secrets --project my_project --set @credentials.yml- 認証情報のキーと値のペアを含むファイルを作成します。
{
"db1.pg.user": "user1",
"db1.pg.password": "pw1",
"db2.pg.user": "user2",
"db2.pg.password": "pw2",
"db3.pg.user": "user3",
"db3.pg.password": "pw3"
}
- 認証情報をTD Workflowsにアップロードします
td wf secrets \
--project my_project \
--set @credentials.jsonプロジェクトにアップロードされたシークレットを一覧表示するには、secretsコマンドを実行する際に--setオプションを省略します。
td wf secrets --project my_projectローカルモードでシークレットを使用するには、secretsコマンドを実行する際に--projectの代わりに--localオプションを使用します。
td wf secrets --local --set @credentials.ymlプロジェクトにアップロードされた認証情報を削除するには、--deleteオプションを使用し、削除する1つ以上のシークレットを指定します。
td wf secrets \
--project my_project \
--delete db2.pg.user db2.pg.password