外部のHashiCorp Vaultを使用するようにデータブローカーグループを設定する
Amazon S3、Azure、またはGoogle Cloudのクレデンシャルを必要とする同期関係を作成する場合は、BlueXPのコピーと同期のユーザインターフェイスまたはAPIでクレデンシャルを指定する必要があります。別の方法として、外部の橋本社ボールトから直接クレデンシャル(または secrets) にアクセスするようにデータブローカーグループを設定する方法もあります。
この機能は、Amazon S3、Azure、Google Cloudのクレデンシャルを必要とする同期関係を備えたBlueXPのコピーおよび同期APIでサポートされます。
URL を設定して、データブローカーグループにクレデンシャルを提供するようにヴォールトを準備します。ボールトのシークレットの URL は、 creds_ で終わる必要があります。
グループ内の各データブローカーのローカル構成ファイルを変更して、外部ボルトからクレデンシャルを取得するようにデータブローカーグループを準備します。
すべての設定が完了したら、 API 呼び出しを送信して、ヴォールトを使用してシークレットを取得する同期関係を作成できます。
ボルトを準備します
BlueXPのコピーを提供し、ボルト内のシークレットのURLと同期する必要があります。URL を設定してボールトを準備します。作成する同期関係の各ソースとターゲットのクレデンシャルへの URL を設定する必要があります。
URL は次のように設定する必要があります。
「 /<path>/<RequestID>/<endpoint-protocol> creds 」を指定します
- パス
-
シークレットへのプレフィックスパス。この値は、お客様に固有の任意の値にすることができます。
- リクエスト ID
-
生成する必要があるリクエスト ID 。同期関係を作成するときは、 API POST 要求のいずれかのヘッダーに ID を指定する必要があります。
- エンドポイントプロトコル
-
定義されている次のいずれかのプロトコル "v2 以降の関係に関するドキュメント": S3 、 Azure 、 GCP (それぞれ大文字で入力する必要があります)。
- Creds (作成)
-
URL の末尾は creds. にする必要があります。
例
次の例は、シークレットへの URL を示しています。
- ソースクレデンシャルの完全な URL とパスの例
-
\ http://example.vault.com:8200/my-path/all-secrets/hb312vdasr2/S3Creds
この例のように、プレフィックスパスは /my-path/all-secrets/ で、要求 ID は _hb312vdasr2_で 、ソースエンドポイントは S3 です。
- ターゲットクレデンシャルの完全な URL とパスの例
-
\ http://example.vault.com:8200/my-path/all-secrets/n32hcbnejk2/AZURECreds
プレフィックスパスは /my-path/all-secrets/ 、要求 ID は n32hcbnejk2、 ターゲットエンドポイントは Azure です。
データブローカーグループを準備
グループ内の各データブローカーのローカル構成ファイルを変更して、外部ボルトからクレデンシャルを取得するようにデータブローカーグループを準備します。
-
グループ内のデータブローカーへの SSH 接続
-
/opt/netapp/databroker/config にある local.json ファイルを編集します。
-
enable を * true * に設定し、 _external-m積分 .hashicorp_as の下に config パラメータフィールドを設定します。
- 有効
-
-
有効な値は、 true または false です
-
type :ブール値
-
デフォルト値: false
-
true :データブローカーは、社内の外部の橋本社から機密情報を入手します
-
false :データブローカーのクレデンシャルがローカルボールトに格納されます
-
- URL
-
-
文字列を入力します
-
値:外部ボルトの URL
-
- パス
-
-
文字列を入力します
-
値:クレデンシャルを使用してシークレットへのプレフィックスパスを指定します
-
- 拒否 - 承認されていません
-
-
データブローカーで権限のないことを拒否するかどうかを指定します 外部ボールト
-
type :ブール値
-
デフォルト: false
-
- auth-method を指定します
-
-
データブローカーが外部ボルトのクレデンシャルにアクセスする際に使用する認証方式
-
文字列を入力します
-
有効な値は「 AWS- IAM 」 / 「 role-app 」 / 「 GCP-IAM 」です。
-
- ロール名
-
-
文字列を入力します
-
ロール名( AWS- IAM または GCP-IAM を使用している場合)
-
- Secretd&rootid
-
-
タイプ: string ( app-role を使用する場合)
-
- ネームスペース
-
-
文字列を入力します
-
ネームスペース(必要に応じて X-Vault - 名前空間ヘッダー)
-
-
グループ内の他のすべてのデータブローカーについて、上記の手順を繰り返します。
AWS ロール認証の例
{
“external-integrations”: {
“hashicorp”: {
“enabled”: true,
“url”: “https://example.vault.com:8200”,
“path”: ““my-path/all-secrets”,
“reject-unauthorized”: false,
“auth-method”: “aws-role”,
“aws-role”: {
“role-name”: “my-role”
}
}
}
}
GCP - IAM 認証の例
{
"external-integrations": {
"hashicorp": {
"enabled": true,
"url": http://ip-10-20-30-55.ec2.internal:8200,
"path": "v1/secret",
"namespace": "",
"reject-unauthorized": true,
"auth-method": "gcp-iam",
"aws-iam": {
"role-name": ""
},
"app-role": {
"root_id": "",
"secret_id": ""
},
"gcp-iam": {
"role-name": "my-iam-role"
}
}
}
}
GCP-IAM認証を使用する場合の権限の設定
_GCP-AM_authentication メソッドを使用している場合、データブローカーには次の GCP 権限が必要です。
- iam.serviceAccounts.signJwt
ヴォールトのシークレットを使用して、新しい同期関係を作成します
すべての設定が完了したら、 API 呼び出しを送信して、ヴォールトを使用してシークレットを取得する同期関係を作成できます。
BlueXPのコピーを使用して関係をPOSTし、REST APIを同期
Headers: Authorization: Bearer <user-token> Content-Type: application/json x-account-id: <accountid> x-netapp-external-request-id-src: request ID as part of path for source credentials x-netapp-external-request-id-trg: request ID as part of path for target credentials Body: post relationship v2 body
-
ユーザートークンとBlueXPアカウントIDを取得するには "のドキュメントのこのページを参照してください"。
-
投稿関係の本文を作成するには、 "relationships-v2 API 呼び出しを参照してください"。
例
POST 要求の例:
url: https://api.cloudsync.netapp.com/api/relationships-v2
headers:
"x-account-id": "CS-SasdW"
"x-netapp-external-request-id-src": "hb312vdasr2"
"Content-Type": "application/json"
"Authorization": "Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6Ik…"
Body:
{
"dataBrokerId": "5e6e111d578dtyuu1555sa60",
"source": {
"protocol": "s3",
"s3": {
"provider": "sgws",
"host": "1.1.1.1",
"port": "443",
"bucket": "my-source"
},
"target": {
"protocol": "s3",
"s3": {
"bucket": "my-target-bucket"
}
}
}