2024.2.5
ADPのユーザに割り当てる役割の基礎(後編)
ADPのユーザに割り当てる「役割」について前回解説しました。まだ見ていない方は先にご覧下さい。
ユーザに割り当てる「役割」には結構クセがあって設定には注意を要するのでした。前編に続く本稿では「役割」に関するさらに細かな権限周りの仕様を解説します。
- Apple Developer へのアクセス権を得られる役割
- Apple Developer へのアクセス権を付与できる役割
- アプリのアクセス権と役割
- アプリごとに役割を変えることはできない
- ABMのユーザや役割はADPに関係ない
順に見ていきましょう。
Apple Developer へのアクセス権を得られる役割
証明書やProvisioning Profile等、アプリの開発フェーズで必要なものを作成するのが Apple Developer サイトです。
前編の権限を細かくコントロールできないで解説した通りですが、この Apple Developer サイトを触って貰うには ADP のユーザを招待する時に「その他のリソース」の権限を付与する必要があります。
このチェックをONにしていないと、当該のユーザに Apple Developer サイトを操作してもらうことができません。そのユーザが開発会社の実装担当者なら Xcode でまともにデバッグできないという事態にも陥りますから、然るべきユーザに漏れなく付与しなければなりません。
権限付与に際し注意を要するのは、この Apple Developer へのアクセス権はどんなユーザに対してでも付与できるものではないという点です。アクセス権を得られる「役割」は限定されているのですね。
役割 | Apple Developer へのアクセス権 | 付与しないという設定 |
---|---|---|
Admin | 自動的に必ず付与される | 不可 |
App Manager | 付与できる | 可 |
Developer | 付与できる | 可 |
上記以外 | 付与できない | – |
この表から分かるように結構限られています。Marketing の「役割」を指定したユーザに Apple Developer へのアクセス権を付与する…といったことはできません。また、Admin を割り当てるということは Apple Developer サイトへのアクセス権も無条件に与える点にも留意が必要です。
Apple Developer へのアクセス権を付与することは、証明書やID、Provisioning Profile など大事なデータやファイルの操作に繋がります。誰に、またどの「役割」の人に付与するか慎重に検討しましょう。
Apple Developer へのアクセス権を付与できる役割
Apple Developer へのアクセス権を誰が持てるか、とあわせて誰が付与ができるかについても知っておくと良いでしょう。権限を付与するという行為を誰もができるわけでなく一定の制限があるのですね。ルール策定時に意外にハマるポイントです。
今、App Manager を割り当てられた「役割」のユーザがいるとします。そのユーザが Apple Developer へのアクセス権つきで新たな Developer のユーザを招待したい場合、App Manager である自分自身が Apple Developer へのアクセス権を持っている必要があります。
自身が与えられていない権限は、自分が招待するユーザに付与できません。セキュリティの観点からも当然と言えば当然でしょう。Apple Developer へのアクセス権限を持っている人だけが、それを付与できます。つまり、
- Account Holder
- Admin
- 自身がアクセス権を持っている App Manager
の「役割」のユーザだけに可能です。これらに該当しないなら、Apple Developer へのアクセス権を誰かに付与するというオペレーションはできませんので注意して下さい。Developer や Marketing の「役割」のユーザが、別の誰かに Apple Developer へのアクセス権を付与することはできません。
Apple Developer へのアクセス権をどう与えるか、どう与えさせるかは、アプリ開発体制のあり方を大きく変えます。この扱いをおろそかにすると深刻なトラブルにも繋がりかねません。たとえば、委託先の開発会社の操作ミスが別アプリの開発をストップさせてしまうとか、開発会社側の誰かが悪意を持って機密情報を漏洩させることも可能になってしまう…等です。
自社のポリシーにあった適切な設定を熟慮することが求められます。
アプリのアクセス権と役割
ADPのユーザを招待するとき、そのユーザにどのアプリを見せるのかを決めることができます。これをアプリのアクセス権と呼びます。あるユーザにとって自身にアクセス権のないアプリは存在していないことになります。
アプリのアクセス権も「役割」と微妙に関係しており、以下のような違いがあります。
役割 | アプリのアクセス権 |
---|---|
Admin | 個別の設定不可。自動的に全アプリのアクセス権が付与される |
Finance | 個別の設定不可。自動的に全アプリのアクセス権が付与される |
上記以外 | 個別の設定が可能 |
数ある「役割」のうち Admin と Finace はアプリのアクセス権について特別な扱いを受けることに留意しましょう。もし委託先の開発会社に付与すると、委託していないアプリ以外も全部見えることになリます。
アプリごとに役割を変えることはできない
ADPのユーザは一者二役ができません。「役割」によって得られる権限が、そのユーザがアクセスできる全アプリに適用されます。
具体的な例で示します。あるエンドユーザ企業が、複数の業務用アプリを同じ開発会社の異なるチームに委託しているようなケース。大手企業なら普通にありますね。
開発会社Xに、アプリAとアプリBを委託しているとします。Aの開発責任者はaさん(下図の青色)、Bの開発責任者は別部門のbさん(下図の緑色)とします。そして、bさんはアプリAのテストを手伝っているとしましょう。
さて、エンドユーザ企業はADPのユーザとして開発会社を招待するとき、リーダー相当の人を AppManager に、それ以外の関係者は Developer にすると定めているとします(実は現実的でないルール)。その場合、下表のような「役割」の割り当てをイメージする筈です。
aさん | bさん | |
---|---|---|
アプリA | App Manager (リーダー) |
Developer (テスト担当) |
アプリB | – | App Manager (リーダー) |
アプリごとに「役割」を変えたくなるというわけですね。bさんはアプリAに参画するけどリーダーではないから Developer の権限までにしておきたい…という考えです。分からなくはありません。
ですが、残念ながらこの設定はできません。ユーザに割り当てられた「役割」は、そのユーザにアクセス権が与えられた全アプリに及びます。よってこの例では、アプリAへのアクセス権も付与されたbさんは、アプリA「も」 App Manager として操作できることになります。
「役割」とアプリはマトリックスを形成しないのです。「役割」はユーザに紐付き、ユーザにアクセス権が設定されたアプリは全てその「役割」が持つ権限で操作できます。
前述の「Admin はアプリのアクセス権の絞り込みができない」と併せて考えると、Admin のユーザとして委託先の開発会社を招待することの重大さが分かると思います。Admin を付与したが最後、その開発会社のユーザに現存する&今後開発する全てのアプリを Admin としての操作を許すことになるからです。
ABMのユーザや役割はADPに関係ない
ABM(Apple Business Manager)は、App Store アプリを法人として一括購入する窓口です。実は ABMにもユーザと「役割」という概念が存在しています。(ABMについてはこちらの投稿を参照)
同じ言葉が使われていますが、ABMとADPのそれぞれのユーザ・役割は全く関係がありません。間違え易いので注意しましょう。実際に、こんな質問をあるエンドユーザ企業から頂いたことがあります。
「開発会社の担当者をADPに招待したところ、ABMにもアクセスできるようにして欲しいと言われました。どうしたらいいですか?」
これは色んな意味で誤った理解です。
まず、ADPでABMのアクセス権を制御できるわけではありません。そしてABMはエンドユーザ企業が直接触るべきものであり、一アプリを開発委託したに過ぎない担当者に触らせてはならないものです。ABMの利用規約にも明記されています。
ABMのユーザは、管理対象AppleIDという特別なAppleIDで作られるもので、正規ユーザーにしか割り当ててはいけないことになっています。正規ユーザーとは原則 ABM 利用企業の従業員を指しており、アプリを委託する開発会社にアカウント発行すべきではありません。(ただ、エンドユーザ企業の端末管理やAppleID管理を含め全オペレーションを委託されているグループ子会社といった立場であればこの限りではありません。詳しくはABMの契約書の「1.定義」の「正規ユーザー」と「サービスプロバイダ」を参照)
ADPのユーザと役割はABMのユーザと役割とは全く別物です。ABMは触る人が限られているため全容を正しく理解している人が少なく、誤解し易いので注意して下さい。
以上、ADPの「役割」について前編と後編の2本立てで解説してきました。しかし正直なところ、「役割」はややこしいということをお示ししたに過ぎません。
悩ましいことにADPの「役割」は、自社内に開発部門があってアプリを内製する企業を前提にしているきらいがありますので、日本企業にあった「これ」というパターンはありません。
弊社より、業務委託が常という場合のベーシックな権限設計モデルをご提案することはありますが、基本的には公式の権限テーブルのページを読み解いて各社なりのADPユーザ招待ポリシーを定めることが大切です。