シークレット参照の構文

1Passwordマニュアル|シークレット参照URIを活用して、Vaultやアイテム内の情報を効率的に管理し、安全にアクセスする方法を説明します。

シークレット参照 URI は、情報がSaveされている保管庫、アイテム、セクション、フィールドの名前を使用して、1Password アカウント内でシークレットがSaveされている場所を指します。

$ op://<vault-name>/<item-name>/[section-name/]<field-name>

シークレット参照により、コード内のプレーンテキストのシークレットが公開されるリスクがなくなり、1Password アカウントに加えた変更が反映されるため、スクリプトを実行すると最新の値が得られます。

シークレット参照は次の場合に使用できます。

1Password CLI

環境変数、構成ファイル、スクリプトにシークレットを読み込みます。

1Password SDK

Go、JavaScript、Python を使用してプログラム的にシークレットにアクセスします。

シークレットオートメーション

シークレット参照を使用して、シークレット管理ワークフローを保護します。

VSコード

コード内のシークレット参照をCreate・プレビュー・読み取りできます。

1Passwordの統合

Kubernetes、CircleCI、GitHub Actions、Jenkins、Terraform、Pulumi、Postmanなどのシークレットに安全にアクセスします。

シークレット参照

1Passwordデスクトップアプリ

1Password デスクトップ アプリでシークレット参照をコピーするオプションを表示するには、まず1Password CLI との統合をオンにします。次に、次の手順を実行します。

①参照したいシークレットがSaveされているアイテムを開きます。 ②参照したいシークレットを含むフィールドの横にあるをクリックし、Copy Secret Referenceを選択します。

1Password で「シークレット参照のコピー」オプションが選択された項目。

With 1Password for VS Code

1Password for VS Codeを使うと、コードを編集するときに1Passwordからシークレット参照を挿入できます。まず、拡張機能をインストールします。次に、次の手順を実行します。

Command Paletteを開きます。

②1Password: Get from 1Password と入力します。

③アイテム名またはIDを入力します。

④使うフィールドを選択します。

With 1Password CLI

1Password CLIでシークレットリファレンスを取得するには、--format jsonフラグを付けてop item getを実行し、フィールドラベルを指定する--fieldsフラグを含めます。次にJSON 出力からシークレット参照を取得するためにjqを使用します。例:

$ op item get GitHub --format json --fields username | jq .reference
結果を見る...

"op://development/GitHub/username"

項目の全てのフィールドのシークレット参照を取得するには、フィールドを指定せずに --format json フラグを指定してop item getを使用します。

JSON出力の例
op item get GitHub --format json

各フィールドオブジェクトには、referenceそのシークレット参照を含むキーが含まれます。この例のGitHubアイテムの場合、出力は次のようになります。

"fields": [
{
"id": "username",
"type": "STRING",
"purpose": "USERNAME",
"label": "username",
"value": "[email protected]",
"reference": "op://development/GitHub/username"
},
{
"id": "password",
"type": "CONCEALED",
"purpose": "PASSWORD",
"label": "password",
"value": "GADbhK6MjNZrRftGMqto",
"entropy": 115.5291519165039,
"reference": "op://development/GitHub/password",
"password_details": {
"entropy": 115,
"generated": true,
"strength": "FANTASTIC"
}
},
{
"id": "notesPlain",
"type": "STRING",
"purpose": "NOTES",
"label": "notesPlain",
"reference": "op://development/GitHub/notesPlain"
},
{
"id": "5ni6bw735myujqe4elwbzuf2ee",
"section": {
"id": "hv46kvrohfj75q6g45km2uultq",
"label": "credentials"
},
"type": "CONCEALED",
"label": "personal_token",
"value": "ghp_WzgPAEutsFRZH9uxWYtw",
"reference": "op://development/GitHub/credentials/personal_token"
}
]
}

構文規則

サポートされている文字

シークレット参照では大文字と小文字が区別されず、次の文字がサポートされます。

  • 英数字 ( a-zA-Z0-9)

  • -、、_および.空白文字

シークレット参照に空白が含まれている場合は、シークレット参照を引用符で囲みます。例:

$ op read "op://development/aws/Access Keys/access_key_id"

サポートされていない文字を含むシークレット参照の部分は、名前ではなく一意の識別子 (ID)で参照する必要があります。

ID を取得するには、op item get出力を JSON に設定して実行します。例えば、test/という名前のカスタム テキスト フィールドの ID を取得するには、次のようにします。

op item get PagerDuty --fields label=test/ --format json
結果を見る...
{
"id": "hu4vwo3bjkawq2uw2fkn5pkjzu",
"section": {
"id": "add more"
},
"type": "STRING",
"label": "text/",
"value": "t",
"reference": "op://Management/PagerDuty/add more/hu4vwo3bjkawq2uw2fkn5pkjzu"
}

ファイルの添付

添付ファイルを参照するには、フィールド名の代わりにファイル名を使用します。

$ op://vault-name/item-name/[section-name/]file-name

外部設定変数

異なる環境で異なるシークレット セットを使う場合は、シークレット参照内に変数を含め、シークレットを切り替えるように変数を設定できます。

例えば、資格情報が dev および prod という名前の 1Password コンテナーにSaveされていると仮定すると、以下の例の APP_ENV 変数を dev に設定して開発資格情報をロードしたり、 prod に設定して実稼働資格情報をロードしたりできます。

アプリ.env
MYSQL_DATABASE = "op://$APP_ENV/mysql/database"
MYSQL_USERNAME = "op://$APP_ENV/mysql/username"
MYSQL_PASSWORD = "op://$APP_ENV/mysql/password"

変数を使用して、環境ファイルと構成ファイル内のシークレットのセットを切り替える方法を学習します。

フィールドとファイルのメタデータ属性

クエリ パラメータを含むシークレット参照を使用して、アイテムに関する詳細情報を取得できます。

属性パラメータ

アイテム フィールドとファイル添付に関する情報を取得するには、 attribute(またはattr) クエリ パラメータを使用します。

Fields
op://<vault>/<item>[/<section>]/<field-name>?attribute=<attribute-value>
File attachments
op://<vault>/<item>[/<section>]/<file-name>?attribute=<attribute-value>

Field attributes:

属性

意味

type

フィールドの種類

value

フィールドの内容

id

フィールドの一意の識別子

purpose

組み込みフィールドの指定(「ユーザー名」、「パスワード」、または「メモ」)

otp

ワンタイムパスワードフィールドを使用してワンタイムパスワードコードを生Createします

File attachment attributes:

属性

意味

type

フィールドの種類

content

添付ファイルの内容

size

添付ファイルのサイズ

id

添付ファイルの一意の識別子

name

添付ファイルの名前

例えば、アイテムのワンタイム パスワード コードを取得するには、次のようにします。

$ op read "op://development/GitHub/Security/one-time password?attribute=otp"
結果を見る...

359836

フィールドのタイプを取得するには:

$ op read "op://Personal/aws/access credentials/username?attribute=type"
結果を見る...

string

添付ファイルの名前を取得するには:

$ op read "op://app-infra/ssh/key.pem?attribute=name"
結果を見る...

key.pem

SSH フォーマットパラメータ

OpenSSH 形式で SSH 秘密キーを取得するには、SSH鍵のシークレット参照に値 openssh を指定した ssh-format クエリ パラメーターを含めます。

$ op read "op://Private/ssh keys/ssh key/private key?ssh-format=openssh"
結果を見る...

-----BEGIN OPENSSH PRIVATE KEY----- b3BlbnNzaC1rZXktdjEAAAAACmFlczI1Ni1jdHIAAAAGYmNyeXB0AAAAGAAAABD3rRrf8J ruD0CxZTYfpbTYAAAAEAAAAAEAAAAzAAAAC3NzaC1lZDI1NTE5AAAAIJ5B/GnxX6t9jMwQ G7QE7r5daJLkMKTZhNZhWfvzK2y+AAAAkLgQAivYu/+12/YrZhK5keIAZf4ZgsZsZ2JI2q qbx23PqgO93oGy1iCxXe3kngQL4cM6lwOZPsZPKCinkN6KxEr6RnXqFRHJbMpOiGeZhTuD rjeo77HqFdxDqDeckB77XCKL0Ew28H5JlM/WO31XR3Z4VBAgTe+BQLjrFV8WU5UX38hpBJ PMJyRsK72ZUDDaGQ== -----END OPENSSH PRIVATE KEY-----

シークレット参照の例

セクション内のフィールド

管理セクション内にある PagerDuty の電子メール フィールドを参照するシークレット参照をCreateするには、次を使用します。

$ op://Management/PagerDuty/Admin/email
  • ①Management アイテムがSaveされているvaultを指します

  • ②PagerDuty アイテムを参照します

  • ③Adimn フィールドが含まれるセクションを指します

  • ④email 参照したいシークレットが配置されているフィールドを指します

PagerDuty 1Password アイテム

セクションのないフィールド

セクションの一部ではない Stripe 公開鍵 フィールドの秘密参照をCreateするには、次を使用します。

$ op://dev/Stripe/publishable-key
  • ①dev アイテムがSaveされている金庫を指します

  • ②Stripe アイテムを指します

  • ③publishable-key 参照したい秘密が配置されているフィールドを指します。

Stripe 1Password アイテム

さらに詳しく

Last updated