1Password Connectサーバーを使い始める
1Passwordマニュアル|1Password Connectサーバーの設定と使用方法を詳しく解説し、Secrets Automationワークフローを効率化する手順をご紹介します。
Table of Contents
1Password Connect サーバーは、会社のアプリやクラウド インフラストラクチャ内の 1Password アイテムや保管庫に安全にアクセスできるようにするSecrets Automation ワークフローの一種です。
必要条件
1Password Secrets Automation ワークフローを Connect サーバーとしてCreateする前に、前提条件となるタスクを完了していることを確認してください。タスクは、展開方法によって異なります。
- Docker
- 1Password ファミリー、チーム、またはビジネス アカウントにサインアップします。
- Connect サーバーがアクセスするためのVault をCreateします。Connect サーバーは、組み込みのPersonal Vault 、Private Vault 、Employee Vault、またはデフォルトのShared Vault にアクセスできません。
- Secrets Automation を管理する権限を持つグループに属していることを確認してください。
- Docker のデプロイメント環境があることを確認してください。クラウド サービス プロバイダーまたはローカル マシンを使用できます。
- Kubernetes
- 1Password の家族、チーム、またはビジネス アカウントにサインアップします。
- Connect サーバーがアクセスするためのVault をCreateします。 Connect サーバーは、組み込みのPersonal Vault 、Private Vault 、Employee Vault、またはデフォルトのShared Vault にアクセスできません。
- Secrets Automation を管理する権限を持つグループに属していることを確認してください。
- kubectlと Helm がインストールされた Kubernetes のデプロイ環境があることを確認してください。クラウド サービス プロバイダーまたはローカル マシンを使用できます。
Deployment
1Password Connect サーバーを展開するには、次の手順に従います。
ステップ 1: Secrets AutomationワークフローCreate
1Password.com ダッシュボードまたは 1Password CLI からConnect Server Secrets Automation ワークフローをCreateできます。次の手順に従うと、以下がCreateされます。
- ファイル1password-credentials.json。1Password Connect Server を展開するために必要な資格情報が含まれています。
- アクセス トークン。アプリケーションまたはサービスでこれを使用して、Connect REST APIで認証します。後で追加のトークンを発行できます。
- 1Password.com
①1Password.com のアカウントにサインインします。
②サイドバーからDeveloper Toolsを選択します。
③「インフラストラクチャ シークレット管理」で、「その他」を選択します。
④Create a Connect serverを選択します。
⑤画面の指示に従って1password-credentials.jsonファイルと接続トークンをCreateします。
- 1Password CLI
- 1Password CLIop connect commandを使用して、Connect サーバーで Secrets Automation ワークフローを設定できます。
- ①マシンに 1Password CLI の最新バージョンがインストールされていることを確認してください。
- ②1password-credentials.json をCreateするディレクトリに切り替えます。
- Connect サーバーをCreateすると、現在のディレクトリに 1password-credentials.json ファイルが自動的に生Createされます。このファイルには、Connect サーバーを展開するために必要な認証情報が含まれています。 1password-credentials.json ファイルが現在のディレクトリに既に存在する場合、1Password CLI はそれを上書きするかどうかを尋ねます。
- ③Connect サーバーをCreateし、op connect server create commandを使用して共有コンテナーへのアクセスを許可します。
- $ op connect server create <serverName> --vaults <vaultName>
ヒント
コンテナーへのアクセスを許可せずに Connect サーバーをCreateするには、--vaults フラグを省略します。後で op connect vault Grant コマンドを使用して、Connect サーバーに共有コンテナーへのアクセスを許可できます。
Connect サーバーまたはボルトの名前に 1 つ以上のスペースが含まれている場合は、名前を引用符で囲みます (例: 「My Server Name」)。文字列にスペースが含まれていない場合 (例: myServerName)、文字列を引用符で囲む必要はありません。
op connect server create "My Server Name" --vault "My Vault Name"
④ op connect token create commandを使用して、Connect サーバーのトークンをCreateします。
$ op connect token create <tokenName> --server <serverName|serverID> --vault <vaultName|vaultID>
ヒント
Connect サーバーをその ID で検索する方が、Connect サーバーの名前を使うより効率的です。 「固有の識別子 (ID)」を参照してください。
op connect server list を実行すると、Connect サーバーの ID を見つけることができます。
Create功すると、1Password CLI は、Connect サーバー REST API での認証にアプリケーションまたはサービスで使用できるトークン文字列を返します。後で追加のトークンを発行できます。
⑤トークンを紛失しないように 1PasswordにSaveしてください。
同じ Connect サーバーに対して複数のトークンを持つことができますが、各 Connect サーバーは独自の異なるトークンのセットを持ちます。 op connect token command referenceを参照してください。
ヒント
Connect サーバー トークンを環境変数としてエクスポートします。Kubernetes Injector、Kubernetes Operator、その他の統合などの別のツールを構成する場合、これを行うと便利です。ただし、Kubernetes で Connect サーバー トークンを使うには、Kubernetes Secret として使うことが推奨されることに注意してください。
$ export OP_CONNECT_TOKEN=<token>
ステップ2: Deploy 1Password Connect Server
- Docker
Docker Composeファイルを使用して Connect サーバーをデプロイするには、次の 2 つの Docker イメージを起動する必要があります。
- 1password/connect-apiはConnectサーバーのREST APIを提供します。
- 1password/connect-syncは、Connectサーバーで利用可能な情報を1Password.comと同期させます。
情報 DockerやDocker Composeに詳しくない場合は、Docker Composeのドキュメントを参照してください。詳細についてはこちらをご覧ください。
- ①DockerおよびDocker Composeがあなたのマシン上であることを確認してください。
- ②Docker Compose ファイルをCreateして、1password-credentials.json ファイルをSaveしたディレクトリに 1Password Connect Server コンテナをデプロイします。サンプルdocker-compose.yamlファイルを使うこともできます。
- 資格情報ファイルが他のディレクトリにある場合は、正しい資格情報ファイルの場所を指すようにvolumesセクションを更新します。
- ヒント 各コンテナに環境属性を追加することで、docker-compose.yamlファイル内のConnectサーバーの環境変数を設定できます。これにより、1password-credentials.jsonファイルの場所、ログレベル、HTTPポートなどを指定できます。Docker環境属性のドキュメントを参照してください。詳細についてはこちらをご覧ください。
- ③Dockerが実行中であることを確認してください。Dockerデーモンが実行中かどうか確認できます。ターミナル アプリケーションでdocker infoコマンドを実行します。
- ④Docker Compose を使用して Docker コンテナを起動します。docker-compose.yamlファイルのあるディレクトリで次のコマンドを実行します。
- $ docker compose up
- ヒント -detachフラグまたは-dフラグを使用してコンテナをバックグラウンドで実行できます。詳細についてはdocker compose up参照を参照してください。
- デフォルトでは、ローカル ホストの8080ポートを介して Connect REST API にアクセスできます。詳細については、1Password Connect サーバー API リファレンスを参照してください。
Test the Connect Server REST API
curl コマンド、1Password Connect サーバー API エンドポイントの 1 つ、およびCreateしたトークンを使用して、ConnectサーバーのREST API にアクセスできることを確認できます。
- ①Connect サーバー トークンを環境変数としてエクスポートします。これは、手順 1でCreateしたトークンと同じです。または、curlリクエスト内のトークン文字列を$OP_API_TOKENに置き換えることもできます。
- ヒント トークンを忘れた場合は、op connect token createコマンドを使用して別のトークンをCreateできます。
- $ export OP_API_TOKEN="<token>"
- ②Connectサーバーに接続されているデータ保管庫を一覧表示するには、次の例のcurlコマンドを使用します。
- $ curl \
- -H "Accept: application/json" \
- -H "Authorization: Bearer $OP_API_TOKEN" \
- http://localhost:8080/v1/vaults
Docker コンテナを停止するには、 docker compose downを実行します。
- Kubernetes
Kubernetes を使用して Connect サーバーをデプロイできます。これを行う最も簡単な方法は、1Password Connect and Operator Helm chartを使うことです。
注意
開始する前に、Kubernetes クラスターをデプロイしておく必要があります。クラスターをまだ持っていない場合は、 minikube を使用してローカルにクラスターをCreateするか、Play with Kubernetes プレイグラウンドを使用できます。
①マシンに Docker がインストールされ、実行されていることを確認してください。
②最新のHelmリリースをインストールします。
③1Password Helm チャート リポジトリを追加します。
次のコマンドは、1Password Helm chart repositoryを Helm のローカル インスタンスに追加します。これにより、1Password の GitHub リポジトリから全てのチャートをダウンロードしてインストールできるようになります。
$ helm repo add 1password https://1password.github.io/connect-helm-charts/
④Helm を使用して 1Password Connect サーバーをインストールします。
次のコマンドは、1password-credentials.json ファイルを使用して 1Password Connect サーバーをデプロイします。
ヒント
1password-credentials.json ファイルは、Connect サーバーをCreateしたディレクトリにあります。
$ helm install connect 1password/connect --set-file connect.credentials=1password-credentials.json
他のデプロイ方法
Connect サーバーを Kubernetes クラスターにデプロイする方法をいくつか紹介します。
Helm なしでデプロイする
Helm チャートを使用せずに Connect サーバーを Kubernetes クラスターにデプロイできます。 cert-managerを使用して外部ドメインの TLS (トランスポート層セキュリティ) 証明書をプロビジョニングする、1Password の GitHub 上の sample Kubernetes deploymentを参照してください。
Kubernetes Operator と一緒にデプロイする
1Password Connect Kubernetes Operator は、 Kubernetes Secrets を 1Password と統合します。また、1Password アイテムが更新されると、展開が自動的に再起動されます。 Learn more about the Kubernetes Operator。
ステップ3: 1Password から情報を取得するためのアプリケーションとサービスをセットアップする
アプリケーションとサービスは、Connect サーバーへの REST API リクエストを通じて 1Password から情報を取得します。リクエストはアクセス トークンで認証されます。使うアプリケーションまたはサービスごとに新しいトークンをCreateします。
言語
プラグイン
言語またはプラットフォームがリストされていない場合は、1Password Connect Server REST API を使用して独自のクライアントを構築できます。
また、 Connect サーバーで1Password CLI を使用して、コマンド ラインでシークレットをプロビジョニングし、アイテム情報を取得することもできます。
ヘルプを受ける
トークンがアクセスできる保管庫を変更するには、新しいトークンを発行します。
ヘルプを受けたりフィードバックを共有したりするには、 1Password サポート コミュニティでのディスカッションに参加してください。