🐷

MDX.jpのオブジェクトストレージに対するIPアドレス制限の実装方法

に公開

概要

MDX.jpのオブジェクトストレージに対するIPアドレス制限の実装方法を調べました。以下、動作確認を行なった上で、AIが記事を執筆しました。

はじめに

本記事では、MDX.jpが提供するDDN EXAScaler S3互換オブジェクトストレージサービスにおいて、特定のIPアドレスからのみアクセスを許可する設定方法について解説します。

オブジェクトストレージのセキュリティレイヤー

DDN EXAScaler S3互換ストレージには、主に以下の3つのセキュリティレイヤーがあります:

  1. アクセスキーとシークレットキー:基本的な認証情報
  2. バケットポリシー:バケットレベルでのアクセス制御
  3. アクセス制御リスト(ACL):オブジェクトレベルでのアクセス制御

この中で、IPアドレス制限を実装するには「バケットポリシー」を利用します。

バケットポリシーによるIPアドレス制限の設定手順

1. ポリシーJSONファイルの作成

まず、以下のようなJSONファイル(例:mdx.json)を作成します:

{
    "Version": "2008-10-17",
    "Statement": [
      {
            "Sid": "BucketName",
            "Effect": "Allow",
            "Principal": {
                   "DDN": ["*"]
            },
            "Action": [
                    "s3:ListBucket",
                    "s3:GetObject"
            ],
            "Resource": "BucketName",
            "Condition": {
                "IpAddress": {
                    "aws:SourceIp": [
                        "192.168.1.1/32",
                        "203.0.113.0/24"
                    ]
                }
            }
      }
    ]
}

ポリシーの主な要素:

  • Version: ポリシー構文のバージョン
  • Sid: ポリシーステートメントの識別子(任意の名前)
  • Effect: 許可または拒否("Allow"または"Deny")
  • Principal: このポリシーが適用されるユーザー(DDN EXAScalerでは"DDN"を使用)
  • Action: 許可または拒否するアクション
  • Resource: ポリシーが適用されるリソース(バケット名)
  • Condition: 条件(ここでIPアドレス制限を設定)

2. ポリシーの適用

s3cmdツールを使用して、作成したポリシーをバケットに適用します:

s3cmd --no-check-certificate setpolicy mdx.json s3://BucketName

成功すると、以下のようなメッセージが表示されます:

s3://BucketName/: Policy updated

3. ポリシーの確認

現在適用されているポリシーを確認するには:

s3cmd --no-check-certificate info s3://BucketName

以下のような結果が得られました。

   Location:  us-east-1
   Payer:     none
   Ownership: none
   Versioning:none
   Expiration rule: none
   Block Public Access: none
   Policy:    {"Version":"2008-10-17","Statement":[{"Sid":"BucketName","Effect":"Allow","Principal":{"DDN":["*"]},"Action":["s3:GetObject","s3:ListBucket"],"Resource":"BucketName","Condition":{"IpAddress":{"aws:SourceIp":["192.168.1.1/32","203.0.113.0/24"]}}}]}
   CORS:      none

IPアドレス指定のポイント

CIDR表記について

IPアドレスはCIDR表記で指定できます:

  • 単一IPアドレス: 192.168.1.1/32(/32は単一アドレスを意味)
  • IPアドレス範囲: 203.0.113.0/24(/24は256個のアドレス範囲を意味)

複数IPアドレスの指定

複数のIPアドレスやアドレス範囲からのアクセスを許可する場合は、配列形式で指定します:

"aws:SourceIp": [
    "192.168.1.1/32",
    "203.0.113.0/24",
    "2001:db8::/32"  // IPv6アドレスも指定可能
]

まとめ

以下の記事で、Omeka Sとmdx.jpのオブジェクトストレージを連携する方法を紹介しました。

https://zenn.dev/nakamura196/articles/cf8fd7d8463091

本記事の内容と組み合わせることで、指定したIPアドレスからのみ画像(データ)を閲覧可能なデジタルアーカイブシステムを実現することができそうです。

間違っている点もあるかもしれませんが、参考になりましたら幸いです。

Discussion