Skip to content

Commit c4a01eb

Browse files
Dan-Heathelimtstellarsquallhugoghx
authored
docs: Add S3 compliant storage (#4954)
* docs: Add S3 compliant storage * docs: remote storage state (#4949) * docs: remote storage state document new remote storage state on the worker * docs: Add link on worker storage page * docs: Address feedback * docs: Call out example * docs: Fix a typo * Update website/content/docs/configuration/session-recording/create-storage-bucket.mdx Co-authored-by: Robin Beck <[email protected]> * Apply batch of suggestions from code review Co-authored-by: Hugo <[email protected]> * docs: Clarify support statement * docs: Revise support statement --------- Co-authored-by: Elim Tsiagbey <[email protected]> Co-authored-by: Robin Beck <[email protected]> Co-authored-by: Hugo <[email protected]>
1 parent 85b9ade commit c4a01eb

File tree

6 files changed

+192
-3
lines changed

6 files changed

+192
-3
lines changed

website/content/docs/configuration/session-recording/configure-worker-storage.mdx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ Workers can have the following permission states:
6464

6565
Boundary uses the permission states to determine the remote storage state of a worker. The worker can have the following remote storage states:
6666
- `available`: All permission states are healthy. The worker has the required access to the external storage.
67-
- `error`: One or more of the permission sates are not healthy. Workers may not be able to perform certain actions on the external storage.
67+
- `error`: One or more of the permission states are not healthy. Workers may not be able to perform certain actions on the external storage.
6868

6969
Boundary periodically checks the states of any workers that use the external storage, and then reports them back to the controller.
7070

@@ -112,4 +112,4 @@ worker {
112112

113113
## Next steps
114114

115-
After you configure worker storage, you can configure the external storage provider for [Amazon S3](/boundary/docs/configuration/session-recording/storage-providers/configure-s3) or [MinIO](/boundary/docs/configuration/session-recording/storage-providers/configure-minio).
115+
After you configure worker storage, you can configure the external storage for [Amazon S3](/boundary/docs/configuration/session-recording/storage-providers/configure-s3), [MinIO](/boundary/docs/configuration/session-recording/storage-providers/configure-minio), or an [S3-compliant provider](/boundary/docs/configuration/session-recording/storage-providers/configure-s3-compliant).

website/content/docs/configuration/session-recording/create-storage-bucket.mdx

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ Before you create a storage bucket in Boundary, you must:
2525
- Configure one of the following storage providers:
2626
- [Amazon S3](/boundary/docs/configuration/session-recording/storage-providers/configure-s3)
2727
- [MinIO](/boundary/docs/configuration/session-recording/storage-providers/configure-minio)
28+
- [S3-compliant](/boundary/docs/configuration/session-recording/storage-providers/configure-s3-compliant)
2829

2930
## Create a storage bucket
3031

@@ -314,6 +315,83 @@ Complete the following steps to create a storage bucket in Boundary.
314315
</Tab>
315316
</Tabs>
316317

318+
</Tab>
319+
320+
<Tab heading="S3-compliant">
321+
322+
Complete the following steps to create a storage bucket in Boundary using an S3-compliant storage provider. Hitachi Content Platform is used as an example below.
323+
324+
<Note>
325+
326+
S3-compliant storage requires a service account and its associated access keys to set up a Boundary storage bucket. Refer to the [Configure S3-compliant storage](/boundary/docs/configuration/session-recording/storage-providers/configure-s3-compliant#s3-compliant-storage-provider-requirements) page to learn more.
327+
328+
</Note>
329+
330+
<Tabs>
331+
<Tab heading="UI">
332+
333+
1. Log in to Boundary.
334+
1. Click **Storage Buckets** in the navigation bar.
335+
1. Click **New Storage Bucket**.
336+
1. Complete the following fields to create the Boundary storage bucket:
337+
- **Name**: (Optional) The name field is optional, but if you enter a name it must be unique.
338+
- **Description**: (Optional) An optional description of the Boundary storage bucket for identification purposes.
339+
- **Scope**: (Required) A storage bucket can belong to the Global scope or an Org scope.
340+
It can only be associated with targets from the scope it belongs to.
341+
- **Provider**: (Required) The external storage bucket provider.
342+
For S3-compliant storage, select **MinIO**.
343+
- **Endpoint URL**: (Required) The fully-qualified endpoint pointing to a storage provider's S3 API, such as `https://my-hitachi-instance.dev:9000`.
344+
- **Bucket name**: (Required) Name of the S3-compliant storage bucket you want to associate with the Boundary storage bucket.
345+
- **Region**: (Optional) The region to configure the storage bucket for.
346+
- **Access key ID** (Required): The storage provider's service account's access key to use with this storage bucket.
347+
- **Secret access key** (Required): The storage provider's service account's secret key to use with this storage bucket.
348+
- **Worker filter**: (Required) A filter that indicates which Boundary workers have access to the storage. The filter must match an existing worker in order to create a Boundary storage bucket.
349+
- **Disable credential rotation**: (Optional) Controls whether the plugin will rotate the incoming credentials and manage a new storage service account. If this attribute is set to false, or not provided, the plugin will rotate the incoming credentials, using them to create a new storage service account, then delete the incoming credentials.
350+
351+
Note that credential rotation is not supported for Hitachi Content Platform, and it may not function for other S3-compatible providers.
352+
353+
1. Click **Save**.
354+
355+
</Tab>
356+
<Tab heading="CLI">
357+
358+
1. Log in to Boundary.
359+
1. Use the following command to create a storage bucket in Boundary:
360+
361+
```shell-session
362+
$ boundary storage-buckets create \
363+
-bucket-name mystoragebucket \
364+
-plugin-name minio \
365+
-scope-id o_1234567890 \
366+
-bucket-prefix="foo/bar/zoo" \
367+
-worker-filter '"dev" in "/tags/type"' \
368+
-attr endpoint_url="https://my-hitachi-instance.dev:9000" \
369+
-attr region="REGION" \
370+
-attr disable_credential_rotation=true \
371+
-secret access_key_id="KEY" \
372+
-secret secret_access_key="SECRET"
373+
```
374+
375+
Replace the values above with the following required secrets and any optional [attributes](/boundary/docs/concepts/domain-model/storage-buckets) you want to associate with the Boundary storage bucket:
376+
377+
- `bucket-name`: (Required) Name of the S3-compliant storage bucket you want to associate with the Boundary storage bucket.
378+
- `plugin-name`: (Required) The name of the Boundary storage plugin.
379+
Use the `minio` plugin for S3-compatible storage.
380+
- `scope_id`: (Required) A storage bucket can belong to the Global scope or an Org scope.
381+
- `worker-filter`: (Required) A filter that indicates which Boundary workers have access to the storage. The filter must match an existing worker in order to create a Boundary storage bucket.
382+
- `secret`: (Required) The storage provider's credentials to use.
383+
- `access_key_id` (Required): The storage provider's service account's access key to use with this storage bucket.
384+
- `secret_access_key` (Required): The storage provider's service account's secret key to use with this storage bucket.
385+
- `attributes` or `-attr`: Attributes of the S3-compliant storage bucket.
386+
- `endpoint_url` (Required): Fully-qualified endpoint pointing to an S3-compliant API. This example uses Hitachi, but you should substitute your storage provider's endpoint.
387+
- `region`: (Optional) The region to configure the storage bucket for.
388+
- `disable_credential_rotation`: (Optional) Controls whether the plugin will rotate the incoming credentials and manage a new storage service account. If this attribute is set to `false`, or not provided, the plugin will rotate the incoming credentials to create a new storage service account, then delete the incoming credentials.
389+
390+
Note that credential rotation is not supported for Hitachi Content Platform, and it may not function for other S3-compatible providers.
391+
392+
</Tab>
393+
</Tabs>
394+
317395
</Tab>
318396
</Tabs>
319397

website/content/docs/configuration/session-recording/index.mdx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ To enable session recording, you must:
4040
1. Configure an external storage provider:
4141
- [Amazon S3](/boundary/docs/configuration/session-recording/storage-providers/configure-s3)
4242
- [MinIO](/boundary/docs/configuration/session-recording/storage-providers/configure-minio)
43+
- [S3-compliant](/boundary/docs/configuration/session-recording/storage-providers/configure-s3-compliant)
4344
1. [Create a storage bucket](/boundary/docs/configuration/session-recording/create-storage-bucket)
4445
1. [Enable session recording on a target](/boundary/docs/configuration/session-recording/enable-session-recording)
4546

Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
---
2+
layout: docs
3+
page_title: Configure S3-compliant storage
4+
description: |-
5+
How to configure an S3-compliant storage provider for Boundary session recording.
6+
---
7+
8+
# Configure an S3-compliant storage provider
9+
10+
<EnterpriseAlert product="boundary">This feature requires <a href="https://www.hashicorp.com/products/boundary">HCP Boundary or Boundary Enterprise</a></EnterpriseAlert>
11+
12+
The [MinIO plugin](https://github.com/hashicorp/boundary-plugin-minio/) lets you configure S3-compliant storage providers for session recording.
13+
14+
HashiCorp has tested and confirmed that you can configure the following S3-compliant storage products for session recording using the MinIO plugin:
15+
16+
- [Hitachi Content Platform](#hitachi-content-platform-configuration)
17+
18+
You can also configure other providers' S3-compliant storage products for session recording storage.
19+
We will update the list of providers as we test them.
20+
21+
## Requirements
22+
23+
Before you can create a storage bucket in Boundary, you must ensure that your environment meets certain requirements.
24+
25+
Session recording requires specific configuration for both the external storage provider and the Boundary worker.
26+
27+
Refer to [Configure workers for session recording](/boundary/docs/configuration/session-recording/configure-worker-storage) to learn about configuring self-managed workers for session recording.
28+
29+
When you determine storage requirements for the external bucket, you should consider:
30+
31+
- [BSR storage considerations](/boundary/docs/configuration/session-recording#storage-considerations)
32+
- [Storage bucket retention policies](/boundary/docs/configuration/session-recording/configure-storage-policy)
33+
34+
### S3-compliant storage provider requirements
35+
36+
- A storage bucket
37+
38+
You must associate the Boundary storage bucket with a third-party storage bucket. A third-party storage bucket contains the bucket name, endpoint URL, optional region, optional prefix, and the service account credentials needed to access the bucket.
39+
40+
- A service account and access keys for the storage provider
41+
42+
You must provide service account access keys when you configure a Boundary storage bucket later on.
43+
44+
Refer to your storage provider's documentation to learn how to set up a service account.
45+
46+
- The storage bucket must be configured with R/W access. If you use a
47+
restricted IAM user policy, the following policy actions must be allowed at a minimum.
48+
49+
```json
50+
{
51+
"Version": "2012-10-17",
52+
"Statement": [
53+
{
54+
"Action": [
55+
"s3:PutObject",
56+
"s3:GetObject",
57+
"s3:GetObjectAttributes",
58+
"s3:DeleteObject"
59+
],
60+
"Effect": "Allow",
61+
"Resource": "arn:aws:s3:::test-session-recording-bucket/*"
62+
},
63+
{
64+
"Action": "s3:ListBucket",
65+
"Effect": "Allow",
66+
"Resource": "arn:aws:s3:::test-session-recording-bucket"
67+
}
68+
]
69+
}
70+
```
71+
72+
### Hitachi Content Platform configuration
73+
74+
HashiCorp has tested and confirmed that you can configure the Hitachi Content Platform for external session recording storage using the MinIO plugin.
75+
It is included as an example in this topic.
76+
You should be able to configure other S3-compliant storage providers to work for session recording storage as well, but we have not tested other providers.
77+
78+
You must have an account with Hitachi Content Platform to create storage buckets.
79+
You can sign up for an account at the following URL:
80+
81+
[https://trycontent.hitachivantara.com](https://trycontent.hitachivantara.com)
82+
83+
When you sign up for an account, Hitachi sends you the details you need to connect to the instance including the endpoint, S3 access key ID, and S3 secret key.
84+
Log in to Hitachi's S3 console to create a storage bucket, and make a note of the bucket's name.
85+
86+
In Boundary, set the following environment variables using your Hitachi credentials and the name of the bucket:
87+
88+
```
89+
export BUCKET_NAME=<YOUR_HITACHI_BUCKET_NAME>
90+
export STORAGE_ACCESS_KEY_ID=<YOUR_HITACHI_ACCESS_KEY_ID>
91+
export STORAGE_SECRET_ACCESS_KEY=<YOUR_HITACHI_SECRET_KEY>
92+
```
93+
94+
<Note>
95+
96+
Credential rotation is not supported for Hitachi Content Platform.
97+
98+
</Note>
99+
100+
## Resources
101+
102+
Refer to your S3-compliant storage provider's documentation for more information about configuring storage buckets and service accounts.
103+
104+
## Next steps
105+
106+
After you configure the external storage provider, you can [create the storage bucket](/boundary/docs/configuration/session-recording/create-storage-bucket) in Boundary.

website/content/docs/configuration/session-recording/storage-providers/configure-s3.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
layout: docs
33
page_title: Configure Amazon S3
44
description: |-
5-
How to Amazon S3 as a storage provider for Boundary session recording.
5+
How to configure Amazon S3 as a storage provider for Boundary session recording.
66
---
77

88
# Configure Amazon S3 as a storage provider

website/data/docs-nav-data.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -545,6 +545,10 @@
545545
{
546546
"title": "MinIO",
547547
"path": "configuration/session-recording/storage-providers/configure-minio"
548+
},
549+
{
550+
"title": "S3-compliant",
551+
"path": "configuration/session-recording/storage-providers/configure-s3-compliant"
548552
}
549553
]
550554
},

0 commit comments

Comments
 (0)