SlideShare ist ein Scribd-Unternehmen logo
1 von 17
Downloaden Sie, um offline zu lesen
とたに
2013©
Alfresco勉強会
Alfrescoの権限管理について
2013年5月9日
2013年5月10日金曜日
2012.09.06 2012©
前口上
2
なんとなくは理解しているAlfrescoの権限管理
●おおよその全体像は理解できている。
ただし、
●権限をカスタマイズする方法
●低レベルでの権限制御の仕組み
については普段あまり意識しないので理解できていない、人が
(私も含めて)多い
いい機会なので、勉強会テーマとしてまとめてみました。
2013年5月10日金曜日
2012.09.06 2012©
Alfrescoの権限イメージ
3
ユーザA
グループC
コーディネータ
共同作業者
コンシューマ
編集者
ユーザB
2013年5月10日金曜日
2012.09.06 2012©
もう少しフォーマルなモデル
4
ユーザ
グループ
Authority Node
ロール/Permission
親子継承
Node
Authority ロール/Permission
ユーザA Cordinator
グループC Collaborator
ドメイン内での情報表現形式
ドメイン内の権限モデル
ACL(Access Control List)
ACE
親フォルダからの継承有無
2013年5月10日金曜日
2012.09.06 2012©
ロールとPermission
5
ロールとPermissonは違うのか
●Permissionをいくつかまとめたものがロール
●ACLの中ではロールもPermissionもどちらも指定可能
ReadProperty
Write
Lock
Role A
2013年5月10日金曜日
2012.09.06 2012©
permissionDefinitions.xml①
6
●Permissonとロールを定義
PermissionGroup Permission
*
PermissionGroup
* 0..*
grantedTo
<permissionGroup name="Read" expose="true" allowFullControl="false">
<includePermissionGroup type="sys:base" permissionGroup="ReadProperties"/>
<includePermissionGroup type="sys:base" permissionGroup="ReadChildren"/>
<includePermissionGroup type="sys:base" permissionGroup="ReadContent"/>
</permissionGroup>
...
<permissionGroup name="ReadProperties" expose="true" allowFullControl="false" />
...
<permission name="_ReadProperties" expose="false" >
<grantedToGroup permissionGroup="ReadProperties" />
<requiredPermission on="parent" name="_ReadChildren" implies="false"/>
</permission>
2013年5月10日金曜日
2012.09.06 2012©
permissionDefinitions.xml②
7
PermissionSet
PermissionSet
type
PermissionGroup*
●typeにはノードタイプが指定されている。
●cm:cmobjectのPermissionSet以下にロールに相当するCoordinatorや
CollaboratorのPermissionGroupが定義されている。
<permissionSet type="cm:cmobject" expose="selected">
<permissionGroup name="Administrator" allowFullControl="true" expose="false" /
>
<permissionGroup name="Coordinator" allowFullControl="true" expose="true" />
<permissionGroup name="Collaborator" allowFullControl="false" expose="true">
<includePermissionGroup permissionGroup="Editor" type="cm:cmobject" />
<includePermissionGroup permissionGroup="Contributor" type="cm:cmobject" />
</permissionGroup>
2013年5月10日金曜日
2012.09.06 2012©
permissionDefinitions.xml③
8
定義されているPermissionSet
...
sys:base
cm:cmobject
cm:content
cm:folder
cm:ownable
cm:lockable
FullControl Read Write Delete
Administrator Coordniator Contributor
...
...
Administrator Coordniator Contributor ...
Administrator Coordniator Contributor ...
TakeOwnership SetOwner
CheckOut CheckIn ...
2013年5月10日金曜日
2012.09.06 2012©
ロール間の関係
9
Coordinator allowFullControl
Collaborator
Editor Contributor
Consumer
sys:base AddChildren
sys:base ReadPermissions
sys:base Read
sys:base Write
cm:lockable Write
sys:base ReadPermissions
2013年5月10日金曜日
2012.09.06 2012©
Shareのロール
10
Shareのサイトロールとグループ
<Site>_SiteManager
<Site>_SiteCollaborator
<Site>_SiteContributor
<Site>_SiteConsumer
SiteManager
SiteCollaborator
SiteContributor
SiteConsumer
●sitePermissionDefinitions.xmlに定義
●同名のグループがサイトごとに作られる
ロール グループ
2013年5月10日金曜日
2012.09.06 2012©
低レベルの操作権限コントロール(1)
11
Acegi
●Javaのパーミッション制御ライブラリ
●ACL
●Java Class Methodベースのセキュリティ
●現Spring Security
Permissionとのマッピング
/alfresco/WEB-INF/classes/alfresco/public-services-security-context.xml
<bean id="NodeService_security"
class="org.alfresco.repo.security.permissions.impl.acegi.MethodSecurityInterceptor">
<property name="authenticationManager"><ref bean="authenticationManager"/></property>
<property name="accessDecisionManager"><ref local="accessDecisionManager"/></property>
<property name="afterInvocationManager"><ref local="afterInvocationManager"/></property>
<property name="objectDefinitionSource">
<value>
org.alfresco.service.cmr.repository.NodeService.getStores=ACL_ALLOW,AFTER_ACL_NODE.sys:base.ReadProperties
org.alfresco.service.cmr.repository.NodeService.createStore=ACL_METHOD.ROLE_ADMINISTRATOR
org.alfresco.service.cmr.repository.NodeService.exists=ACL_ALLOW
org.alfresco.service.cmr.repository.NodeService.getNodeStatus=ACL_NODE.
0.sys:base.ReadProperties
...
2013年5月10日金曜日
2012.09.06 2012©
低レベルの操作権限コントロール(2)
12
Permissionの種類
ACL_NODE
(AFTER_ACL_NODE)
ACL_ALLOW/ACL_DENY
ACL_METHOD
PermissionDefinitions.xmlに定義されている
ノードタイプとPermissionGroupに対応
AFTER_ACL_NODEは戻り値に対するチェック
許可/拒否
ACL_METHOD.ROLE_ADMINISTRATOR
のケースでのみ使用されている
引数以下のPermissionを持つ場合にメソッド実行を
許可
2013年5月10日金曜日
2012.09.06 2012©
おまけ(本当に話したかったこと)
13
ANDでの権限解決
●たまに実現できるかどうかを質問される
●もちろんデフォルトでは出来ない。
●2つのグループ両方の所属しているメンバのみ、特定の権限が与えられる
グループOC グループManager
user1 user2 user3
2013年5月10日金曜日
2012.09.06 2012©
おまけ(本当に話したかったこと)
14
デモ
2013年5月10日金曜日
2012.09.06 2012©
おまけ(本当に話したかったこと)
15
実現方法
if (authorisations.contains(ace.getAuthority()) && granters.contains(ace.getPermission()))
{
{
return true;
}
}
// Intersection customize
if ( ace.getAuthority().startsWith("AND(")) {
	 //System.out.println("## ace.getAuthority: " + ace.getAuthority());
	 Pattern p = Pattern.compile("AND((.*), (.*))");
	 Matcher matcher = p.matcher(ace.getAuthority());
	 matcher.find();
	 String auth1 = matcher.group(1);
	 String auth2 = matcher.group(2);
	
	 //System.out.println("## auth1: " + auth1);
	 //System.out.println("## auth2: " + auth2);
	
	 if (authorisations.contains(auth1) && authorisations.contains(auth2) &&
	 	 	 granters.contains(ace.getPermission()) ) {
	 	 return true;
	 }
}
IntersectPermissionService#AclTest#isGranted
2013年5月10日金曜日
2012.09.06 2012©
おまけ(本当に話したかったこと)
16
モジュールのソースコード
●https://github.com/to2y/AlfrescoIntersectionPermission
2013年5月10日金曜日
2013年5月10日金曜日

Weitere ähnliche Inhalte

Mehr von Takeshi Totani

20140129 alfresco addons
20140129 alfresco addons20140129 alfresco addons
20140129 alfresco addonsTakeshi Totani
 
Alfresco onlineeditbywebdav 2013
Alfresco onlineeditbywebdav 2013Alfresco onlineeditbywebdav 2013
Alfresco onlineeditbywebdav 2013Takeshi Totani
 
20130925 alfresco study18performancetuning
20130925 alfresco study18performancetuning20130925 alfresco study18performancetuning
20130925 alfresco study18performancetuningTakeshi Totani
 
20130801 alfresco study17customizemap
20130801 alfresco study17customizemap20130801 alfresco study17customizemap
20130801 alfresco study17customizemapTakeshi Totani
 
20130606 alfresco study16audit
20130606 alfresco study16audit20130606 alfresco study16audit
20130606 alfresco study16auditTakeshi Totani
 
JJUGナイトセミナー オープンソースポータルLiferayの紹介とLiferay IDEを使った簡単ポートレット開発
JJUGナイトセミナー オープンソースポータルLiferayの紹介とLiferay IDEを使った簡単ポートレット開発JJUGナイトセミナー オープンソースポータルLiferayの紹介とLiferay IDEを使った簡単ポートレット開発
JJUGナイトセミナー オープンソースポータルLiferayの紹介とLiferay IDEを使った簡単ポートレット開発Takeshi Totani
 
第7回Alfresco勉強会資料 カスタムのオンライン編集
第7回Alfresco勉強会資料 カスタムのオンライン編集第7回Alfresco勉強会資料 カスタムのオンライン編集
第7回Alfresco勉強会資料 カスタムのオンライン編集Takeshi Totani
 
Alfresco study3 alfresco4
Alfresco study3 alfresco4Alfresco study3 alfresco4
Alfresco study3 alfresco4Takeshi Totani
 

Mehr von Takeshi Totani (8)

20140129 alfresco addons
20140129 alfresco addons20140129 alfresco addons
20140129 alfresco addons
 
Alfresco onlineeditbywebdav 2013
Alfresco onlineeditbywebdav 2013Alfresco onlineeditbywebdav 2013
Alfresco onlineeditbywebdav 2013
 
20130925 alfresco study18performancetuning
20130925 alfresco study18performancetuning20130925 alfresco study18performancetuning
20130925 alfresco study18performancetuning
 
20130801 alfresco study17customizemap
20130801 alfresco study17customizemap20130801 alfresco study17customizemap
20130801 alfresco study17customizemap
 
20130606 alfresco study16audit
20130606 alfresco study16audit20130606 alfresco study16audit
20130606 alfresco study16audit
 
JJUGナイトセミナー オープンソースポータルLiferayの紹介とLiferay IDEを使った簡単ポートレット開発
JJUGナイトセミナー オープンソースポータルLiferayの紹介とLiferay IDEを使った簡単ポートレット開発JJUGナイトセミナー オープンソースポータルLiferayの紹介とLiferay IDEを使った簡単ポートレット開発
JJUGナイトセミナー オープンソースポータルLiferayの紹介とLiferay IDEを使った簡単ポートレット開発
 
第7回Alfresco勉強会資料 カスタムのオンライン編集
第7回Alfresco勉強会資料 カスタムのオンライン編集第7回Alfresco勉強会資料 カスタムのオンライン編集
第7回Alfresco勉強会資料 カスタムのオンライン編集
 
Alfresco study3 alfresco4
Alfresco study3 alfresco4Alfresco study3 alfresco4
Alfresco study3 alfresco4
 

Kürzlich hochgeladen

TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 

Kürzlich hochgeladen (8)

TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 

20130509 alfresco study15permission