項 1 / 9
目的と使う場面を知る
何ができるようになるか、何のために学ぶかを確認します。
今回できるようになること
7条件すべての問題がなくなり、必要な読み取りと書き込みは残る。
この節で学ぶ理由と、前後の節とのつながり
このセクションの位置づけ
なぜ、今これを学ぶのか
アプリが動くときの許可も、必要な仕事だけに絞ります。画像を読む仕事だからといって、会社の全データを削除する許可まで渡す必要はありません。
ここまでの知識をどう使うか
ここまでは、人が書類を読む場面でした。今回は、画像を変換するアプリが、どの保存場所を読み書きしてよいかを設定します。
この後、何につながるか
コードや設定を直した後は、記録を読みます。実際に何が起きたかを、記録を使って説明する練習へ進みます。
この実習で確かめること
入力画像は読めて、出力先へ結果を書けるが、不要な削除などはできない設定
実務では、どんな場面?
この節の本文で学んだことを、必要な読み取りと書き込みだけを設定に残す実習で確かめます。扱う情報は配布した架空データだけです。
読み始める前に:この節の前提と言葉
画像を変換する仕事に必要な読取り・書込みを残し、それ以外の権限を減らします。deployment_policy.jsonを編集し、端末内の検査で確かめます。実クラウドの設定は変更しません。
- ・resource
- はファイルなどの保存場所です。今回のresourcesはdemo-inputとdemo-outputという架空の場所を表す一覧です。
- read・write・delete
- それぞれ読む・書く・削除する操作です。読む権限が必要でも、同じ場所への書込みや削除まで必要とは限りません。
- ・
- は、必要な対象と操作に許可を絞る考え方。は利用者やサービスの識別情報とアクセス権を管理する仕組みの総称です。ここではクラウド固有の構文を使わない模型で学びます。
- ポリシー・allow
- ポリシーは許可などを記述した規則です。今回はactionsに必要な操作、resourcesに必要な保存場所を書きます。allowという名前のを編集する課題ではありません。
- ワイルドカード・*
- 広い範囲を表す記号。この模型ではresourceの*は全対象、actionsの*は全操作を意味します。狭い規則を追加しても、残った広い許可は消えません。
- 一般公開とサービスの権限
- 一般公開は外の利用者にも見せる範囲の話。サービス内部にどの操作を許すかとは別の判断です。非公開にしても、サービスの削除権限などが必要とは限りません。
- 継承・明示的拒否・合成
- 継承は上位の権限を引き継ぐこと、明示的拒否は拒否の指定、合成は複数の規則の組合せです。今回の教材専用の検査では実全体のこれらの機能を再現しません。
このアプリの仕事は、入力用の保存場所から画像を読むことと、出力用の保存場所へ変換結果を書くことです。どちらの場所も一般公開しません。
全データを削除すること、誰にでも見えるようにすること、別の保存場所を読むことは必要ありません。まず必要な仕事を書き出し、それに必要な操作だけを残します。
矢印の順に、何が行われるかを読みます。
- 入力の保存場所:画像を読む
- 画像を処理:アプリの仕事
- 出力の保存場所:変換結果を書く
全データの削除や一般公開は、今回の仕事には必要ありません。
図:データの流れと、必要な権限
入力ファイルを読むことと、結果を書き出すことを分けます。流れの中にない操作が必要かを問い直します。
この例の項目と手順を詳しく読む
- 入力領域 input
元の画像を読む。ここへの書込み・削除は今回の仕事には不要。
- 変換サービス
読み取った画像を処理する。全保存先への自由な操作は不要。
- 出力領域 output
変換結果を書く。一般公開は今回の要件にはない。
入力画像を読むために、会社の全ファイルを読める必要はありません。「入力用の場所を読む」「出力用の場所へ書く」のように、場所と操作を一組にします。
許可の一覧にない操作は禁止する考え方で、必要な組だけを追加します。このように必要な仕事に絞って許可することを、といいます。
並んだ項目を見比べ、違う点と同じ点を読み取ります。
- 入力用の場所:read:読むだけ
- 出力用の場所:write:書くため
会社全体への操作を許さず、今回の仕事に必要な組だけを許します。
今回のdeployment_policy.jsonではactionsが許す操作、resourcesが使う場所です。input:readは入力を読む、output:writeは出力を書く操作で、demo-inputとdemo-outputは架空の保存場所です。*は範囲が広すぎる指定です。
publicStorageは公開、runAsRootは強い管理権限での実行、mountDockerSocketはコンテナ管理機能の持込み、untrustedPullRequestReceivesSecretsは未確認コードへの秘密の受渡し、auditLogsは操作記録の有効化を表します。教材専用の設定形式で、実クラウドへそのまま適用するものではありません。
- 仕事に必要な操作と保存場所
- 設定名に対応させる
- 許可・公開・記録を点検
すべての操作や場所を許す*を残して、狭い許可を追加しても制限にはなりません。不要な広い指定を取り除き、必要な操作と場所だけを残します。
設定の検査は端末内で行い、実やクラウドの権限を変えません。実際のでは拒否、継承、別の規則との組合せ、実際に動くIDなども確認します。
- 広すぎる*の指定
- 必要な操作と場所へ狭める
- 正常な仕事も続けられるか
すべて禁止すると、画像を処理する仕事もできなくなります。入力を読めることと、出力へ書けることを確認してください。
同時に、不要な削除や一般公開ができないことも確かめます。止めた操作の数ではなく、今回の仕事に合う許可になっているかを見ます。
今回行うのは設定ファイルの検査です。実際のクラウドで読み書きを試した証拠とは分けます。実サービスへ適用するときは、実行するアカウントで正常操作と拒否する操作を別に確かめます。
- 入力の読取りを残す
- 結果の書込みを残す
- 不要な権限がないか検査
似た操作名でも、仕事が違えば権限も変わる
appendは既存記録の後ろへの追記、writeは書込みとして区別する模型です。読取りを許したから書換えも許す、必要なルールを加えたから広い許可が消える、とは考えません。入力を読む担当と出力を書く担当の役割を仕様から整理します。
- 仕事に必要な保存場所と、そこで行う操作を一組ずつ書き出します。
- 必要な許可を残し、古い広いルールや別操作を外す。
- 必要な操作の成功と、それ以外の拒否を両方確認する。
ここでは実務で条件が増えた場合の考え方も紹介しました。今回の実習で操作する範囲は、次の「自分のパソコンで確かめる」で確認します。追加の別課題を提出する必要はありません。
必要な読み取りと書き込みだけを設定に残す
本文の知識を、この実習でどう使うか
は、必要な仕事だけを許すことです。今回の設定は入力を読む・出力を書く権限と、公開範囲など七つの条件を表します。
- 画像処理に必要な操作
- 設定を絞る
- 七つの検査
結果が違ったときに考えること:すべて禁止すると画像処理も止まります。actionsは操作、resourcesは対象であり、二つを混同しないようにします。
7条件すべての問題がなくなり、必要な読み取りと書き込みは残る。
WindowsまたはMacの操作手順、準備に失敗したときの確認方法、実行コマンドは実習画面に用意しています。ページ下部の「準備から実習を始める」から進んでください。
この実習の架空データで確認した結果です。実際の利用者や本番システムの安全性を保証しません。