# 1Passwordを使用してAWS CLIを安全に認証する

### **1Passwordを使用してAWS CLIを安全に認証する** <a href="#tuo3dp5hitma" id="tuo3dp5hitma"></a>

AWS シェルプラグインを使うと、認証情報をプレーンテキストでSaveするのではなく、1Password を使用して、指紋、 Apple Watch、またはシステム認証で[AWS CLI](https://aws.amazon.com/cli/) を安全に認証できます。

指示に従ってデフォルトの認証情報を設定し、plugins.sh ファイルを取得すると、生体認証を使用して AWS CLI を認証するように求められます。

cdk を使う場合は、[AWS CDK Toolkit シェルプラグイン](https://developer.1password.com/docs/cli/shell-plugins/aws-cdk-toolkit/)を設定することもできます。

[![](https://4200399111-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8GVOyHz3wUSpdV3qlPwR%2Fuploads%2F7W3z3ZOPKv8D6NEq3742%2F0.png?alt=media)](https://developer.1password.com/videos/aws.mp4)

### 必要条件**​** <a href="#iq9okdu0t4n4" id="iq9okdu0t4n4"></a>

* ①1Passwordに[サインアップしてください。](https://1password.com/pricing)
* ②[Mac](https://support.1password.com/get-the-apps/?mac)または [Linux](https://support.1password.com/get-the-apps/?linux)用の 1Password をインストールしてサインインします。
* ③[1Password CLI](https://app-updates.agilebits.com/product_history/CLI2) 2.9.0 以降をインストールします。 1Password CLI を既にインストールしている場合は、[インストールを更新](https://developer.1password.com/docs/cli/reference/update/)する方法を確認してください。
* ④[1Password CLI を 1Password アプリと統合します。](https://developer.1password.com/docs/cli/get-started/#step-2-turn-on-the-1password-desktop-app-integration)
* ⑤[AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)をインストールします。

次のシェルがサポートされています:

* Bash
* Zsh
* fish

### **ステップ 1: AWS アクセスキーをCreateしてSaveする** <a href="#ripw1egqns17" id="ripw1egqns17"></a>

AWS アクセスキーを既にCreateしている場合は、手順 2 に進みます。

アクセス キーをまだCreateしていない場合は、Createして [1Password browser extension](https://support.1password.com/getting-started-browser/) を使用して 1PasswordにすばやくSaveできます。

* ①[ブラウザで 1Password](https://support.1password.com/getting-started-browser/) を開いてロックを解除します。
* ②[手順に従って](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html?icmpid=docs_iam_console#Using_CreateAccessKey)、AWS CLI のアクセスキーをCreateします。
* ③「アクセス キーの取得」ページで、**Show**をクリックしてシークレット アクセス キーを表示します。
* ④1Password が AWS アクセスキーのアイテムをSaveするかどうかを尋ねたら、**Save item**をクリックします。
* ⑤アイテムをSaveする保管庫を選択し、アイテムの名前と詳細を編集して、**Save item**をクリックします。

![The pop-up screen to save your AWS access key in 1Password.](https://4200399111-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8GVOyHz3wUSpdV3qlPwR%2Fuploads%2FQrKejGeIH3mXwhHf6AAN%2F1.png?alt=media)

### **ステップ2: デフォルトの資格情報を構成する** <a href="#vowozw1babhk" id="vowozw1babhk"></a>

AWSを複数の環境で使用している場合

AWS シェルプラグインを本番環境や開発環境などの複数の環境で使う場合は、シームレスなコンテキスト切り替えのためにプラグインを設定する方法を学習します。

AWS シェルプラグインの使用を開始するには:

* ①AWS プラグインで使う 1Password アカウントにサインインします。
* $ op signin
* ②特定のディレクトリでのみプラグインを設定したい場合は、そのディレクトリに変更します
* ③プラグインを設定するには、次のコマンドを実行します。
* $ op plugin init aws

AWS 認証情報を 1Passwordにインポートするか、認証情報がSaveされている保存済みの 1Password 項目を選択して、認証情報をいつ使うかを設定するように求められます。

![A terminal window displaying the op plugin init command and options to import or select an item.](https://4200399111-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8GVOyHz3wUSpdV3qlPwR%2Fuploads%2Fx0UI4VEfbT4bBvoVyrLS%2F2.png?alt=media)

#### **ステップ 1.1: アイテムをインポートまたは選択する** <a href="#hq2pms7az0ak" id="hq2pms7az0ak"></a>

**新しいアイテムをインポートする**

AWS 認証情報を 1PasswordにまだSaveしていない場合は、**Import into 1Password**を選択します。認証情報を入力し、新しい 1Password アイテムの名前を選択して、Save先の保管庫を選択します。

1Password がローカル開発環境で資格情報を検出すると、自動的にインポートするように求められます。

![A terminal window showing the fields available to import an item, including the token, item name, and vault.](https://4200399111-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8GVOyHz3wUSpdV3qlPwR%2Fuploads%2FNU9JiHKIAjOQth0TbcnR%2F3.png?alt=media)

**保存済みのアイテムを選択**

**既に** 1Passwordに AWS 認証情報をSaveしている場合は、**Search in 1Password**を選択します。

関連するアイテムとそれらがSaveされている保管庫のリストが表示されます。資格情報が表示されない場合は、**Expand search** を選択して、アカウント内の全てのアイテムを参照します。

![A terminal window showing the option to search for an existing item in your 1Password account.](https://4200399111-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8GVOyHz3wUSpdV3qlPwR%2Fuploads%2FYaTfQb7ueYzDI1Ufi3cP%2F4.png?alt=media)

#### **ステップ 1.2: デフォルトの資格情報スコープを設定する** <a href="#z0njlst8p2vo" id="z0njlst8p2vo"></a>

認証情報を選択またはインポートすると、その項目を AWS の認証に使うタイミングを設定するように求められます。

![A terminal window showing the options for configuring when the credentials should be used.](https://4200399111-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8GVOyHz3wUSpdV3qlPwR%2Fuploads%2FWwy63vHuF9u370UpWHSI%2F5.png?alt=media)

* **"Prompt me for each new terminal session"**&#x3092;選択すると、現在のターミナル セッションの期間中のみ資格情報が設定されます。ターミナルを終了すると、デフォルトは削除されます。
* **"Use automatically when in this directory or subdirectories"** を選択すると、他のディレクトリ固有のデフォルトが設定されていない限り、現在のディレクトリとその全てのサブディレクトリで資格情報がデフォルトになります。ターミナル セッションのデフォルトは、ディレクトリ固有のデフォルトよりも優先されます。
* **"Use as global default on my system"** を選択すると、資格情報が全てのターミナル セッションとディレクトリのデフォルトとして設定されます。ディレクトリ固有のデフォルトは、グローバル デフォルトよりも優先されます。

### **ステップ3: plugins.shファイルをソースする** <a href="#s1ygaez3wmlv" id="s1ygaez3wmlv"></a>

プラグインを使用できるようにするには、plugins.sh ファイルをソース化します。例:

$ source \~/.config/op/plugins.sh

op フォルダーのファイル パスは、構成ディレクトリによって異なる場合があります。op plugin init は、正しいファイル パスを含むソース コマンドを出力します。

シェル プラグインを初めてインストールする場合は、現在のターミナル セッションを超えてプラグインを永続化するために、RC ファイルまたはシェル プロファイルに source コマンドを追加する必要があります。例:

* Bash

$ echo "source \~/.config/op/plugins.sh" >> \~/.bashrc && source \~/.bashrc

* Zsh

$ echo "source \~/.config/op/plugins.sh" >> \~/.zshrc && source \~/.zshrc

* fish

$ echo "source \~/.config/op/plugins.sh" >> \~/.config/fish/config.fish && source \~/.config/fish/config.fish

### **ステップ4: CLIを使う** <a href="#h6dqfqwye6y5" id="h6dqfqwye6y5"></a>

次回 AWS でコマンドを入力するときに、生体認証またはシステム認証による認証を求めるメッセージが表示されます。

![A CLI being authenticated using 1Password CLI biometric unlock.](https://4200399111-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8GVOyHz3wUSpdV3qlPwR%2Fuploads%2F6QYVaGXa8kSFJzdOtn0f%2F6.png?alt=media)

### **ステップ5: インポートした資格情報をディスクから削除する** <a href="#tca6iccp2hg5" id="tca6iccp2hg5"></a>

**1Passwordに** AWS 認証情報をSaveしたら、現在ディスクにSaveされている全てのローカルコピーを削除できます。

プレーンテキストのアクセスキーは、通常、AWS 共有認証情報ファイル (デフォルトの場所: \~/.aws/credentials) にSaveされます。このファイルから認証情報を削除する場合は、Terraform など、AWS への認証にファイルを使う他のツールのシェルプラグインを必ず構成してください。

### **オプション: 複数の役割を担う​** <a href="#id-4ycuo1wjdrh8" id="id-4ycuo1wjdrh8"></a>

AWS シェルプラグインを使うと、AWS 構成ファイルでロールプロファイルを定義することで、AWS CLI でロールを引き受けるのと同じ方法で複数のロールを引き受けることができます。

例:

\~/.aws/config

\[profile prod]

role\_arn = arn:aws:iam::123456789012:role/prod

source\_profile = wendyappleseed

次に、ロールを使用して AWS コマンドを呼び出すために --profile フラグを含めます。例:

$ aws sts get-caller-identity --profile prod

常に同じプロファイルを使う場合は、AWS\_PROFILE 環境変数を設定できます。その場合、--profile フラグは、環境に設定されているデフォルトを上書きするためにのみ必要になります。例:

$ export AWS\_PROFILE=prod

### **オプション: 多要素認証を設定する** <a href="#id-4plkhu5qy628" id="id-4plkhu5qy628"></a>

AWS で[多要素認証](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa.html)を使う場合は、AWS シェルプラグインを設定してワンタイムパスワードを提供できます。

これを行うには、次の 2 つの方法があります。

* [多要素認証デバイスの ARN を AWS 設定ファイルのプロファイルに追加します。](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-role.html#cli-configure-role-mfa)
* ワンタイムパスワードコードと ARN を、AWS 認証情報がSaveされている 1Password の項目に追加します。このオプションを選択すると、多要素認証情報はデフォルトのプロファイルとして扱われ、他の全てのプロファイルと共にグローバルに使用されます。

#### **ワンタイムパスワードとARNを1PasswordにSaveする** <a href="#wl93e18ixxla" id="wl93e18ixxla"></a>

**ステップ1: QRコードをSaveする**

* ①1Password アプリを開いてロックを解除します。
* ②AWS 認証情報がSaveされている項目を選択し、**Edit**をクリックします。
* ③**Add More**をクリックし、**One-Time Password**を選択します。
* ④[手順に従って、AWS アカウントの仮想多要素認証デバイスを有効にします。](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa_enable_virtual.html)
* ⑤AWS ウィザードで**Show secret key**をクリックし、文字列をアイテムのOne-Time Passwordフィールドにコピーします。
* ⑥**Save**をクリックします。

アイテムには、AWS 多要素認証デバイスのセットアップフローを完了するために使用できるワンタイムパスワードが表示されます。

編集したアイテムには、one-time passwordと mfa serial fieldsが含まれている必要があります。

![The AWS item in 1Password with MFA credentials added.](https://4200399111-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8GVOyHz3wUSpdV3qlPwR%2Fuploads%2FBFHjdsIk97rrF6nEUw8x%2F7.png?alt=media)

**ステップ2: 多要素認証デバイスのARNをSaveする**

* ①[多要素認証デバイスの ARN ](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa_checking-status.html)を見つけてコピーします。
* ②1Password アプリを開いてロックを解除します。
* ③AWS 認証情報をSaveした項目を選択し、**Edit**をクリックします。
* ④**Add More**をクリックし、**Text**を選択します。
* ⑤ARN をフィールドの値として貼り付けます。
* ⑥フィールドにmfa serialというタイトルを付けます。
* ⑦**Save**をクリックします。

1Password CLI は、ワンタイム パスワードと MFA シリアルというタイトルのフィールドにSaveされている多要素認証資格情報を検出します。ワンタイム パスワードが検出されない場合は、フィールドのタイトルが正しいことを確認してください。

1Password CLI は、一時的な多要素認証セッション値を指定するために、AWS\_SECRET\_ACCESS\_KEY、AWS\_ACCESS\_KEY\_ID、および AWS\_SESSION\_TOKEN 暫定環境変数を設定します。

### **次のステップ​** <a href="#dk5gwnlp4w2m" id="dk5gwnlp4w2m"></a>

1Password Shell プラグインは 60 を超えるサードパーティの CLI をサポートしています。サポートされている CLI のリストを表示するには:

$ op plugin list

別のプラグインを選択して開始するには:

$ op plugin init

シームレスなコンテキスト切り替えのためにシェル プラグインを使うには、 [multiple environments](https://developer.1password.com/docs/cli/shell-plugins/environments/)または [multiple accounts](https://developer.1password.com/docs/cli/shell-plugins/multiple-accounts/)でプラグインを構成する方法を学習します。

### **ヘルプを受ける** <a href="#id-4mj586rn976p" id="id-4mj586rn976p"></a>

#### **設定を検査する** <a href="#l6eq38s9n0b3" id="l6eq38s9n0b3"></a>

現在の AWS 設定を検査するには:

$ op plugin inspect aws

1Password CLI は、AWS で使うために設定した認証情報とそのデフォルトのスコープのリスト、および AWS 用に設定されたエイリアスのリストを返します。

![A terminal window showing the results of the command op plugin inspect.](https://4200399111-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8GVOyHz3wUSpdV3qlPwR%2Fuploads%2FoKqs7vGLvbTrxOBMqLvk%2F8.png?alt=media)

#### **資格情報を消去する** <a href="#luacatwj262e" id="luacatwj262e"></a>

AWS で使用される認証情報をリセットするには:

$ op plugin clear aws

次の優先順位に従って、一度に 1 つの構成をクリアできます。

* ①ターミナルセッションのデフォルト
* ②ディレクトリのデフォルト、現在のディレクトリから $HOME まで
* ③グローバルデフォルト

例えば、ディレクトリ $HOME/projects/awesomeProject にいて、ターミナル セッションのデフォルト、$HOME および $HOME/projects/awesomeProject のディレクトリのデフォルト、およびグローバル デフォルト認証情報が構成されている場合、全てのデフォルトをクリアするには、op plugin clear aws を 4 回実行する必要があります。

グローバルのデフォルト認証情報、ターミナル セッションのデフォルト、および現在のディレクトリのデフォルトを同時にクリアするには、op plugin clear aws --all を実行します。

### **参照​** <a href="#x4n997z338rr" id="x4n997z338rr"></a>

1Password は、プラグイン コマンドに必要な認証情報を 1Password アカウントから直接環境変数に挿入することで、AWS で認証します。

op プラグインを使用して新しい項目をインポートするのではなく、AWS 認証情報を 1Passwordに手動でSaveした場合は、フィールド名が以下の表と一致していることを確認してください。

アイテムに必要な名前のフィールドが含まれていない場合は、保存済みのフィールドのいずれかの名前を変更するように求められます。

| 1Password**フィールド名**       | **環境変数**                 |
| ------------------------- | ------------------------ |
| Access Key ID             | AWS\_ACCESS\_KEY\_ID     |
| Secret Access Key         | AWS\_SECRET\_ACCESS\_KEY |
| Default region (optional) | AWS\_DEFAULT\_REGION     |

### **もっと詳しく知る** <a href="#c92qaoredjlw" id="c92qaoredjlw"></a>

* [シェルプラグインを使用して複数の環境を切り替える](https://developer.1password.com/docs/cli/shell-plugins/environments/)
* [複数のアカウントでシェルプラグインを使う](https://developer.1password.com/docs/cli/shell-plugins/multiple-accounts/)
* [独自のシェルプラグインを構築する](https://developer.1password.com/docs/cli/shell-plugins/contribute/)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://manual.dxable.com/1password/aws.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
