S3認証情報を制限してアクセスを確認する
S3認証情報を権限、プロトコル、ワークスペース、フォルダー、アドレス、時間帯、使用量で制限し、許可される操作と拒否されるオブジェクト操作を確認します。
最終確認日
スクリーンショットは英語版の画面です。
S3リクエストは、認証情報とワークスペースに設定されたすべての制限を通過する必要があります。APIキーの権限は操作を制限し、プロトコルでS3ゲートウェイを許可する必要があります。ワークスペースとフォルダーの設定は場所を制限し、実行者の現在のワークスペースロールによってアクセスがさらに制限される場合があります。認証情報を作成できても、その後のロールやメンバー資格の変更より優先されることはありません。
手順
dosyaではS3用に3種類のAPIキー権限を選べます。
| 権限 | 想定されるS3の用途 | 意図的に拒否される操作 |
|---|---|---|
| 読み取り専用 | バケットとオブジェクトの一覧表示、メタデータの確認、オブジェクトのダウンロード。 | アップロードではAPI key scope 'read' cannot upload filesが返ります。削除とコピーにもフルアクセスが必要です。 |
| アップロードのみ | 保存済みの内容を公開せずに新しいオブジェクトを追加。 | 一覧取得ではAPI key scope 'upload' cannot list files、読み取りではAPI key scope 'upload' cannot download filesが返ります。 |
| フルアクセス | ロールでも許可される場合に、対応クライアントの操作で読み取り、アップロード、コピー、移動、削除。 | ロール権限、ロック、固定先、使用量制限、ワークスペースポリシーは引き続き適用されます。 |
S3オブジェクトを削除すると、dosyaのファイルはゴミ箱に移動し、204が返ります。ストレージは直ちに解放されません。キーにはフルアクセス、ロールにはそのオブジェクトに対するdelete_own_filesまたはdelete_any_fileが必要です。ゴミ箱から復元できる場合でも、aws s3 rmは破壊的な操作として扱ってください。
範囲を絞ったキーを作成する
- プロフィール → APIキーにサインインし、API:APIキーを作成を選択してください。
- 用途にクライアントを識別するラベルを入力し、何ができますか?で読み取り専用、アップロードのみ、フルアクセスのいずれかを選択してください。
- 制限と有効期限を展開し、**アクセス範囲はどこまでですか?**を開いてください。
- プロトコルで選択したもののみを選び、「S3」ゲートウェイをオンにしてください。S3をオフのままにすると、認証情報の有効化時に許可されていませんが表示され、ゲートウェイは
This API key is not permitted to use the S3 gatewayを返します。 - 正確なワークスペースを選択してください。クライアントからそのフォルダーと配下だけを参照できるようにするにはフォルダーを選択してください。固定されたキーでは、選択したフォルダーがS3のルートになります。
- クライアントの要件が一定している場合は、許可するIP範囲、毎週指定した曜日と時間帯のみ、または**どれくらい利用できますか?**の制限を追加してください。使用量欄が空の場合はキーに明示的な制限はありませんが、プランとロールの上限は適用される場合があります。
- 有効期限を選び、キーを説明する文章を確認してキーを生成を選択してください。一度だけ表示される
dos_の値を保存してください。 - 新しいキーを展開し、S3認証情報の横の有効化を選択して、表示された
access_key_idとsecret_access_keyの両方を保存してください。シークレットは後から取得できません。
S3認証情報はキーのスコープ、アクセス範囲、接続元の条件、有効期限、使用量制限を引き継ぎます。認証情報がすでにある場合、有効化ではS3 credentials already exist for this API key. Delete and recreate to regenerate.が返ります。作成後のAPIキーは編集できません。重複した設定を作成を使い、修正した代替キーを作成してテストした後、古いキーを無効化してください。


クライアントを設定する
エンドポイントにhttps://api.dosya.dev/s3、リージョンにus-east-1、バケット名にワークスペースIDを使用してください。表示名はバケットの識別子ではありません。
export AWS_ACCESS_KEY_ID='REPLACE_WITH_DOSYA_ACCESS_KEY_ID'
read -r -s -p 'S3 secret: ' AWS_SECRET_ACCESS_KEY
printf '\n'
export AWS_SECRET_ACCESS_KEY
DOSYA_WORKSPACE_ID='REPLACE_WITH_WORKSPACE_ID'
aws --endpoint-url https://api.dosya.dev/s3 --region us-east-1 \
s3 ls "s3://$DOSYA_WORKSPACE_ID/"
フォルダーに固定されたキーでは、パスは選択したフォルダーから始まります。Webアプリ上のフォルダーパスを先頭に追加しないでください。固定先の下に同じ名前の子フォルダーを探すことになります。
境界の両側をテストする
機密性のないファイルと、選択したスコープに適したコマンドを使用してください。
printf 'S3 permission check\n' > s3-permission-check.txt
# Upload test: suitable for Upload only or Full access.
aws --endpoint-url https://api.dosya.dev/s3 --region us-east-1 \
s3 cp s3-permission-check.txt "s3://$DOSYA_WORKSPACE_ID/tests/s3-permission-check.txt"
# Read test: suitable for Read only or Full access.
aws --endpoint-url https://api.dosya.dev/s3 --region us-east-1 \
s3 cp "s3://$DOSYA_WORKSPACE_ID/tests/s3-permission-check.txt" ./received.txt
次に、失敗するはずの影響のないリクエストを実行してください。アップロード専用キーでの一覧取得、読み取り専用キーでのアップロード、ワークスペース固定キーでの別のワークスペースIDの使用、フォルダー固定先の外にある同階層パスへのリクエストのいずれかを試します。HTTP 403とAccessDeniedを含むS3 XMLエラーが返ります。別のワークスペースへの試行ではThis API key is pinned to a different workspaceが返ります。
ワークスペースロールにはS3ゲートウェイを使用が必要です。オブジェクトの一覧取得にはファイルページへのアクセスも必要です。ダウンロードにはdownload_files、アップロードにはupload_files、存在しないパスのフォルダーを自動作成するにはcreate_foldersが必要です。関連する拒否にはThis role is not permitted to use the S3 gateway、This role cannot list files、Download not allowed、Upload not allowed、Creating folders is not allowedがあります。
別途、ユーザーごとに毎分600リクエスト、IPごとに毎分1,200リクエストの制限があります。ゲートウェイはこれらの制限より先に、明示的なキーとロールのリクエスト使用量制限を確認します。キーまたはロールの使用量による拒否ではHTTP 429とXMLのSlowDown、Retry-Afterが返ります。別のリクエスト制限ではHTTP 429とJSONの{"ok":false,"error":"Too many requests"}、Retry-Afterが返ります。レスポンスの理由を読み、Retry-Afterに従ってください。同時実行数による拒否では同時実行数を減らしてください。待機したり有効な認証情報を交換したりしても、使い切ったバイト数の許容量は補充されません。
有効期限、固定先、無効化
有効期限が切れたAPIキーでは認証もS3認証情報の発行もできません。選択した固定先フォルダーがゴミ箱に移動または削除されると、リクエストはThis API key's anchor folder is no longer availableで拒否されます。後から別のフォルダーに制限されたメンバーは、許可された階層の外にある認証情報の固定先を使用できません。
APIキーを無効化すると、そのベアラートークンと紐付くS3アクセスキーでは認証できなくなります。無効化は元に戻せないため、バックアップや自動処理で使用中の認証情報を無効化する前に、テスト済みの代替情報でS3クライアントを更新してください。アップロード済みのファイルはdosyaに残り、無効化しても削除や回収はされません。
期待される結果
必要な操作は選択したバケットとフォルダー内で成功し、計画した範囲外または誤ったスコープのリクエストにはAccessDeniedが返ります。キーの行には権限、S3プロトコル、アクセス範囲、有効期限、最終使用日時が表示され、認証情報を個別に監査して無効化できます。
関連ガイド
この記事は役に立ちましたか?
評価の結果を読み込んでいます…
投票すると、回答を変更できるように、必要な投票用Cookieが最長180日間保存されます。
質問と回答
このガイドの手順について質問できます。質問は確認後に公開されます。
公開の質問には、アカウントの詳細、認証情報、非公開ファイルを含めないでください。これらについては 非公開サポート をご利用ください。
質問を読み込んでいます…
dosyaアカウントにサインインすると、質問を投稿できます。