STORAGE

マネージドオブジェクトストレージの作成及びアクセスコントロールの設定を行います。

設定値

Chart

storage

対応サービス

パッケージの機能

本パッケージでは、各クラウドのマネージドオブジェクトストレージに関する以下の機能を提供します。

  • オブジェクトストレージ作成

  • バージョニング・削除保護に関する設定

  • ACLに関する設定
    • 各クライアントに対する readOnly と readWrite の権限設定が可能

  • ネットワークに関する設定 (Azureのみ対応、今後 AWS/Google Cloud でも対応予定)
    • アクセス元IPによるアクセス許可・拒否の設定

    • その他 Azure 固有のネットワーク関連の設定が可能 (詳細はvalues.yamlを参照のこと)

  • アクセスログ設定 (Azureのみ対応、今後 AWS/Google Cloud でも対応予定)

  • Webホスティング設定 (AWSのみ対応、今後 Azure/Google Cloud でも対応予定)
    • 単純なホスティング機能 (カスタムドメイン・独自証明書の利用・CORSは現状未サポート)

    • CloudFront ディストリビューションとバケットの連携

  • Azure固有のストレージ設定
    • ストレージアカウントの種類指定、階層型名前空間の有効化、NFSアクセスの有効化 に対応

オブジェクトストレージ作成

ストレージ名、ロケーション、リソースグループ(Azureのみ。既存のものを利用、もしくは新規作成どちらも可能。)を指定することで、オブジェクトストレージを一つ作成できます。

Azure

Azureでblobコンテナーを作成するには、ストレージアカウントが必要です。 ストレージアカウントを作成するには、 azure.storageAccount.createtrue を設定してください。 基本的には name に指定した値がblobコンテナーおよびストレージアカウントの名前になりますが、 azure.storageAccount.name に値を設定することでストレージアカウントの名前を別途設定することが可能です。

CNAPで事前に作成したストレージアカウントにblobコンテナーを追加することもできます。 この場合、 azure.storageAccount.createfalse を指定し、 azure.storageAccount.name に既存のストレージアカウントの名前を指定してください。 name には追加するblobコンテナーの名前を指定してください。

CNAPで作成していない既存のストレージアカウントをCNAPで管理下に入れ、blobコンテナーを追加することもできます。 この場合、 azure.storageAccount.createtrue を指定し、 azure.storageAccount.name に既存のストレージアカウントの名前を指定してください。 指定した設定がストレージアカウントに反映されるようになり、blobコンテナーも追加できるようになります。 この場合も name には追加するblobコンテナーの名前を指定してください。

また、blobコンテナーの名前は、英小文字、数字、ハイフンが使用でき、3-63文字にする必要があります。 ストレージアカウントの名前は、英小文字、数字が使用でき、3-24文字にする必要があります。

カスタムドメインを使用したい場合、始めにカスタムドメインの設定無しでストレージアカウントを作成してください。 続いて、Azureポータルなどでストレージアカウントのエンドポイントを確認し、DNSパッケージを使用してカスタムドメインのCNAMEレコードを登録します。 その後、website.customDomain の設定を追加してアップデートしてください。

Azure クラウドサービスのリソースグループは values の azure.resourceGroup.name で指定できます。 リソースグループを指定する場合は、事前にリソースグループが作成されていることを確認してください。 リソースグループは UserConfig で作成可能です。 リソースグループを指定しない場合には、namespaceと同名のリソースグループにリソースが作成されます。

AWS/Google

AWS S3 及び Google Cloud Storage ではストレージアカウントの概念はありません。 name で指定したオブジェクトバケットが作成されます。

重要

誤操作によるデータ削除を防ぐため、バケットにデータが残っている場合は、 バケットの削除ができないようになっています。 バケットを削除する際は、事前にバケットの中身を空にしてください。

アカウント作成とロール設定

作成したオブジェクトストレージに対してコンテナからアクセスするためのロール設定を行います。

acl の設定を行うことで、作成したバケットにアクセスするクライアントを制限することができます。 readOnly には anonymous を含む読み込みのみの権限を付与したいクライアント、 readWrite には読み込みおよび書き込みの権限を付与したいクライアントを列挙します。

acl:
  readOnly:
  - type: anonymous
  readWrite:
  - name: data-writer
    type: mid

type には指定するクライアントの種類を指定し name 対象の識別子を type ごとの書式で指定します。

ACL type に設定可能な値

type

AWS

Azure

Google

Description

anonymous

バケットをリードオンリーでパブリック公開します。(acl.readOnly でのみ指定できます) anonymous を選択した場合、name を設定する必要はありません。

federatedId

外部 IdP のアドレスを指定します。

service

サービスに権限を付与します。[service-name].amazonaws.com という形式で指定します。

role

ロールに権限を付与します。

sts

AssumeRoleにて引き受けたセッションロールに対して権限を付与します。"[role-name]/[session-name]" という形式でダブルクォーテーションで囲んで指定します。

mid

CNAP サービスで作成したユーザ割り当てマネージドIDの name を指定して権限を付与します。

objectId

ユーザー、グループ、サブスクリプション などのIDを指定して権限を付与します。

domain

Google Workspace もしくは Cloud Identity のドメインに所属するユーザーに権限を付与します。 [USER_NAME]@[DOMAIN].com の DOMAIN 部分を指定します。

gsa

google サービスアカウントに権限を付与します。 [SERVICEACCOUNT]@[PROJECT_ID].iam.gserviceaccount.com の形式で指定します。

user

ユーザーアカウントに権限を付与します。

group

グループアカウントに権限を付与します。

Web ホスティング(AWS)

ストレージバケーットを利用して静的コンテンツをホストする Web サーバーとして設定することができます。

本設定機能は現在 AWS にのみ対応しています。

AWS

website.enabled を true に設定することによって、以下の設定が行なわれ、 web ホスティング機能が有効になります。

  • CloudFront ディストリビューションとバケットの連携

  • TLS 証明書の設定(HTTPS へのリダイレクト)

  • デフォルトドメインの設定

  • アクセスログ用のバケット作成

CloudFront ディストリビューションとの連携が行なわれるとCloudFront のデフォルトURLから、 バケットに配置したコンテンツにアクセスできるようになります。 URL は xxxxxxxxxxxxxx.cloudfront.net の形式で自動的に付与されます。 発行されたURL クラウドコンソール から確認できます。

web ホスティングを有効にした場合、バケットに設定したアクセスコントロール設定にかかわらず、 web サイト URL にはインターネットからのアクセスが可能になります。 (バケットへのURLへのアクセスにはアクセスコントロールが適用されます。)

log 用のバケットは <name>-website-log の形式で作成され、logs フォルダに アクセスログが保存されます。

Values

Default values

# This is a YAML-formatted file.
# Declare variables to be passed into your templates.
# Default values for MASTER-CONTAINER-HELM-STORAGE.

# OBSOLETE: Google Cloud: storageClass 設定は廃止されました。オブジェクトを保存する際に明示的に指定して保存してください。
# OBSOLETE: Azure: 既存のストレージアカウントに新規のバケットを追加する機能は廃止されました。
# OBSOLETE: Azure: kind 設定は廃止されました。storageV2で固定的に作成されます。
# OBSOLETE: Azure: accessTier 設定は廃止されました。オブジェクトを保存する際に明示的に指定して保存してください。
# OBSOLETE: Azure: コンテナ単位の DeleteRetentionPolicy は廃止されました。ストレージアカウント DeleteRetentionPolicy は引き続き利用可能です。
# OBSOLETE: Azure: supportsHttpsTrafficOnly 設定は廃止されました。HTTPSアクセス必須の状態でストレージアカウントが構築されます。
# OBSOLETE: AWS: ACLに関する以下の設定は廃止されました。バケットポリシーにARN単位で設定が実施されます。
# OBSOLETE: Azure: DataLakeEnabled 設定は廃止されました。
# OBSOLETE: AWS: force_destroy 設定は廃止されました。同名のバケットが存在する場合アプリケーションのデプロイに失敗する動作が既定動作となります。
# OBSOLETE: AWS: attach_deny_insecure_transport_policy 設定は廃止されました。HTTPSアクセス必須の状態でバケットが構築されます。
# OBSOLETE: AWS: attach_require_latest_tls_policy 設定は廃止されました。最新のTLSバージョンを強制する状態でバケットが構築されます。
# OBSOLETE: AWS: control_object_ownership 設定は廃止されました。ACLに関する設定はバケットポリシーにて制御するため、この設定は true で固定されます。
# OBSOLETE: AWS: object_ownership 設定は廃止されました。ACLに関する設定はバケットポリシーにて制御するため、この設定は BucketOwnerEnforced で固定されます。

## 基本設定 ##

# バケット名。必須
# Azureの場合は、ストレージアカウントとBlobコンテナどちらも同じ名前で作成される
name:

# リソースを作成する地理的場所を指定する
# 冗長性のオプション等もこのセクションに設定する
location:
  # ロケーション名
  name:
  # Azureを使用する場合に指定する Storage Account の SKU(Stock Keeping Unit)
  # パフォーマンスレベル・冗長化を設定する
  # AzureのSKUの種類(https://learn.microsoft.com/ja-jp/rest/api/storagerp/srp_sku_types)に記載された名前のみ有効
  sku: Standard_GRS

# kubernetes上からこのHelmを削除した際にクラウド上のストレージリソースを残すかどうか設定
# true に設定すると、Helmを削除してもクラウド上にストレージリソースが残る
keepOnDelete: true

# Azure固有の設定を記載
# Google Cloud/AWSとシステム構成が異なり抽象化できない部分についてここで設定する
azure:
  storageAccount:
    # ストレージアカウントを作成するかどうか
    create: true
  # ストレージアカウントの種類
  kind: "StorageV2"
  # バケット作成先のリソースグループ名。指定しない場合は、Namespaceと同名のリソースグループに作成される
  # resourceGroup: ""
  # Data Lake Storage Gen2の階層型名前空間を有効にする場合は true。バージョニング、変更フィードを無効にする必要あり。
  isHnsEnabled: false
  # NFSによるアクセスを有効にする場合は true。有効にするには階層型名前空間を有効にする必要がある。
  isNfsV3Enabled: false

# バージョン管理機能の有効化・無効化
versioning:
  enabled: false
  # オブジェクトのロック機能に関する設定
  # この設定を有効にすることで、バケット内のオブジェクトの上書きや削除が一定期間制限できる
  immutableVersioning:
    enabled: false
    # ロック期間の設定
    # ここで設定した期間オブジェクトの変更を制限
    # AWSは、バケットにてデフォルトで適用されるロック期間が設定される
    days: 7
    # オブジェクトのロック機能に関する種別を設定
    # AWSのみ対応: GOVERNANCE, COMPLIANCE
    # GOVERNANCE: s3:BypassGovernanceRetention というアクションへの許可を持ったユーザー以外の変更が制限される 
    # CONPLIANCE: rootユーザーを含めたすべてのユーザーの変更が制限される
    # mode: GOVERNANCE

# オブジェクトの削除後の復旧に関する設定
# なお、AWSでは削除保護の設定はないため、versioning および lifecycle で対応する
deleteRetentionPolicy:
  # 復旧設定
  enabled: false
  # 削除されたリソースを保持する日数
  days: 7


# ストレージにアクセス可能なネットワークに関する設定
# Google Cloud/AWSは未実装 今後機能追加予定
# network:
#   # ストレージに対するネットワークアクセスのデフォルトのポリシーを設定
#   # Allowを設定した場合:
#   # ・不特定多数のネットワークからのアクセスをデフォルトで許可
#   # ・主にパブリックネットワークからのアクセスを想定する際に利用
#   # Denyを設定した場合:
#   # ・不特定多数のネットワークからのアクセスをデフォルトで拒否
#   # ・主にプライベートネットワークや、特定のIPレンジからのアクセスを想定する際に利用
#   defaultAction: Allow
#   # アクセス設定
#   ipRules:
#     - action:
#       value:
#   # Azure独自のネットワークに関する設定
#   azure:
#     # トラフィックバイパス設定。Logging/Metrics/AzureServicesの組合せを指定可能。 (例: \"Logging, Metrics\"), None を指定するとどれもバイパスしない。
#     bypass:
#     # リソースインスタンスのアクセスルール
#     resourceAccessRules:
#       - resourceReference:
#           # サブネットのリソースID。例: /subscriptions/{subscriptionId}/resourceGroups/{groupName}/providers/Microsoft.Network/virtualNetworks/{vnetName}/subnets/{subnetName}.
#           armId:
#         # テナントID
#         tenantId:
#     # 仮装ネットワークルール
#     virtualNetworkRules:
#       - action:
#         reference:
#           armId:

# ストレージアクセスに関するACLの設定
# - readOnlyとreadWriteの権限設定。
# - nameに制御対象の名前、typeに制御対象の種別を指定。
# - readOnlyの設定で name と type が anonymous の場合、public accessとなる。readWriteの設定では anonymous 設定は無視される。
# - type でクライアントの種類を指定する (README 参照)。
# - sharedKeyAccess は Azure でシェアードキー認証を利用する場合のみ使用。
# -  ksaへのロール追加はサポートしないため、ksaに紐づけて使うかどうかはpodを実行する側で設定する必要がある。
acl:
  readOnly: [] 
    # - name: hoge
    #   type: mid
    # - name: hoge@hoge.com
    #   type: user
  readWrite: []
    # - name: fuga@hoge.com
    #   type: user
    # - name: arn:aws:iam::1234567890:role/Infrastructure_Admin
    #   type: role
  sharedKeyAccess: false


# バケットへのアクセスログを、別のバケットに転送する。
# Azureではログ用のバケット自体を自動で作成する。
# Google Cloud/AWSは未実装のため追加実装予定。
logging:
  enabled: false
  retentionInDays: 7


# web ホスティング設定 (AWS のみ実装済み)
website:
  enabled: false # web ホスティング機能を有効にする場合は true を設定
  domain: "" # カスタムドメインを使用する場合に指定する。(未実装)
  tls:
    type: managed # 利用する TLS 証明証の種類(managed 固定)
  # CORS 設定 (未実装)
  cors: [] 
  # - origins: [] # CORS を許可するドメインリスト
  #   methods: [] # CORS を許可する HTTP メソッドリスト
  #   headers: [] # CORS を許可する HTTP ヘッダーリスト
      

Schema reference

type

object

properties

  • name

バケット名

type

string

  • location

type

object

properties

  • name

ロケーション(リージョン)名

type

string

  • sku

Azureのみ ストレージアカウントのSKU。

type

string

enum

Premium_LRS, Premium_ZRS, Standard_GRS, Standard_GZRS, Standard_LRS, Standard_RAGRS, Standard_RAGZRS, Standard_ZRS

default

Standard_GRS

  • keepOnDelete

true の場合パッケージアンインストール時にインスタンスを保持する。

type

boolean

  • versioning

type

object

properties

  • enabled

オブジェクトのバージョン管理

type

boolean

default

False

  • immutableVersioning

コンテナレベルでバージョンレベルの不変性サポート設定

type

object

properties

  • enabled

バージョンレベルの不変性サポート設定を有効化する場合 true。設定変更不可。有効にする場合、ストレージアカウントのバージョニングを有効にする必要がある。

type

boolean

default

False

  • days

バージョンレベルの不変性サポート設定を有効化する場合 true。設定変更不可。有効にする場合、ストレージアカウントのバージョニングを有効にする必要がある。

type

integer

default

7

  • mode

AWSのみ オブジェクトのロック機能に関する種別を設定

type

string

  • deleteRetentionPolicy

削除後の復旧設定

type

object

properties

  • enabled

復旧設定

type

boolean

default

False

  • days

削除されたアイテムを保持する日数(1-365)

type

integer

default

7

  • network

type

object

properties

  • defaultAction

ルールにマッチしなかった場合のデフォルトアクション

type

string

enum

Allow, Deny

  • ipRules

IP ACL ルール

type

array

items

type

object

properties

  • action

IP ACLルールのアクション

type

string

  • value

IP または CIDRフォーマットのIP範囲を指定する。IPV4アドレスのみ指定可能

type

string

  • azure

type

object

properties

  • bypass

トラフィックバイパス設定。Logging/Metrics/AzureServicesの組合せを指定可能。 (例: "Logging, Metrics"), None を指定するとどれもバイパスしない。

type

string

  • resourceAccessRules

リソースアクセスルール

type

array

items

type

object

properties

  • resourceReference

type

object

properties

  • armId

サブネットのリソースID。例: /subscriptions/{subscriptionId}/resourceGroups/{groupName}/providers/Microsoft.Network/virtualNetworks/{vnetName}/subnets/{subnetName}.

type

string

  • tenantId

テナントID

type

string

  • virtualNetworkRules

仮想ネットワークルール

type

array

items

type

object

properties

  • action

仮想ネットワークのアクション

type

string

enum

Allow

  • reference

type

object

properties

  • armId

サブネットのリソースID。例: /subscriptions/{subscriptionId}/resourceGroups/{groupName}/providers/Microsoft.Network/virtualNetworks/{vnetName}/subnets/{subnetName}.

type

string

  • acl

type

object

properties

  • readOnly

readonly権限の追加

type

array

items

type

object

properties

  • name

acl制御対象の名前(ユーザ名やグループ名など)

type

string

  • type

制御対象の種類. ユーザー、グループ、サービス、ロール(AWS), GSA, Mid all

type

string

enum

anonymous, user, role, group, gsa, mid, domain, objectId, sts, federatedId, service

  • readWrite

readwrite権限の追加

type

array

items

type

object

properties

  • name

acl制御対象の名前(ユーザ名やグループ名など).

type

string

  • type

制御対象の種類. ユーザー、グループ、サービス、ロール(AWS), GSA, Mid all

type

string

enum

user, role, group, gsa, mid, domain, objectId, sts, federatedId, service

  • sharedKeyAccess

Azure の場合のみ使用。シェアードキーによるアクセスを許可する場合に true を指定する

type

boolean

default

False

  • logging

type

object

properties

  • enabled

loggingの有効化設定

type

boolean

default

False

  • retentionInDays

変更フィードの保持日数(1-146000(400年))。指定無しの場合は無期限

type

integer

  • azure

type

object

properties

  • storageAccount

ストレージアカウントの設定

type

object

properties

  • create

ストレージアカウントを作成するかどうか

type

boolean

default

True

  • name

ストレージアカウントの名前。指定しない場合はバケット名で指定した名前が付与される

type

string

  • resourceGroup

storageAccount、blobを作成する場合は作成先のリソースグループ名。指定しない場合は、Namespaceと同名のリソースグループに作成される

type

string

  • isHnsEnabled

Data Lake Storage Gen2の階層型名前空間を有効にする場合は true。バージョニング、変更フィードを無効にする必要あり。

type

boolean

default

False

  • isNfsV3Enabled

ネットワーク ファイル システム v3 を有効にする場合は true。有効にするには階層型名前空間を有効にする必要がある。

type

boolean

default

False

  • kind

ストレージアカウントの種類

type

string

enum

BlobStorage, BlockBlobStorage, FileStorage, Storage, StorageV2

default

StorageV2

  • website

web ホスティング機能設定 (AWS のみ実装)

type

object

properties

  • enbaled

ホスティング機能を有効化する場合は true

type

string

default

False

  • domain

ホストに割り当てるカスタムドメイン名(未実装)

type

string

  • tls

ホストに割り当てる TLS 証明書の設定

type

object

properties

  • type

証明書の種別 (managed 固定)

type

string

enum

managed

default

managed

  • cors

クロスオリジンリソース共有に関する設定(未実装)

type

array

items

type

object

properties

  • origins

CORS を許可するドメインリスト

type

array

items

type

string

  • methods

CORS を許可する HTTP メッソッドリスト

type

array

items

type

string

  • headers

CORS を許可する HTTP ヘッダーリスト

type

array

items

type

string

Example

Example1. Azure BLOBコンテナーとストレージアカウントを作成

apiVersion: managed.msp.sbopsv/v1alpha1
kind: Application
metadata:
  name: staging-storage
  namespace: staging
spec:
  chart:
    name: storage
    version: <latest>
  settings:
    name: sampleblob
    location: 
      name: japaneast
    acl:
      readOnly:
      - type: anonymous
      readWrite:
      - name: data-writer
        type: mid
      - name: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
        type: objectId

Example2. Google Cloud Cloudストレージを作成

apiVersion: managed.msp.sbopsv/v1alpha1
kind: Application
metadata:
  name: staging-dns
  namespace: staging
spec:
  chart:
    name: storage
    version: <latest>
  settings:
    name: test-bucket
    location: 
      name: asia-northeast1
    acl:
      readOnly:
      - type: anonymous
      readWrite:
      - name: data-writer@test-project.iam.gserviceaccount.com
        type: gsa
      - name: storage-admin@google.com
        type: user

Example3. Amazon Simple Storage Serviceストレージを作成

apiVersion: managed.msp.sbopsv/v1alpha1
kind: Application
metadata:
  name: staging-storage
  namespace: staging
spec:
  chart:
    name: storage
    version: <latest>
  settings:
    name: test-bucket
    location: 
      name: ap-northeast-1
    acl:
      readOnly:
      - type: anonymous
      readWrite:
      - name: hogeuser
        type: user
      - name: hogerole
        type: role
      - name: "hogerole/hogesession"
        type: sts
      - name: cognito-identity.amazonaws.com
        type: federatedId
      - name: ec2.amazonaws.com
        type: service

Change Log

1.1.17

Released on 2025-08-07

What's Changed

パッケージ内で利用しているライブラリの更新を行いました。

1.1.16

Released on 2025-05-15

What's Changed

パッケージ内で利用しているライブラリの更新を行いました。

1.1.15

Released on 2025-04-23

What's Changed

  • 内部モジュールの更新を実施

1.1.14

Released on 2025-03-21

What's Changed

AWSの spec.settings.name の必須チェックを追加しました。