【Wasabi】プライベートフォルダの作成と管理者のアクセス方法

皆さんこんにちは!
この記事では、オブジェクトストレージ「Wasabi」を使って、
・各ユーザーのプライベートフォルダの作成方法
・フォルダに管理者のみがアクセスできる設定方法

を初心者向けに紹介していきます🔰


先輩

アイちゃん、このファイル、明日までにWasabiにアップロードしてくれる?

アイ

分かりました!でも、どうやってやるんですか?

先輩

バケットにアイちゃん専用フォルダを作るから、そこにファイルをアップロードしてね。
皆はお互いのファイルを見られないけど、私は管理者として全部見られるように設定するよ。

アイ

仕組みとしてはこんなイメージですか…?

先輩

こんなイメージだね。では、さっそく設定してみよう!

準備

ルートアカウントでログインし、管理者ユーザーを作成します。
その後、管理者ユーザーでログインし、サブユーザーを作成しておきます。

管理者ユーザーadministrator
サブユーザーAsubuser-A
サブユーザーBsubuser-B
※ユーザー作成方法はこちら

ユーザーのプライベートフォルダの作成方法

1.各サブユーザー専用のフォルダをバケット内に作成

まず、管理者ユーザーでWasabiにログインし、対象のバケットを選択します。

「フォルダを作成」から、サブユーザー専用のフォルダを作ります。
オブジェクト に作成したフォルダが表示されたらOKです。

2.サブユーザー用のポリシーを作成、適用

ポリシーとは、”誰がどこまでアクセスできるかを決めるルール”です。
ポリシーを作ることで、特定のユーザーのアクセスを特定のフォルダに限定することができます。
ここでは、サブユーザーAが「user-A」フォルダにのみアクセスできるよう設定します。

まず、メニューの「ポリシー」を選択し、右上「ポリシーを作成」をクリックします。

ポリシー名・説明(任意)・ポリシーエディタを入力し、「ポリシーを作成」します。

▼ポリシーエディタ内容

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AllowUserToSeeBucketListInTheConsole",
      "Effect": "Allow",
      "Action": [
        "s3:ListAllMyBuckets",
        "s3:GetBucketLocation",
        "s3:GetBucketCompliance"
      ],
      "Resource": "arn:aws:s3:::*"
    },
    {
      "Sid": "AllowRootAndHomeListingOfUserFolder",
      "Effect": "Allow",
      "Action": "s3:ListBucket",
      "Resource": "arn:aws:s3:::file-2024",
      "Condition": {
        "StringEquals": {
          "s3:delimiter": "/",
          "s3:prefix": [
            "",
            "user-A/"
          ]
        }
      }
    },
    {
      "Sid": "AllowListingOfUserFolder",
      "Effect": "Allow",
      "Action": "s3:ListBucket",
      "Resource": "arn:aws:s3:::file-2024",
      "Condition": {
        "StringLike": {
          "s3:prefix": "user-A/*"
        }
      }
    },
    {
      "Sid": "AllowAllS3ActionsInUserFolder",
      "Effect": "Allow",
      "Action": "s3:*",
      "Resource": "arn:aws:s3:::file-2024/user-A/*"
    }
  ]
}{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AllowUserToSeeBucketListInTheConsole",
      "Effect": "Allow",
      "Action": [
        "s3:ListAllMyBuckets",
        "s3:GetBucketLocation",
        "s3:GetBucketCompliance"
      ],
      "Resource": "arn:aws:s3:::*"
    },
    {
      "Sid": "AllowRootAndHomeListingOfUserFolder",
      "Effect": "Allow",
      "Action": "s3:ListBucket",
      "Resource": "arn:aws:s3:::file-2024",
      "Condition": {
        "StringEquals": {
          "s3:delimiter": "/",
          "s3:prefix": [
            "",
            "user-A/"
          ]
        }
      }
    },
    {
      "Sid": "AllowListingOfUserFolder",
      "Effect": "Allow",
      "Action": "s3:ListBucket",
      "Resource": "arn:aws:s3:::file-2024",
      "Condition": {
        "StringLike": {
          "s3:prefix": "user-A/*"
        }
      }
    },
    {
      "Sid": "AllowAllS3ActionsInUserFolder",
      "Effect": "Allow",
      "Action": "s3:*",
      "Resource": "arn:aws:s3:::file-2024/user-A/*"
    }
  ]
}

作成したポリシーは、ポリシーリストに追加されます。

ポリシーが作成できたら、このポリシーを該当のユーザーに適用します。
メニューの「ユーザー」から、該当のユーザーを選び、「ポリシー」を選択します。

先ほど作成したポリシーを検索し、出てくる候補から選択します。
下方「subuser-Aに付加されたポリシー」に追加されたらOKです。

これで、サブユーザーAのプライベートなフォルダが作成できました。

※同様に、他のサブユーザーのフォルダとポリシーも作ります。👉《手順》

①フォルダ作成

「フォルダを作成」から、サブユーザー専用のフォルダを作ります。
オブジェクト に作成したフォルダが表示されたらOKです。

②ポリシー作成

メニューの「ポリシー」から「ポリシーを作成」し、
ポリシー名・説明(任意)・ポリシーエディタを入力します。
ポリシーエディタの内容は以下です。黄文字部分はサブユーザー毎に変更してください。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AllowUserToSeeBucketListInTheConsole",
      "Effect": "Allow",
      "Action": [
        "s3:ListAllMyBuckets",
        "s3:GetBucketLocation",
        "s3:GetBucketCompliance"
      ],
      "Resource": "arn:aws:s3:::*"
    },
    {
      "Sid": "AllowRootAndHomeListingOfUserFolder",
      "Effect": "Allow",
      "Action": "s3:ListBucket",
      "Resource": "arn:aws:s3:::file2024",
      "Condition": {
        "StringEquals": {
          "s3:delimiter": "/",
          "s3:prefix": [
            "",
            "user-B/"
          ]
        }
      }
    },
    {
      "Sid": "AllowListingOfUserFolder",
      "Effect": "Allow",
      "Action": "s3:ListBucket",
      "Resource": "arn:aws:s3:::file2024",
      "Condition": {
        "StringLike": {
          "s3:prefix": "user-B/*"
        }
      }
    },
    {
      "Sid": "AllowAllS3ActionsInUserFolder",
      "Effect": "Allow",
      "Action": "s3:*",
      "Resource": "arn:aws:s3:::file2024/user-B/*"
    }
  ]
}

③ポリシー適用

メニューの「ユーザー」から、ポリシーを適用したいユーザーを選びます。
「ポリシー」で今作成したポリシーを検索し、出てくる候補から選択します。

各フォルダに管理者のみがアクセスできる設定方法

3.管理者が各サブユーザーのフォルダにアクセスできるポリシーを作成

これまでと同様の手順で、管理者ユーザー用のポリシーを作成・適用します。

▼ポリシーエディタ内容

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "s3:ListAllMyBuckets",
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": "s3:ListBucket",
      "Resource": "arn:aws:s3:::file2024"
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:PutObject",
        "s3:DeleteObject"
      ],
      "Resource": [
        "arn:aws:s3:::file2024/user-A/*",
        "arn:aws:s3:::file2024/user-B/*"
      ]
    }
  ]
}

設定は以上です!
実際に、サブユーザー・管理者ユーザーの挙動を確認してみましょう

【サブユーザー】
サブユーザーAでログインし、対象のバケットを選択します。

自分のフォルダにファイルをアップロードしてみます。
※ファイルのアップロード方法はこちら

できました!

他のサブユーザーのフォルダにアクセスしようとすると、以下のようにエラーが出ます。

次に、管理者ユーザーの挙動を確認してみましょう。

以下のように、各サブユーザーのフォルダにアクセスでき、中のファイルも操作できます。

まとめ

フォルダレベルでユーザーのアクセス権を制限できることで、
・各ユーザーごとのデータのプライバシーが確保される
・他のデータへの不正アクセスを防止できる
・特定のユーザーが必要なデータを横断的に管理できる

などのメリットがあります。
企業内のデータをより安全かつ効率的に管理できますので、ぜひ試してみてください!