最終更新日:2025-08-18 15:58:39
権限ポリシー(IAM Policy)は、Identity and Access Managementにおける核心要素であり、ユーザー、グループ、ロールのリソースへのアクセス権限を定義します。その機能は、一連の権限ルールを通じて、誰(ユーザーまたはエンティティ)がどのリソースにアクセスし、どの特定の操作を実行できるかを細かく制御することです。IAMポリシーの核心目的は、リソースの安全性を確保し、不正アクセスを防止するとともに、様々なビジネスニーズに応える柔軟な権限管理を提供することです。これにより、企業はユーザー権限を効果的に管理し、最小権限の原則を遵守し、潜在的なセキュリティリスクを低減できます。ポリシーは通常JSON形式で記述され、許可または拒否される具体的な操作を詳細に規定します。例えば、IAMポリシーでユーザーグループに特定バケットへのアクセスを許可したり、読み取り専用操作に制限したりできます。
権限ポリシーのフォーマットは次の通りです:
{
"version": "1",
"statement": [
{
"action": [
"wos:GetBucket"
],
"resource": [
"wsc:wos:*:*:testbucket"
],
"effect": "allow"
},
{
"action": [
"wos:PutObject",
"wos:GetObject",
"wos:DeleteObject"
],
"resource": [
"wsc:wos:*:*:testbucket/*"
],
"effect": "allow"
}
]
}
メインアカウントはこのようなポリシーを使用して、IAMシステム内のサブアカウントを承認できます。ポリシー内には1つのステートメントが存在します(1つのポリシーに複数のステートメントを含めることができます)。ステートメント内に対応するaction、resource、effectが指定されています。
このポリシー設定の権限:スペースtestbucket内の全ファイル情報をリスト表示;スペースtestbucketへファイルをアップロード;スペースtestbucket内のファイルをダウンロード;スペースtestbucket内のファイルを削除。
versionは権限ポリシーのバージョンを定義し、現在サポートされているバージョンは"1"です。
承認セマンティクスはステートメントで記述されます。ビジネスシナリオに応じて複数のセマンティクスを含むことが可能で、各々がaction、effect、resourceの記述を含みます。リクエストが行われるたびに、システムはマッチングを順次確認します。マッチに成功した全ステートメントは、effect設定に基づきallowとdenyに分類され、denyが優先されます。全マッチが通過した場合、リクエストは承認されます。マッチが成功した場合にdenyが存在する、あるいはマッチ成功エントリがない場合は、リクエストはアクセス禁止となります。
Actionとはwosが提供するS3 APIまたはコンソールの操作を指します。アクションルールはwos:{action_name}で、ワイルドカードをサポートし、 で0文字以上の任意の英字を表せます。例えばwos:List*は、action_nameがListで始まるwos提供の全S3 APIまたはコンソール操作を意味します。
Actionはリスト形式で、1つ以上のアクションを選択でき、全action_nameには"wos:"プレフィックスが必須です。複数のアクションが存在可能です。
アクションは以下の3カテゴリに分類されます:
1. Service-level operations: wos:GetServiceに類似する操作に対応。
特定actionとS3 APIの対応関係:
| S3 API | action |
|---|---|
| GetService | wos:GetService |
コンソール操作との対応関係:
| Console operation | action |
|---|---|
| Buckets | |
| View | wos:GetService |
| Bucket-Manage-Basic statistics / Detection statistics / Overview | |
| View | wos:GetBucketAnalysis |
注意:
- サブアカウントにGetService権限を割り当てると、親アカウントが所有する全スペースを取得できます(サブアカウント作成のスペースは親アカウントが所有者)
- コンソール利用には全サブアカウントにGetService権限が必須(未設定時は他操作が正常動作しない)
- GetBucketAnalysis権限付与で統計分析メニュー下の全項目閲覧可
2. Bucket level operations: wos:PutBucketLifecycle, wos:GetBucket等の操作に対応。操作対象はBucket。
S3 API対応表:
| S3 API | action |
|---|---|
| GetBucket(ListObjects) | wos:GetBucket |
| GetBucketLifecycle | wos:GetBucketLifecycle |
| PutBucketLifecycle | wos:PutBucketLifecycle |
| DeleteBucketLifecycle | wos:DeleteBucketLifecycle |
| ListMultipartUploads | wos:ListMultipartUploads |
コンソール操作対応表:
| Console operation | action |
|---|---|
| Buckets | |
| Create Bucket | wos:PutBucket |
| Buckets-Manage-File management | |
| Query (view) | wos:GetBucket |
| Buckets-Manage-Basic settings | |
| View-Back-To-Origin | wos:GetBucketMirror |
| Edit-Back-To-Origin | wos:PutBucketMirror |
| Delete-Back-To-Origin | wos:DeleteBucketMirror |
| View-life cycle settings | wos:GetBucketLifecycle |
| Create rule-life cycle settings | wos:PutBucketLifecycle |
| Edit-life cycle settings | wos:PutBucketLifecycle |
| Clear all rules-life cycle settings | wos:DeleteBucketLifecycle |
| Delete-life cycle settings | wos:DeleteBucketLifecycle |
| Create rules-CORS settings | wos:PutBucketCors |
| Edit-CORS settings | wos:PutBucketCors |
| View-CORS settings | wos:GetBucketCors |
| Delete-CORS settings | wos:DeleteBucketCors |
| Clear all rules-CORS settings | wos:DeleteBucketCors |
| Delete Bucket | wos:DeleteBucket |
| Buckets-manage-Domain Management | |
| View-domain name | wos:GetBucketDomain |
| Bind custom domain name | wos:PutBucketDomain |
| Modify protocol | wos:PutBucketDomain |
| Delete-domain name | wos:DeleteBucketDomain |
3. Object level operation: wos:GetObject, wos:PutObject, wos:DeleteObject, wos:AbortMultipartUpload等に対応。操作対象はObject。
S3 API対応表:
| S3 API | action |
|---|---|
| GetObject | wos:GetObject |
| HeadObject | wos:HeadObject |
| PutObject | wos:PutObject |
| PostObject | wos:PutObject |
| InitiateMultipartUpload | wos:PutObject |
| UploadPart | wos:PutObject |
| CompleteMultipartUpload | wos:PutObject |
| DeleteObject | wos:DeleteObject |
| MultiDelete | wos:DeleteObject |
| AbortMultipartUpload | wos:AbortMultipartUpload |
| ListParts | wos:ListParts |
| CopyObject | wos:GetObject,wos:PutObject |
| RestoreObject | wos:RestoreObject |
コンソール操作対応表:
| Console operation | action |
|---|---|
| Buckets-Manage-File management | |
| New folder | wos:PutFolder |
| Upload file | wos:PutObject |
| Delete | wos:DeleteObject |
| Rename | wos:PutObject |
| Restore | wos:RestoreObject |
| Configure Expiration Data | wos:DeleteObject |
Resourceはwos上に保存されるリソースを指します。リソースルールはwsc:wos:{region}:{bucket_owner}:{bucket_name}/{object_name}で、ワイルドカードをサポートします。regionフィールドは現在未サポートのため""固定。
resourceもリスト形式で、1つ以上のリソースを含みます。
Effectはステートメントの承認結果(allow/deny)を示し、それぞれ許可/拒否を意味します。複数ステートメントが同時にマッチした場合、denyが優先されます。
例:特定ディレクトリの削除禁止&他ファイルへのフルアクセス許可:
{
"version": "1",
"statement": [
{
"effect": "allow",
"action": [
"wos:*"
],
"resource": [
"wsc:wos:*:*:bucketname/*"
]
},
{
"effect": "deny",
"action": [
"wos:DeleteObject"
],
"resource": [
"wsc:wos:*:*:bucketname/test/*"
]
}
]
}