全パッケージ クラス階層 このパッケージ 前項目 次項目 インデックス
インタフェース java.security.acl.Acl
- public interface Acl
- extends Owner
アクセス制御リスト (ACL: Access Control List) を表すインタフェースです。ACL は、リソースに対するアクセスを保護するデータ構造体です。
ACL は、複数の ACL エントリをもつデータ構造体と見なすことができます。interface 型 AclEntry の各 ACL エントリには、特定のプリンシプルに関連するパーミッションのセットが含まれます (プリンシプルとは、個人ユーザやグループなどのエンティティをを表します)。さらに、各 ACL エントリには正または負の符号を付けて指定します。正の場合には、パーミッションが関連するプリンシプルに与えられます。負の場合には、パーミッションは拒絶されます。
各 ACL 中の ACL エントリは以下の規則に従います。
- 各プリンシプルは、多くても 1 つずつ、正と負の ACL エントリをもつことができる。すなわち、どんなプリンシンプルでも、複数の正または負の ACL エントリをもつことは許されていない。各エントリは、 (正負によって、それぞれ) 許すべきまたは拒絶すべきパーミッションのセットを指定する。
- エントリのないプリンシプルに対しては null の (空の) パーミッションのセットを持つものと見なす。
- プリンシプルに、あるパーミッションを許す正のエントリがあり、同時に同じパーミッションを拒絶する負のエントリがある場合には、結果は、そのパーミッションは許可も拒絶もされていないことになる。
- 個人のパーミッションは常に、それが属しているグループ (複数の場合もある) パーミッションに優先する。すなわち、個人の負のパーミッション (特定のパーミッションの拒絶) は、そのグループの正のパーミッションに優先する。また、個人の正のパーミッションはそのグループの負のパーミッションより優先する。
java.security.acl
パッケージは ACL と関連のデータ構造体 (ACL エントリ、グループ、パーミッションなど) を提供し、sun.security.acl
クラスはインタフェースのデフォルトの実装を提供します。たとえば、java.security.acl.Acl
は ACL に対するインタフェースを提供し、sun.security.acl.AclImpl
クラスはそのインタフェースのデフォルトの実装を提供します。
java.security.acl.Acl
インタフェースは、java.security.acl.Owner
インタフェースを拡張したものです。Owner インタフェースは、各 ACL の所有者のリストを維持するために使用します。所有者しか ACL の修正は許されません。たとえば、所有者だけが、ACL の addEntry
メソッドを呼び出し、新しい ACL エントリを ACL に追加することができます。
- 参照:
- AclEntry, Owner, getPermissions
-
addEntry(Principal, AclEntry)
- ACL エントリをこの ACL に追加する。
-
checkPermission(Principal, Permission)
- 指定のプリンシプルが指定のパーミッションをもっているかどうかをチェックする。
-
entries()
- この ACL 中のエントリの列挙を返す。
-
getName()
- この ACLの名前を返す。
-
getPermissions(Principal)
- 指定されたプリンシプル (個人またはグループのようなエンティティを表す) に対して許されているパーミッションのセットに対する列挙を返す。
-
removeEntry(Principal, AclEntry)
- この ACLから 1 つの ACL を削除する。
-
setName(Principal, String)
- この ACLの名前を設定する。
-
toString()
- ACL の内容を文字列表現で返す。
setName
public abstract void setName(Principal caller,
String name) throws NotOwnerException
- この ACLの名前を設定します。
- パラメータ:
- caller - このメソッドを起動するプリンシプル。この ACL の所有者でなければならない。
- name - この ACL に与える名前
- 例外: NotOwnerException
- callerプリンシプルがこの ACL の所有者でない場合
getName
public abstract String getName()
- この ACLの名前を返します。
- 返り値:
- この ACLの名前
addEntry
public abstract boolean addEntry(Principal caller,
AclEntry entry) throws NotOwnerException
- ACLエントリをこの ACL に追加します。 ACLエントリとは、プリンシプル (例: 個人またはグループ) をパーミッションのセットに関連付けるものです。各プリンシプルは、多くても 1 つずつ、正の ACLエントリ (プリンシプルに与えるパーミッションを指定する) と負の ACLエントリ (拒絶するパーミッションを指定する) をもつことしかできません。ACL 中にすでの同じ種類 (正、負) の ACLエントリが存在する場合には、 false が 返ってきます。
- パラメータ:
- caller - このメソッドを起動するプリンシプル。この ACL の所有者でなければならない。
- entry - この ACLに追加する ACLエントリ
- 返り値:
- 成功時は true。同じプリンシプルに対して同じ種類 (正、負) の ACLエントリがこの ACLにすでに存在する場合には、false が返る。
- 例外: NotOwnerException
- callerプリンシプルがこの ACL の所有者でない場合
removeEntry
public abstract boolean removeEntry(Principal caller,
AclEntry entry) throws NotOwnerException
- この ACLから 1 つの ACL を削除します。
- パラメータ:
- caller - このメソッドを起動するプリンシプル。この ACL の所有者でなければならない。
- entry - この ACLから削除する ACLエントリ
- 返り値:
- 成功時 true。エントリがこの ACL の一部でない場合には、falseが返る。
- 例外: NotOwnerException
- callerプリンシプルがこの ACL の所有者でない場合
getPermissions
public abstract Enumeration getPermissions(Principal user)
- 指定されたプリンシプル (個人またはグループのようなエンティティを表す) に
対して許されているパーミッションのセットに対する列挙を返します。許されるパーミッションのセットは以下のようにして決定されます。
- 指定されたプリンシプルに対して、この ACL中にエントリが存在しない場合には空のパーミッションのセットが返される。
- それ以外の場合には、指定されたプリンシプルのグループ パーミッションのセットが決定される (プリンシプルは 1つ以上のグループに属することができる。ここで、グループとはプリンシプルのグループのことで、Groupインタフェースによって表されるものである)。グループの正のパーミッション セットは、プリンシプルの属する各グループの正のすべてのパーミッションの和集合になる。グループの負のパーミッション セットは、プリンシプルの属する各グループの負のすべてのパーミッションの和集合になる。正と負の両方のパーミッション セットにあるパーミッションが存在した場合には、そのパーミッションは両方から削除される。
個人の正と負のパーミッション セットも決定される。正のパーミッション セットには、そのプリンシプルに対する正の ACLエントリ (存在する場合) 指定されているパーミッションが含まれる。同様に、負のパーミッション セットには、そのプリンシプルに対する負の ACLエントリで (存在する場合) 指定されているパーミッションが含まれる。個人の正 (または負) のパーミッション セットは、この ACL中に正 (または負) の ACLエントリが存在しない場合には null と見なされる。
この後、プリンシプルに与えられるパーミッションのセットが、個人のパーミッションをグループのパーミッションよりも常に優先するという単純な規則を使用して決定される。 すなわち、プリンシプルの個人の負のパーミッション セット (あるパーミッションの拒絶) はグループの正のパーミッション セットに優先し、プリンシプルの個人の正のパーミッション セットはグループの負のパーミッション セットに優先する。
- パラメータ:
- user - そのパーミッション セットを返すプリンシプル
- 返り値:
- プリンシプルに許されるパーミッションを指定するパーミッション セット
entries
public abstract Enumeration entries()
- この ACL 中のエントリの列挙を返します。
- 返り値:
- この ACL中のエントリの列挙
checkPermission
public abstract boolean checkPermission(Principal principal,
Permission permission)
- 指定されたプリンシプルが指定されたパーミッションをもっているかどうかをチェックします。
もつ場合には、trueが返ってきます。それ以外の場合には、falseが返ります。より特別な場合として、このメソッドは渡されたパーミッションが指定されたプリンシプルに対して許可されるパーミッション セットのメンバであるかどうかをチェックします。この許可されるパーミッションセットは、
getPermissions
メソッドが使用するものと同じアルゴリズムによって決定されます。
- パラメータ:
- principal - プリンシプル。有効な認証済みのプリンシプルを前提とする。
- permission - チェックする対象のパーミッション
- 返り値:
- プリンシプルが指定されたパーミッションをもつ場合には true、それ以外は false が返る。
- 参照:
- getPermissions
toString
public abstract String toString()
- ACL の内容を文字列表現で返します。
- 返り値:
- ACL 内容を文字列表現
- オーバーライド:
- クラス Object の toString
全パッケージ クラス階層 このパッケージ 前項目 次項目 インデックス