Helix Core P4コマンドリファレンス (2020.1)

p4 protect

ユーザによるファイル、ディレクトリ、コマンドへのアクセスを管理します。

注意

ここで説明するアクセス権限は、p4 grant-permission (グラフ)に記載されているグラフディポの権限とは異なっていることに注意してください。

構文

p4 [g-opts] protect
p4 [g-opts] protect -o p4 [g-opts] protect -i
p4 [g-opts] protect --convert-p4admin-comments -o | -i

説明

重要

以下の理由により、新しいHelixサーバをインストールしたら、すぐにp4 protectを実行することをお勧めします。

  • Helixサーバを使用するすべてのユーザに対して、サービスへの接続が許可されるため。
  • すべてのHelixサーバユーザがスーパーユーザとして認識されるため。

p4 protectコマンドを初めて実行したユーザがスーパーユーザになり、その他すべてのユーザには、すべてのファイルに対するwrite権限が設定されます。 p4 protectコマンドを使用して追加のコントロールを作成することをお勧めします。

p4 [g-opts] protect コマンドを実行すると、superアクセス権限を持つユーザが、プロテクションテーブルをテキスト形式で編集できるようになります。

以下のいずれかの方法でHelixサーバの権限を設定する場合は、p4 protectコマンドを使用します。

  • 特定のユーザがアクセスできるコマンドを制御する
  • 特定のユーザが実行できるコマンドを制御する
  • 次のコマンドを使用して定義されたユーザグループに対して権限を付与する: p4 group
  • ユーザまたはグループの特定のパスについて、p4 protectコマンドへのアクセス権限を付与する
  • =read=open=write=branchを除外マッピングと組み合わせて使用する
  • 特定のIPアドレスのみにアクセスを制限する

通常は、listreadwriteownersuperのいずれかのアクセス権を指定します。 openreviewアクセスレベルはあまり使用されません。

通常は、以下のような運用方法になります。

  1. 以下のいずれかに対して、特定のアクセスレベルを付与します。
    • グループ(ベストプラクティスとしてお勧めします)
    • 個別のユーザ(複数のユーザを1つのグループにまとめることができない場合)
  2. アクセスレベルを詳細に制御する必要がある場合は、1つ以上のアクセス権限を個別に除外する。
ヒント

「除外マッピング」の動作については、『Helix Coreサーバ管理者ガイド』の「プロテクションの実装のしくみ」を参照してください。

権限レベルとアクセス権限

権限レベル名に「=」というプレフィックスが付いている場合、その権限が拒否されるということを表しています。

パーミッションレベル/権限 ユーザが実行できること

list

すべてのHelixサーバメタデータにアクセスできますが、ファイルの内容にはアクセスできません。 p4 filesp4 clientp4 jobp4 describep4 branchなどのHelixサーバオブジェクトを記述するコマンドをすべて実行できます。

p4 describeのようなファイルを一覧表示するコマンドは、ユーザが最低listアクセス権を持っているファイルのみを一覧表示します。

read

list権限で許可されていることをすべて実行できます。さらに、ファイルのデータの読み取りを伴うコマンド(p4 printp4 diffp4 syncなど)もすべて実行できます。

=read

この権限が拒否されている場合、ユーザはファイルに対してp4 printp4 diffp4 syncを使用できません。 例えば、

=read group Dev1 * -//depot/dev/prodA/...

open

read権限で実行できることをすべて許可します。また、ファイルをp4 addp4 editp4 deletep4 integrateするパーミッションを与えます。 ただし、ファイルのロックやディポへのサブミットは許可されていません。

openアクセスレベルでは、ユーザにファイル変更を許可しますが、ディポへのファイルのサブミットは行いません。 一時的にコードラインを凍結させたいが開発者の作業を止めたくない場合や、試験担当者に対し、個人使用のためのコード変更は認めるがコードラインに永久的な変更を加えることは認めないような場合などに、このレベルの権限を割り当ててください。

=open

この権限が拒否されている場合、ユーザはp4 addp4 editp4 deletep4 integrateを使用してファイルを開くことはできません。 例えば、

=open group Dev1 * -//depot/dev/prodA/...

write

上記のすべてを実行できます。さらに、p4 submitによるファイルへの書き込み、p4 lockによるファイルのロックを実行できます。

=write

この権限が拒否された場合、ファイルを開いて編集することはできますが、ファイルをサブミットすることはできません。 例えば、

=write group Admins * -//depot/dev/prodA/...

この場合、製品リリース用に開発者が承認したファイルを、管理者が誤って変更することがなくなります。

=branch

この権限が拒否されると、ユーザはファイルをp4 integrateの反映元として使用できません。 例えば、

=branch group Dev1 * -//depot/dev/prodA/...

review

Helixサーバにアクセスする外部プログラム専用の権限です。 list権限とread権限で実行できることすべての権限を外部プログラムに与えます。また、p4 reviewp4 counterを実行する権限を与えます。 ただし、openおよびwrite権限は含まれません。

admin

上記すべてに加え、メタデータへの変更をオーバライドする管理者用コマンドが含まれますが、サービスの動作に影響することはありません。

これには、p4 branch -fp4 change -fp4 client -fp4 job -fp4 jobspecp4 label -fp4 obliteratep4 shelve -f -dp4 typemapp4 unlock -fp4 verifyが含まれます。

super

上記のすべてに加え、さらにp4 adminp4 counterp4 triggersp4 protect、およびp4 user -fによるユーザ作成機能などのスーパーユーザコマンドにもアクセスできます。

owner

この権限を使用して、特定パスに対してp4 protectを実行する権限を特定のユーザまたはグループに割り当てます。 詳細については、『Helix Coreサーバ管理者ガイド』の「アクセスの認証」を参照してください。

ストリーム仕様の権限

重要

リリース2020.1よりも前のリリースでは、ストリーム仕様専用のプロテクションモードはありませんでした。 ストリーム仕様の一覧表示権限、読み取り権限、編集権限は、対応するファイル仕様プロテクションモードを基に、以下のように認識されていました。

  • list 権限(特定のディポに対する権限)の場合、p4 streamsを実行して、そのディポ内のストリームを一覧表示することができる
  • open 権限またはwrite権限の場合(特定のファイル仕様に対する権限)、そのファイル仕様に一致するストリームルートを持つ任意のストリーム仕様を編集して保存することができる

リリース2020.1では、ストリーム仕様専用のプロテクションモードが導入されました。 デフォルトの場合、ここで説明した権限はプロテクションテーブル内に含めることができますが、構成可能変数dm.protects.streamspecの値を「1」に設定するまで使用することはできません。 プロテクションテーブル内にストリーム仕様の権限が含まれている状態で、dm.protects.streamspec構成可能変数の値を「1」に設定した場合、リリース2020.1よりも前の権限は適用されなくなります。また、adminユーザとsuperユーザを除くすべてのユーザについて、ストリーム仕様の権限を明示的に指定する必要があります。

古いリリースの権限をストリーム仕様の権限に実装する場合は、以下の操作を行います。

  • 以下のコマンドを実行して、readstreamspec

    readstreamspec group readgroup * //...

  • 権限を必要とするすべてのユーザが属するユーザグループを作成する。
  • 以下のコマンドを実行して、writestreamspec

    writestreamspec group writegroup * //...

  • 権限を必要とするすべてのユーザが属する別のユーザグループを作成する。

readstreamspec この権限を持つユーザは、次のコマンドを使用してストリーム仕様を表示することができます: p4 stream -o
=readstreamspec この権限が拒否されているユーザは、次のコマンドを実行することはできません: p4 stream -o
openstreamspec この権限を持つユーザは、ストリーム仕様について、元に戻す、衝突を解決する、保留する、編集用に開く、という操作を実行することができます。
=openstreamspec この権限が拒否されているユーザは、ストリーム仕様について、元に戻す、衝突を解決する、保留する、編集用に開く、という操作を実行することはできません。
writestreamspec この権限を持つユーザは、ストリーム仕様のサブミットと変更を行うことができます。
=writestreamspec この権限が拒否されている場合ユーザは、ストリーム仕様のサブミットや変更を行うことはできません。

フォームフィールド

p4 protectを実行すると、HelixサーバProtections:フィールドのみのフォームを表示します。 各権限は、Protections:に見出しの下でインデントされた専用の行に指定され、次の5つの値を使用してプロテクションを定義します。

説明

アクセスレベルまたはモード

前項で定義された、listreadopenwriteadminsuperownerreviewのいずれかのアクセスレベル、または=read=open=write=branchのいずれかの権限です。

ユーザまたはグループ

このプロテクションがuserまたはgroupに適用されるかを指定します。

グループ名またはユーザ名

ユーザ名またはp4 groupで定義したグループ名。 すべてのユーザにこの権限を与えるときは、ワイルドカード「*」を使用します。

ホスト

クライアントホストのIPアドレス(複数の場合は、コンマ区切りのIPアドレス)。

IPv6アドレスおよびIPv4アドレスがサポートされています。 また、CIDR表記を使用していない場合にのみ、すべてのIPアドレスを参照するためにワイルドカード「*」を使用できます。

IPv6アドレスに*ワイルドカードを使用する場合は、IPv6アドレス全体を角括弧で囲む必要があります。 例えば、[2001:db8:1:2:*][2001:db8:1:2::]/64に相当します。 CIDR表記を使用し、IPV6アドレスを角括弧で囲み、*ワイルドカードの使用を避けることをお勧めします。

システムは、dm.proxy.protects変数の設定によりどのようにしてホストのアドレスを作成するのでしょうか。 デフォルトでは、この変数は1に設定されています。 これは、クライアントのホストが中間サーバ(プロキシ、ブローカ、レプリカ)を使用してサーバにアクセスしている場合、プレフィックスproxy-がクライアントホストアドレスの前に付き、その接続が直接ではないことを示すことを意味します。 proxy-*Hostフィールドに指定した場合、プロキシ、ブローカ、レプリカを経由するすべての接続に影響します。 proxy-10.0.0.5のような値は、IPアドレスが10.0.0.5のクライアントマシンが中間サーバを通してサーバにアクセスしていると認識します。

dm.proxy.protects変数を0に設定すると、プレフィックスproxy-が削除され、プロテクションエントリを1セット書き込むことができます。これは、直接接続しているクライアントと中間サーバを経由して接続しているクライアントの両方に適用されます。 これは便利ですが、中間サーバを経由して接続することに問題がある場合、安全性が低下します。 この設定を使用する場合は、すべての中間サーバがリリース2012.1以降になっている必要があります。

ディポファイルのパス

Helixサーバディポシンタックスで、この権限が与えられているディポファイルのパス。 ファイルの指定は、Helixサーバワイルドカードを含むことができます。

このマッピングを権限セットから除外するには、設定値の頭にダッシュ(-)を付けます。

ディポが除外された場合、アクセスを拒否されたユーザはp4 depotsの出力でディポを見ることができなくなります。 また、このユーザに対してデフォルトのブランチビュー、クライアントビュー、ラベルビューでディポは表示されません。

サブパス

 

サブプロテクションテーブルのルートパス。

このフィールドは、プロテクションテーブルには含まれていません。

更新

 

この仕様が最後に変更された日付(読み取り専用)。

  • この日付を変更すると、プロテクションテーブルが保存されなくなります。
  • このフィールドを省略すると、変更チェックがスキップされます。

このフィールドは、プロテクションテーブルには含まれていません。

注釈

プロテクションテーブルは解釈やデバッグが難しくなる場合があります。 そのような場合にコメントを付け加えることで、分かりやすくすることができます。

  • ##記号を使用することで、行の最後にコメントを追加することができます。

    write user *   10.1.1.1   //depot/test/...  ## my comment
  • または、行の先頭に##記号を付けることで、コメント行を作成できます。

    ## my comment
    write user *   10.1.1.1   //depot/test/...
警告

P4Adminツールを使用して作成したコメントには、バージョン2016.1以降のp4 protectコマンドを使用して作成されたコメントとの互換性がありません。 次のコマンドを使用することで、P4Adminで作成されたコメントを含むファイルをp4 protectタイプのコメントを含むファイルに変換することができます。

$ p4 protect --convert-p4admin-comments -o

その後、変換後のファイルを保存します。

コメントの変換が完了したら、p4 protectを使用してプロテクションの定義と管理を行う必要があります。P4Adminではp4 protectのコメントが解析できないため、変換後のコメントは使用できなくなります。

オプション

-i

エディタを起動せずに、標準出力からフォームを読み取ります。

-o

エディタを起動せずに、フォームを標準出力に書き出します。

--convert-p4admin-comments

P4Adminツールを使用して作成された既存のプロテクション形式(およびコメント)を、p4 protectで使用可能な形式に変換します。

g-opts

詳細については、「グローバルオプション」を参照してください。

使用上の留意点

ファイル引数にリビジョン指定子を使えるか? ファイル引数にリビジョン範囲を使えるか? 最低限必要なアクセスレベル

使用不可

使用不可

super

各権限のレベルはその下にあるすべてのアクセスレベルを含みます。

特殊な権限である=read=open=write=branchを使用して、下位のアクセスレベルを自動的に包含しないようにオーバーライドできます。 これにより、後で下位の権限を再設定することなく、権限を個別に無効にすることができます

例えば、管理者に管理コマンドの実行権限を与えつつ、ディポの特定の部分に対する変更権限を拒否したいという場合、権限テーブルを次のように設定することができます。

Protections:
    admin       user      joe       *       //...
    =write      user      joe       *       -//depot/build/...
    =open       user      joe       *       -//depot/build/...

この例では、ユーザjoeは管理機能を実行でき、この権限はシステム内のすべてのディポに適用されます。 admin権限レベルでは暗黙的にそれより下位にあるすべてのアクセスレベルが認められるため、joe//depot/build/を含むシステム内のどのファイルにも、開く操作、書き込み、読み取り、一覧表示が可能です。 buildの階層をプロテクトするには、=writeおよび=openの排他行をテーブルに追加します。

  • =open」排他行により、ユーザjoeは、次のディレクトリ内のファイルを編集用として開くことができなくなります: //depot/build/
  • =write」排他行により、ユーザjoeは、次のディレクトリ内で行った変更内容をサブミットできなくなります: //depot/build/

あるサーバ上のファイルを別のサーバからのリモートディポとして使用する(p4 depotで定義)のを制限したり排除するには、remoteユーザ(または別のサーバが認証に用いるサービスユーザ)に対するプロテクションを作成してください。 リモートディポは、ユーザのPerforceサービスに関連付けられたサービスユーザか、remoteという名前の仮想ユーザによってアクセスされます。

使用できるコマンドは、アクセスレベルによって決まります。 例えば、p4 addは少なくともopenのアクセス権を必要とするため、openwriteadmin、またはsuperのアクセス権があればp4 addを実行できます。

以前にサブミットされたチェンジリストを編集する場合のp4 changeコマンドなど、一部のコマンドでは、adminアクセス権またはsuperアクセス権を必要とする-fオプションを使用します。

各コマンドの詳細については、『Helix Coreサーバ管理者ガイド』の「Helixサーバコマンドが必要とするアクセスレベル」を参照してください。

関連コマンド

ユーザグループを作成または編集する

p4 group

すべてのユーザグループを一覧表示する

p4 groups

グラフタイプのディポとレポジトリに対する権限を許可する p4 grant-permission (グラフ)