1Password SDKを使用してアイテムを管理する

1Passwordマニュアル|1Password SDKを活用して、シークレット参照を通じてコードに安全かつ効率的にシークレットをロードする方法をご紹介します。

1Password SDKを使用してアイテムを管理する

1Password SDK を使うと、1Password アイテムにSaveされているシークレット値の読み取り、書き込み、更新を行うことができます。始める前に、1Password SDK の使用を開始するための手順に従ってください。

アイテムを管理するときは、保管庫名、アイテム名、セクション名、フィールド名の代わりに一意の識別子 (ID)を使う必要があります。保管庫とアイテムを一覧表示することで ID を取得できます。

サポートされているフィールド タイプに対してアイテム管理操Createを実行できます。

ヒント

プロジェクトですぐに複製してテストできるサンプル コードについては、 1Password GoJavaScript、またはPython SDK GitHub リポジトリの examples フォルダーを参照してください。

アイテムをCreateする

CreateCreateするアイテムのパラメータを指定し、定義したアイテムをclient.Items.Create関数に渡します。

  • Go

次の例では、ユーザー名、パスワード、ワンタイム パスワード、および 1Password が資格情報を自動入力する Web サイトを含むログイン項目をCreateします。

ワンタイム パスワード フィールドの値は、ワンタイム パスワード シークレットまたはotpauth://URI のいずれかになります。この例では、ワンタイム パスワード フィールドはカスタム セクションの下に整理されています。

  • JavaScript

次の例では、ユーザー名、パスワード、ワンタイム パスワードを含むログイン項目と、1Password が資格情報を自動入力する Web サイトをCreateします。

ワンタイム パスワード フィールドの値は、ワンタイム パスワード シークレットまたは otpauth:// URI のいずれかです。この例では、ワンタイム パスワード フィールドがカスタム セクションの下に編Createされています。

// Creates an item

let item = await client.items.create({

title: "My Item",

category: sdk.ItemCategory.Login,

vaultId: "7turaasywpymt3jecxoxk5roli",

fields: [

{

id: "username",

title: "username",

fieldType: sdk.ItemFieldType.Text,

value: "my username",

},

{

id: "password",

title: "password",

fieldType: sdk.ItemFieldType.Concealed,

value: "my secret value",

},

{

id: "onetimepassword",

title: "one-time password",

sectionId: "custom section",

fieldType: sdk.ItemFieldType.Totp,

value:

"otpauth://totp/my-example-otp?secret=jncrjgbdjnrncbjsr&issuer=1Password",

},

],

sections: [

{

id: "custom section",

title: "my section",

},

],

tags: ["test tag 1", "test tag 2"],

websites: [

{

url: "example.com",

label: "url",

autofillBehavior: sdk.AutofillBehavior.AnywhereOnWebsite,

},

],

});

  • Python

次の例では、ユーザー名、パスワード、ワンタイム パスワードを含むログイン項目と、1Password が資格情報を自動入力する Web サイトをCreateします。

ワンタイム パスワード フィールドの値は、ワンタイム パスワード シークレットまたは otpauth:// URI のいずれかです。この例では、ワンタイム パスワード フィールドがカスタム セクションの下に編Createされています。

# Create an Item and add it to your vault.

to_create = ItemCreateParams(

title="MyName",

category="Login",

vault_id="7turaasywpymt3jecxoxk5roli",

fields=[

ItemField(

id="username",

title="username",

field_type="Text",

value="mynameisjeff",

),

ItemField(

id="password",

title="password",

field_type="Concealed",

value="jeff",

),

ItemField(

id="onetimepassword",

title="one-time-password",

field_type="Totp",

section_id="totpsection",

value="otpauth://totp/my-example-otp?secret=jncrjgbdjnrncbjsr&issuer=1Password",

),

],

sections=[

ItemSection(id="", title=""),

ItemSection(id="totpsection", title=""),

],

tags=["test tag 1", "test tag 2"],

websites=[

Website(

label="my custom website",

url="https://example.com",

autofill_behavior="AnywhereOnWebsite",

)

],

)

created_item = await client.items.create(to_create)

アイテムパラメータには以下が含まれます。

パラメータ

意味

Title

アイテムの名前。

Category

Createするアイテムの種類。サポートされているカテゴリ

Vault ID

アイテムをCreateする保管庫の ID。

Tags

アイテムに追加するタグのリスト。

Websites

1Password が項目を自動入力する Web サイトのオプション リスト。ログインとパスワードの項目でのみ使用できます。

カスタム セクション パラメータには次のものが含まれます。

パラメータ

説明

Section ID

セクションの一意の識別子。

Section Title

セクションの名前。

フィールド パラメータには次のものが含まれます。

パラメータ

説明

ID

フィールドの一意の識別子。ログイン項目usernameなどの項目カテゴリに固有のフィールドの場合は、適切な組み込みフィールドID を使用します。password

Title

フィールドの名前。

Field type

フィールドのタイプ。サポートされているフィールド

Value

フィールドに格納される値。

Field Details

オプション。

Section ID

フィールドをカスタム セクションに整理するには、セクションの ID を指定します。オプション。

自動入力ウェブサイトパラメータには以下が含まれます:

パラメータ

説明

URL

ウェブサイトの URL。

ラベル

ウェブサイトの名前。

自動入力の動作

1Password がウェブサイトで認証情報を自動入力するタイミング。オプションには次のものがあります:

  • AnywhereOnWebsite: 1Password は、サブドメインを含む、Web サイトの一部である全てのページで資格情報を自動入力します。

  • ExactMatch: 1Password は、ドメイン (ホスト名とポート) が完全に一致する場合にのみ資格情報を自動入力します。

  • Never: 1Password はこの Web サイトで資格情報を自動入力することはありません。

ワンタイムパスワードを取得する

1Password SDK を使うと、フィールドからワンタイム パスワードなどのフィールドにSaveされている値を取得できますtotp。

  • Go

前の手順でCreateしたアイテムからワンタイム パスワードを取得して印刷するには:

  • JavaScript

前の手順でCreateしたアイテムからワンタイム パスワードを取得して印刷するには:

  • Python

前の手順でCreateしたアイテムからワンタイム パスワードを取得して印刷するには:

アイテムを入手する

アイテムを取得するには、取得するアイテムのアイテム ID と保管庫 ID を client.Items.Get 関数に渡します。

  • Go

前の手順でCreateしたアイテムを取得するには:

// Retrieves the newly created item

login, err := client.Items.Get(context.Background(), createdItem.VaultID, createdItem.ID)

if err != nil {

panic(err)

}

  • JavaScript

let retrievedItem = await client.items.get(item.vaultId, item.id);

  • Python

前の手順でCreateしたアイテムを取得するには:

# Retrieve an item from your vault.

item = await client.items.get(created_item.vault_id, created_item.id)

アイテムを更新する

アイテムを更新するには、更新するアイテムを取得し、変更内容を指定して、更新したアイテムを関数に渡しますclient.Items.Put。

  • Go

  • JavaScript

  • Python

アイテムを削除する

アイテムを削除するには、削除するアイテムのアイテム ID と保管庫 ID を client.Items.Delete 関数に渡します。

  • Go

err := client.Items.Delete(context.Background(), vaultID, itemID)

if err != nil {

panic(err)

}

  • JavaScript

// Deletes an item

await client.items.delete(item.vaultId, item.id);

  • Python

# Delete a item from your vault.

await client.items.delete(created_item.vault_id, updated_item.id)

Troubleshooting

アイテムをCreate、編集、または削除できず、「この引数を実行するための適切な権限がありません」というエラーが表示される場合は、アイテムがSaveされている保管庫内のサービス アカウントの権限を確認してください。

  • ①1Password.com のアカウントにサインインします。

  • ②サイドバーで開発者ツールを選択します。

  • ③サービス アカウントを選択し、Vaults テーブルの Vault の横にRead & Write が表示されていることを確認します。

サービス アカウントに読み取りアクセス権のみがある場合は、読み取り権限と書き込み権限を持つ新しいサービス アカウントをCreateする必要があります。

詳しく