p4 protect
ユーザによるファイル、ディレクトリ、コマンドへのアクセスを管理します。
ここで説明するアクセス権限は、p4 grant-permission (グラフ)に記載されているグラフディポの権限とは異なっていることに注意してください。
構文
p4 [g-opts] protectp4 [g-opts] protect -op4 [g-opts] protect --convert-p4admin-comments -o | -i
説明
インストールが完了したら、すぐにp4 protectコマンドを実行することをお勧めします。
新しいHelixサーバをインストールすると、以下の処理が可能になります。
- Helixサーバを使用するすべてのユーザに対して、サービスへの接続を許可する
- すべてのHelixサーバユーザをスーパーユーザとして設定する
p4
protectコマンドを初めて実行したユーザがスーパーユーザになり、その他すべてのユーザには、すべてのファイルに対するwrite権限が設定されます。 p4 protectコマンドを使用して追加のコントロールを作成することをお勧めします。
p4 [g-opts] protect コマンドを実行すると、superアクセス権限を持つユーザが、プロテクションテーブルをテキスト形式で編集できるようになります。
p4 protectコマンドを使用してHelixサーバの権限を設定すると、以下の処理が可能になります。
- 特定のユーザがアクセスできるコマンドを制御する
- 特定のユーザが実行できるコマンドを制御する
- 次のコマンドを使用して定義されたユーザグループに対して権限を付与する:
p4 group - ユーザまたはグループの特定のパスについて、
p4 protectコマンドへのアクセス権限を付与する - ユーザに対して特定のアクセス権限を付与または拒否するには、
=read、=open、=write、=branchの各権限を使用します。それより下位の権限を再度付与する必要はありません。 - 特定のIPアドレスへのアクセスを制限し、そのIPアドレスを使用するユーザのみがHelixサーバコマンドを実行できるようにする
通常の操作で与えられるアクセスレベルは、主にlist、read、write、owner、superです。 openとreviewアクセスレベルはあまり使用されません。
通常は、以下のような運用方法になります。
- 特定のユーザやグループに対して、特定のアクセスレベルを付与する。
- アクセスレベルを詳細に制御する必要がある場合は、1つ以上のアクセス権限を個別に除外する。
詳細については、『Helix Coreサーバ管理者ガイド: 基本』の「安全なサーバの確立」の章を参照してください。
権限レベルとアクセス権限
ユーザのコマンドに対する権限の評価方法の例については、『Helix Coreサーバ管理者ガイド: 基本』の「プロテクションの実装のしくみ」を参照してください。
| 権限レベル/アクセス権限 | ユーザが実行できること |
|---|---|
|
|
すべてのHelixサーバメタデータにアクセスできますが、ファイルの内容にはアクセスできません。
|
|
|
|
|
|
この権限が拒否されている場合、ユーザはファイルに対して |
|
|
|
|
|
この権限が拒否されている場合、ユーザは |
|
|
上記のすべてを実行できます。さらに、 |
|
|
この権限が拒否されている場合、ユーザは開いているファイルをサブミットできません。 |
|
|
この権限が拒否されると、ユーザはファイルを |
|
|
Helixサーバにアクセスする外部プログラム専用のパーミッションです。 |
|
|
上記すべてに加え、メタデータへの変更をオーバーライドする管理者用コマンドが含まれますが、サービスの動作に影響することはありません。 これには、 |
|
|
上記のすべてに加え、さらに |
|
|
この権限を使用して、特定パスに対して |
フォームフィールド
p4 protectを実行すると、HelixサーバはProtections:フィールドのみのフォームを表示します。 各パーミッションは、Protections:に見出しの下でインデントされた専用の行に指定され、次の5つの値を使用してプロテクションを定義します。
| 列 | 説明 |
|---|---|
|
アクセスレベルまたはモード |
前項で定義された、 |
|
ユーザまたはグループ |
このプロテクションが |
|
グループ名またはユーザ名 |
ユーザ名または |
|
ホスト |
クライアントホストのIPアドレス。 IPv6アドレスおよびIPv4アドレスがサポートされています。 また、CIDR表記を使用していない場合にのみ、すべてのIPアドレスを参照するためにワイルドカード「 IPv6アドレスに システムは、
|
|
ディポファイルのパス |
Helixサーバのディポシンタックスで、このパーミッションが与えられているディポファイルのパス。 ファイルの指定は、Helixサーバのワイルドカードを含むことができます。 このマッピングをパーミッションセットから除外するには、設定値の頭にダッシュ( ディポが除外された場合、アクセスを拒否されたユーザは |
|
サブパス
|
サブプロテクションテーブルのルートパス。
このフィールドは、プロテクションテーブルには含まれていません。 |
|
更新
|
この仕様が最後に変更された日付(読み取り専用)。
このフィールドは、プロテクションテーブルには含まれていません。 |
除外マッピング
| 除外マッピングが設定されていない場合、 | 除外マッピングが設定されている場合、 |
|---|---|
|
マッピングの順序は関係ありません。 ユーザ、ユーザのIPアドレス、およびユーザがアクセスしようとしているファイルと適合するすべてのマッピングにリストされた権限レベルの中で最高のレベルがユーザに付与されます。 |
順序が関係します。 除外マッピングは、それより上の行にリストされているプロテクションのうち適合するものはすべて無効にします。 除外プロテクションでどのアクセスレベルが拒否されていても、適合するユーザ、ファイル、IPアドレスに対するすべてのアクセスレベルが拒否されます。 以下に例を示します。 除外マッピングを使用して、 |
注釈
プロテクションテーブルは解釈やデバッグが難しくなる場合があります。 そのような場合にコメントを付け加えることで、分かりやすくすることができます。
-
##記号を使用することで、行の最後にコメントを追加することができます。
write user * 10.1.1.1 //depot/test/... ## robinson crusoe
-
または、行の先頭に##を付けることで、コメント行を作成できます。
## robinson crusoe write user * 10.1.1.1 //depot/test/...
P4Adminツールを使用して作成したコメントはp4 protectのバージョン2016.1を使用して作成されたコメントと互換性がありません。 次のコマンドを使用することで、P4Adminで作成されたコメントを含むファイルをp4 protectタイプのコメントを含むファイルに変換することができます。
$ p4 protect --convert-p4admin-comments -o
その後、変換後のファイルを保存します。
コメントの変換が完了したら、p4 protectを使用してプロテクションを定義および管理する必要があります。P4Adminではp4
protectのコメントが解析できないため、変換後は使用することができません。
オプション
|
|
エディタを起動せずに、標準出力からフォームを読み取ります。 |
|
|
エディタを起動せずに、フォームを標準出力に書き出します。 |
|
|
P4Adminツールを使用して作成された既存のプロテクション形式(およびコメント)を、 |
|
|
詳細については、「グローバルオプション」を参照してください。 |
使用上の留意点
| ファイル引数にリビジョン指定子を使えるか? | ファイル引数にリビジョン範囲を使えるか? | 最低限必要なアクセスレベル |
|---|---|---|
|
使用不可 |
使用不可 |
|
各パーミッションのレベルはその下にあるすべてのアクセスレベルを含みます。
特殊な権限である=read、=open、=write、=branchを使用して、下位のアクセスレベルを自動的に包含しないようにオーバーライドできます。 これにより、個々の権限を無効にすることができます。後で下位の権限を再度付与する必要はありません。
例えば、管理者に管理コマンドの実行権限を与えつつ、ディポの特定の部分に対する変更権限を拒否したいという場合、権限テーブルを次のように設定することができます。
admin user joe * //... =write user joe * -//depot/build/... =open user joe * -//depot/build/...
この例では、ユーザjoeは管理機能を実行でき、この権限はシステム内のすべてのディポに適用されます。 admin権限レベルでは暗黙的にそれより下位にあるすべてのアクセスレベルが認められるため、joeは//depot/build/を含むシステム内のどのファイルにも、開く操作、書き込み、読み取り、一覧表示が可能です。 buildの階層をプロテクトするには、=writeおよび=openの排他行をテーブルに追加します。 ユーザjoeは、build階層にあるすべてのファイルを編集目的で開くことができなくなります。 また、既に開いている可能性のある、この階層で加えられた変更はサブミットすることができません。 ファイルの作成および変更は引き続き可能ですが、プロテクトされた階層//depot/build/...の外にそれらのファイルがある場合に限られます。
あるサーバ上のファイルを別のサーバからのリモートディポとして使用する(p4 depotで定義)のを制限または排除するには、remoteユーザ(または別のサーバが認証に用いるサービスユーザ)に対するプロテクションを作成してください。 リモートディポは、ユーザのPerforceサービスに関連付けられたサービスユーザか、remoteという名前の仮想ユーザによってアクセスされます。
使用できるコマンドは、アクセスレベルによって決まります。
下表は、各コマンドで最低限必要なアクセスレベルを示しています。 例えば、p4
addは少なくともopenのアクセス権を必要とするため、open、write、admin、またはsuperのアクセス権があればp4 addを実行できます。
いくつかのコマンド(例えば、p4 changeで、以前サブミットされたチェンジリストを編集するとき)は、管理者権限またはスーパーアクセス権限が必要な-fオプションを使用します。
| コマンド | アクセスレベル | 備考 |
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
サブミットされたファイルに属性を設定するための |
|
|
|
既存のメタデータや他のユーザのデータをオーバーライドするための |
|
|
|
|
|
|
|
|
|
|
|
このコマンドは特定のファイルに作用するものではありません。 つまり、ユーザがディポの少なくとも1つのファイルに対してアクセス権を指定されていれば、コマンド実行の権限が付与されています。 |
|
|
|
既存のメタデータや他のユーザのデータをオーバーライドするための |
|
|
|
|
|
|
|
|
|
|
|
ソースファイルに対するlistアクセス権、コピー先ファイルに対する |
|
|
|
既存のカウンタの値を表示するには、ディポ内の1つ以上のファイルに対するlistのアクセス権が必要です。カウンタの値を変更する、または新しいカウンタを作成するには、 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
このコマンドに対する |
|
|
|
このコマンドは特定のファイルに作用するものではありません。 つまり、ユーザがディポの少なくとも1つのファイルに対してアクセス権を指定されていれば、コマンド実行の権限が付与されています。 |
|
|
|
このコマンドに対する |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
このコマンドは特定のファイルに作用するものではありません。 つまり、ユーザがディポの少なくとも1つのファイルに対してアクセス権を指定されていれば、コマンド実行の権限が付与されています。 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
このコマンドに対する このコマンドに対する
|
|
|
|
このコマンドは特定のファイルに作用するものではありません。 つまり、ユーザがディポの少なくとも1つのファイルに対してアクセス権を指定されていれば、コマンド実行の権限が付与されています。 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ユーザは反映先ファイルの |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
このコマンドに対する 既存のメタデータや他のユーザのデータをオーバライドするための |
|
|
|
このコマンドは特定のファイルに作用するものではありません。 つまり、ユーザがディポの少なくとも1つのファイルに対してアクセス権を指定されていれば、コマンド実行の権限が付与されています。 |
|
|
|
|
|
|
|
既存のキーの値を表示するには、ディポ内の1つ以上のファイルに対するlistのアクセス権が必要です。キーの値を変更する、または新しいキーを作成するには、 |
|
|
|
|
|
|
|
|
|
|
|
このコマンドは特定のファイルに作用するものではありません。 つまり、ユーザがディポの少なくとも1つのファイルに対してアクセス権を指定されていれば、コマンド実行の権限が付与されています。 既存のメタデータや他のユーザのデータをオーバーライドするための |
|
|
|
このコマンドは特定のファイルに作用するものではありません。 つまり、ユーザがディポの少なくとも1つのファイルに対してアクセス権を指定されていれば、コマンド実行の権限が付与されています。 |
|
|
|
|
|
|
|
ライセンス使用量を表示する |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
処理を終了または取り消す、あるいは引数を参照するにはsuperのアクセス権限が必要です。 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
読み取りにはlist、新しいプロパティの追加または削除、およびプロパティ設定の表示や全ユーザおよびグループの表示には |
|
|
|
Helixプロキシに接続されている必要があります。 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
このコマンドは特定のファイルに作用するものではありません。 つまり、ユーザがディポの少なくとも1つのファイルに対してアクセス権を指定されていれば、コマンド実行の権限が付与されています。 |
|
|
|
このコマンドは特定のファイルに作用するものではありません。 つまり、ユーザがディポの少なくとも1つのファイルに対してアクセス権を指定されていれば、コマンド実行の権限が付与されています。 |
|
|
|
|
|
|
|
サーバIDを設定するには、superのアクセス権限が必要です。 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
注意
マスターが使用できない状態で、syncコマンドを使用してレプリカのディポを自分のレプリカワークスペースに同期すると、コマンドが失敗します。 これは、レプリカを使用して、マスター上のdb.haveテーブルを更新する必要があるためです。 |
|
|
|
sync -pオプションを指定してreadコマンドを実行すると、db.haveテーブルが更新されなくなります。 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
このコマンドに対する |
|
|
|
|
|
|
|
既存のメタデータや他のユーザのデータをオーバーライドするための |
|
|
|
|
|
|
|
|
|
|
|
このコマンドは特定のファイルに作用するものではありません。 つまり、ユーザがディポの少なくとも1つのファイルに対してアクセス権を指定されていれば、コマンド実行の権限が付与されています。
|
|
|
|
このコマンドは特定のファイルに作用するものではありません。 つまり、ユーザがディポの少なくとも1つのファイルに対してアクセス権を指定されていれば、コマンド実行の権限が付与されています。 構成可能変数 |
|
|
|
|
|
|
|
このコマンドは特定のファイルに作用するものではありません。 つまり、ユーザがディポの少なくとも1つのファイルに対してアクセス権を指定されていれば、コマンド実行の権限が付与されています。 |
関連コマンド
|
ユーザグループを作成または編集する |
|
|
すべてのユーザグループを一覧表示する |
|
| グラフタイプのディポとリポジトリに対する権限を許可する | p4 grant-permission (グラフ) |






