シークレットをスクリプトにロードする
1Passwordマニュアル|1Password CLIを使って、シークレットを設定ファイルに読み込む方法を詳しく解説します。
Last updated
1Passwordマニュアル|1Password CLIを使って、シークレットを設定ファイルに読み込む方法を詳しく解説します。
Last updated
1Password CLIを使ってスクリプトにシークレットを読み込むことで、スクリプト内の認証情報は常に1Passwordアカウントの情報と同期され、シークレットがプレーンテキストで公開されることはありません。
次の方法を個別または組み合わせて使用して、シークレットをスクリプトに読み込むことができます。
op runコマンドを使って環境にシークレットを読み込む
op readコマンドでシークレットを読みこむ
op injectコマンドでシークレットを設定ファイルに読み込む
op plugin runコマンドでシェルプラグインを使ってシークレットを読み込む
ヒント
に従うために、を使うことをお勧めします。サービスアカウントは、1Password CLIを特定のVaultに制限することをサポートしているため、承認されたターミナルセッションのプロセスは、特定の目的のために必要なアイテムにのみアクセスできます。
個人アカウントにSSOまたはMFAの必要条件がある場合にも、サービスアカウントは便利です。
1Password CLIを使ってスクリプトにシークレットを読み込む前に、次の操Createを行う必要があります。
スクリプトに必要なシークレットを1PasswordアカウントにSaveしてください。
平文のシークレットを使う代わりに、を含む環境ファイルを使用し、実行時にコマンドを使ってシークレットをスクリプトに渡すことができます。
例えば、AWS_SECRET_ACCESS_KEYとAWS_ACCESS_KEY_IDという環境変数を使ってスクリプトでAWSコマンドにシークレットを指定し、認証情報がprod vaultのawsアイテムのsecret-keyフィールドとaccess-keyフィールドにSaveされている場合、環境ファイルは次のようになります:
yourscript.env
AWS_SECRET_ACCESS_KEY=op://prod/aws/secret-key
AWS_ACCESS_KEY_ID=op://prod/aws/access-key
シークレットをスクリプトに渡すには、環境ファイルに--env-fileフラグを設定して、スクリプト全体をop runコマンドでラップします。
$ op run --env-file yourscript.env -- yourscript.sh
この方法では、シークレットはシークレット参照を含む単一のコマンドにのみ渡されます。
例えば、DockerにログインするコマンドでDockerユーザー名とパスワードをシークレット参照に置き換えるには、次のようにします。
yourscript.sh
$ #!/bin/bash
$
$ docker login -u $(op read op://prod/docker/username) -p $(op read op://prod/docker/password)
例えば、スクリプト内で、AWS_SECRET_ACCESS_KEYとAWS_ACCESS_KEY_IDという環境変数を使ってシークレットを含むAWSコマンドを指定する場合、そのスクリプトは次のようになります。 yourscript.sh
$ #!/bin/bash
$
$ export AWS_SECRET_ACCESS_KEY=$(op read op://prod/aws/secret-key)
$ export AWS_ACCESS_KEY_ID=$(op read op://prod/aws/access-key-id)
$aws sts get-caller-identity
スクリプトが設定ファイルを使う場合は、シークレット参照を使って構成ファイルをテンプレート化し、op injectコマンドを使って、実行時にシークレット参照を基に解決したシークレットを含む設定ファイルをスクリプトに渡すことができます。
これにより、設定ファイルをソース管理にチェックインし、開発者ワークステーションとCIと運用サーバー全体で同期を保つことができます。また、シークレット参照内にテンプレート変数を含めて、さまざまな環境に対して異なるシークレットのセットを読み込むこともできます。
スクリプトが対話的に実行され、スクリプトを使う各ユーザーが自分の個人トークンで認証する場合、1Password Shell Pluginを使ってスクリプトを使う前に必要な設定を最小限に抑えることができます。シェルlプラグインは、スクリプトの実行時に各ユーザーに資格情報を選択するよう求めます。
スクリプトを使う各ユーザーは、認証に資格情報を使うタイミングを設定するよう求められます。選択した資格情報がスクリプトの今後の呼び出しにも使われるようにするには、資格情報をグローバルまたはディレクトリーのデフォルトとして設定します。
シェルプラグインを使って個々のコマンドを認証するには、各コマンドをop plugin runでラップします。例えばAWSシェルプラグインを使って、sts get-caller-identityコマンドにAWS Access KeyとSecret Key IDを提供するには、次のようにします。
yourscript.sh
$ #!/bin/bash
$
$ op plugin run -- aws sts get-caller-identity
スクリプト全体でシェルプラグインを使うには、スクリプトの先頭にツールの実行可能コマンドのエイリアスを含めることができます。例えばこのスクリプトでは、AWSシェルプラグインを使って、awsスクリプト内の全コマンドのシークレットを提供します。
yourscript.sh
$ #!/bin/bash
$
$ alias aws="op plugin run -- aws"
$ aws sts get-caller-identity
この方法を使うと、ため、DevOpsエンジニアは1つのシークレットのセットで本番環境でスクリプトを使って、一方で開発者はローカルマシン上で異なるシークレットで同じスクリプトを使うということができます。
についてより深く学んでください。
、または、シークレット参照でop readを利用できます。
スクリプト内で、op readに対して環境変数をセットするコマンドやを含めることもできます。
についてより深く学んでください。
利用しているツール用のシェルプラグインが存在しない場合は、できます。