2024.1.22
ADPのユーザに割り当てる役割の基礎(前編)
Apple Developer Program(ADP) にはユーザ管理の機構が備わっています。ユーザには「役割」という権限アセットを割り当てて、App Store Connect や Apple Developer 内でのできることやさせたくないことを制御します。
ただこの「役割」が、とてもわかりにくいのです。誰にどう割り当てるのか…あっちを立てればこっちが立たず…となりがちで、社内ルールを定めようとすると結構悩みます。開発を外部委託している場合は特にそうです。
結果、エイヤーッとできることが多い権限をむやみに与えてしまって、無意識にリスクを内在させた状態の運用をしてしまいがちだったりします。iOSアプリ開発では、ADPのユーザの「役割」を正しく理解して適切に設定することが大切です。
そこで、ADPにおける「役割」の基本を2回に分けて解説します。「役割」を検討する時に役立てて頂けると思います。以下、前編の目次です。
順に見ていきましょう。
役割の種類とコントロール範囲
ADPに招待するユーザには何らかの「役割」を割り当てる必要がありますが、Apple の公式マニュアルによれば「役割」には8種類あります。
多いですね。
このうちの1つ、一番上にある Account Holder はADPの契約主体であり、組織に1名しかおけず招待するユーザに割り当てるものではありません。従ってADPのユーザ招待時に考慮すべき「役割」は、実質7つとなります。
それぞれの「役割」で具体的に何ができるのかは、Apple の公式ドキュメントに明記されています。
横方向に並ぶのが「役割」です。縦方向には操作の項目が並びます。交わるところに黒丸チェックがあればその操作の権限を付与できて、なければ制限されます。例えば、「ユーザとアクセス」の閲覧の操作。これは全てに黒丸チェックがありますので、どんな「役割」を割り当てても可能になる操作だということです。
このように操作 x 役割のマトリックスを全て確認して、自社のセキュリティポリシーに合うよう適切な役割を選びます。
以上!
…なのですが、操作内容の項目がありすぎる上に何が何を意味するのかが分かりにくかったり、表の見方も初見ではよく分からなかったりするので、全体像を捉えるのは極めて困難です。
ここからは、公式ページの権限テーブルの読み解きの助けになる豆知識を紹介します。
権限を5つのグループで考える
公式ドキュメントの権限テーブルは、Apple Developer と App Store Connect で可能な操作群を大きく5グループに分けています。
まずは Apple Developer (Aとします)で1つ目、そして App Store Connect を下図のように4つに区分(B,C,D,Eとします)し、あわせて5グループとなります。
公式ドキュメントの権限テーブルで、A〜Eが以下のように対応します。
権限テーブルの区切りが Apple Developer サイトや App Store Connect のモジュール郡に対応すると覚えておくと良いでしょう。一応、表にまとめてみました。
区分 | 対象サイト・モジュール | 用途 | |
---|---|---|---|
A | Apple Developer | Apple Developer サイト | 証明書やProvisioningProfile、各種IDやKeyなど、アプリ開発に関する情報・ファイルを管理 |
B | 契約関係 | AppStore Connect サイト 契約/税金/口座情報 |
主に有償アプリに関する情報管理。業務用iOSアプリではほぼ無関係 |
C | ユーザ関係 | AppStore Connect サイト ユーザとアクセス |
ユーザを招待したり権限コントロールを行う |
D | アプリ関係 | AppStore Connect サイト マイアプリ |
申請するアプリの詳細情報を入力。TestFlightもここから |
E | レポート関係 | AppStore Connect サイト App Analytics / 売上とトレンド / 支払いと財務報告 |
ダウンロード数や課金アプリの販売統計の確認や分析。業務用iOSアプリではほぼ無関係 |
なお、業務用iOSアプリの世界では以下に掲げる役割と操作項目の権限は、ほぼほぼ無視の扱いで大丈夫です。これらは主に一般消費者向けの公開アプリや課金アプリで使うものだからです。
役割 | Finance Marketing Sales Customer Support |
---|---|
操作項目 | 契約関係(B) レポート関係(E) |
逆に言うと、業務用iOSアプリで意識すべきなのは、基本的に以下のみということになります。
役割 | Admin App Manager Developer |
---|---|
操作項目 | Apple Developer(A) ユーザ関係(C) アプリ関係(D) |
「役割」に関連することはただでさえ複雑ですから、余計なものは考慮対象から外すのがお勧めです。
権限を細かくコントロールすることはできない
実は、各操作の権限設定には余り融通がききません。上述のAグループ(Apple Developerサイト)での操作一覧を例にして解説します。下図はAグループの上から10件程の操作をピックアップしてみたものです。
権限テーブルに黒丸チェックと白丸チェックとがあり、両マークはそれぞれ以下を意味しています。
黒丸チェック | その操作は自動的に可能になる |
---|---|
白丸チェック | その操作は選択的に可能にできる |
1つ例を挙げて解説します。
赤枠で囲った「配布用証明書の作成と無効化」という操作は、招待するユーザの「役割」が Admin なら自動的に可能になります。黒丸チェックだからですね。一方「役割」を App Manager としたなら、許可することも禁止にすることもできます。この白丸チェックの場合の許可/禁止の決定は、ユーザを招待する時の以下ダイアログで、
赤枠で示したチェックボックスをONすることで行います。この設定で招待したユーザの場合、今着目している操作「配布用証明書の作成と無効化」が許可されます。が、注意しなければならないことがあります。
それは、赤枠で示す白丸チェックの行の操作が全て可能になるという点です。
最初は「配布用証明書の作成と無効化」という操作(上図の下から2行目)にのみ着目していた筈です。それをできるようにとチェックボックスをONにした結果、他の白丸チェックの操作も可能になってしまうのです。この3つだけではありません。Aグループには14個も白丸チェックがあり全部が可能になります。
また黒丸チェックは、自動的に操作権限を得ることを意味しています。一度その「役割」が割り当てられたら、縦方向に見て黒丸チェックのある操作が全て可能になります。
この種の権限テーブルでは各項目ごとで個別にON/OFFできそうなものですが、そうした細かな制御ができずザックリとしか指定できません。結果として、あっちを立てればこっちが立たず…になりがちなのです。
各項目の意味が分かりにくい上に個別にON/OFFできませんから、自社のADPに招待したユーザに一体何ができるようになっているのか、それが自社にどのような影響を及ぼすのかということが、捉えにくく且つコントロールしにくい構造になっています。
複数の役割を割り当てることができる
ADPのユーザには複数の「役割」を割り当てられることにも留意する必要があります。例えばあるユーザに App Manager と Customer Support の両方の役割を与えることができます。
更にややこしいことに、ある役割が別の役割も有効にする場合があります。例えば App Manager の「役割」を割り当てると自動的に Developer と Marketing の「役割」もONになります。
自動的に付与される役割には以下のようなものがあります。
役割 | 自動的に割り当てられる役割 |
---|---|
Admin | その他全部 |
App Manager | Developer, Marketing |
Finance | Sales |
自動的に付与された「役割」をOFFにすることはできませんので、あるユーザに App Manager の「役割」を割り当てたいけど Marketing の「役割」だけは与えたくない…といったことは実現不可です。どの「役割」がどの操作権限を持つのか、またどの「役割」が巻き込まれて付与されてしまうのかも考慮する必要があります。
以上、ADPのユーザに割り当てる「役割」や操作権限について解説しました。まだまだありますが、長くなってきましたので続きは後編で紹介したいと思います。