ユーザーファイルのアップロード
- プラン: Free、Premium、Ultimate
- 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated
ユーザーは、次の場所にアップロードできます:
- プロジェクトのイシューまたはマージリクエスト。
- グループのエピック。
GitLabは、認証されていないユーザーがURLを推測できないように、これらのアップロードされたファイルに対して、ランダムな32文字のIDを持つダイレクトURLを生成します。このランダム化により、機密情報を含むファイルに対してある程度のセキュリティが提供されます。
ユーザーがGitLabイシュー、マージリクエスト、およびエピックにアップロードしたファイルには、URLパスに/uploads/<32-character-id>が含まれています。
不明または信頼できないソースからアップロードされたファイルをダウンロードする際は、特にそのファイルが実行可能ファイルまたはスクリプトである場合は、注意してください。
アップロードされたファイルのアクセス制御
以下にアップロードされた画像以外のファイルへのアクセス制御:
- イシューまたはマージリクエストは、プロジェクトの表示レベルによって決定されます。
- グループエピックは、グループの表示レベルによって決定されます。
パブリックプロジェクトまたはグループの場合、イシュー、マージリクエスト、またはエピックが機密情報であっても、誰でもダイレクトアタッチメントURLからこれらのファイルにアクセスできます。プライベートプロジェクトと内部プロジェクトの場合、GitLabは、認証されたプロジェクトメンバーのみが、PDFなどの画像以外のファイルアップロードにアクセスできることを保証します。デフォルトでは、画像ファイルには同じ制限はなく、誰でもURLを使用して表示できます。画像ファイルを保護するには、すべてのメディアファイルの認可チェックを有効にすると、認証されたユーザーのみが表示できるようになります。
画像の認証チェックにより、通知メールの本文に表示の問題が発生する可能性があります。メールは、GitLabで認証されていないクライアント(Outlook、Apple Mail、またはモバイルデバイスなど)から頻繁に読まれます。クライアントがGitLabに対して認可されていない場合、メール内の画像は壊れて表示されず、利用できません。
すべてのメディアファイルの認可チェックを有効にする
認証されたプロジェクトメンバーのみが、プライベートプロジェクトおよび内部プロジェクトで画像以外の添付ファイル(PDFを含む)を表示できます。
プライベートまたは内部プロジェクトの画像ファイルに認証要件を適用するには:
前提要件:
- プロジェクトのメンテナーロールまたはオーナーロールを持っている必要があります。
- プロジェクトの表示レベルの設定は、プライベートまたは内部である必要があります。
すべてのメディアファイルの認証設定を構成するには:
- 左側のサイドバーで、検索または移動先を選択して、プロジェクトを見つけます。
- 設定 > 一般を選択します。
- 可視性、プロジェクトの機能、権限を展開します。
- プロジェクトの表示レベルまでスクロールし、メディアファイルを表示するには認証が必要を選択します。
パブリックプロジェクトでは、このオプションを選択できません。
アップロードされたファイルを削除
そのファイルに機密情報が含まれている場合は、アップロードされたファイルを削除する必要があります。そのファイルを削除すると、ユーザーはそのファイルにアクセスできなくなり、ダイレクトURLは404エラーを返します。
プロジェクトオーナーとメンテナーは、インタラクティブGraphQLエクスプローラーを使用して、GraphQLエンドポイントにアクセスし、アップロードされたファイルを削除できます。
例:
mutation{
uploadDelete(input: { projectPath: "<path/to/project>", secret: "<32-character-id>" , filename: "<filename>" }) {
upload {
id
size
path
}
errors
}
}オーナーまたはメンテナーロールを持たないプロジェクトメンバーは、このGraphQLエンドポイントにアクセスできません。