Skip to main content
日本語は機械翻訳による参考訳です。内容に矛盾や不一致があった場合には、英語の内容が優先されます。

NetApp Copy and Sync で外部 HashiCorp Vault を使用するためのデータ ブローカー グループを設定する

共同作成者 amgrissino

Amazon S3、Azure、または Google Cloud の認証情報を必要とする同期関係を作成する場合は、 NetApp Copy and Sync ユーザー インターフェイスまたは API を通じてそれらの認証情報を指定する必要があります。別の方法としては、データ ブローカー グループを設定して、外部の HashiCorp Vault から資格情報 (または シークレット) に直接アクセスすることもできます。

この機能は、Amazon S3、Azure、または Google Cloud の資格情報を必要とする同期関係を持つコピーおよび同期 API を通じてサポートされます。

1金庫の準備

URL を設定して、データ ブローカー グループに資格情報を提供するためのボールトを準備します。ボールト内のシークレットの URL は Creds で終わる必要があります。

2データブローカーグループの準備

グループ内の各データ ブローカーのローカル構成ファイルを変更して、データ ブローカー グループが外部ボールトから資格情報を取得できるように準備します。

三つAPIを使用して同期関係を作成する

すべての設定が完了したら、API 呼び出しを送信して、ボールトを使用してシークレットを取得する同期関係を作成できます。

金庫の準備

コピーと同期に、ボールト内のシークレットの URL を提供する必要があります。これらの URL を設定して、Vault を準備します。作成する予定の同期関係の各ソースとターゲットの資格情報への URL を設定する必要があります。

URL は次のように設定する必要があります。

/<path>/<requestid>/<endpoint-protocol>Creds

パス

シークレットへのプレフィックス パス。これは、あなたに固有の任意の値にすることができます。

Request ID

生成する必要があるリクエスト ID。同期関係を作成するときに、API POST リクエストのヘッダーの 1 つに ID を指定する必要があります。

エンドポイントプロトコル

定義される以下のプロトコルのいずれか "ポストリレーションシップv2ドキュメント": S3、AZURE、または GCP (それぞれ大文字にする必要があります)。

資格情報

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 です。

データブローカーグループの準備

グループ内の各データ ブローカーのローカル構成ファイルを変更して、データ ブローカー グループが外部ボールトから資格情報を取得できるように準備します。

手順
  1. グループ内のデータ ブローカーに SSH で接続します。

  2. /opt/netapp/databroker/config にある local.json ファイルを編集します。

  3. enable を true に設定し、external-integrations.hashicorp の下の構成パラメータ フィールドを次のように設定します。

    有効
    • 有効な値: true/false

    • タイプ: ブール値

    • デフォルト値: false

    • 真実: データブローカーは独自の外部HashiCorp Vaultから秘密情報を取得します

    • False: データブローカーは資格情報をローカルの保管庫に保存します

    URL
    • タイプ: 文字列

    • 値: 外部の金庫へのURL

    path(パス)
    • タイプ: 文字列

    • 値: シークレットへのパスの先頭に資格情報を入力します

    拒否-不正
    • データブローカーが不正な外部ボールトを拒否するかどうかを決定します

    • タイプ: ブール値

    • デフォルト: false

    認証方法
    • データブローカーが外部のボールトから資格情報にアクセスするために使用する認証方法

    • タイプ: 文字列

    • 有効な値: "aws-iam" / "role-app" / "gcp-iam"

    ロール名
    • タイプ: 文字列

    • ロール名(aws-iam または gcp-iam を使用する場合)

    シークレットイドとルートイド
    • タイプ: 文字列 (app-role を使用する場合)

    ネームスペース
    • タイプ: 文字列

    • 名前空間(必要な場合は X-Vault-Namespace ヘッダー)

  4. グループ内の他のデータ ブローカーに対しても、これらの手順を繰り返します。

aws-role認証の例

{
          “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-iam 認証方法を使用している場合、データ ブローカーには次の GCP 権限が必要です。

- iam.serviceAccounts.signJwt

ボールトからのシークレットを使用して新しい同期関係を作成する

すべての設定が完了したら、API 呼び出しを送信して、ボールトを使用してシークレットを取得する同期関係を作成できます。

コピーおよび同期 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

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"
        }
    }
}