このチャプターの目次
Denoはパーミッションシステムを提供しています。
ファイルシステムやネットワークアクセス、環境変数の参照などは、明示的に権限を与えない限り、デフォルトでは一切実行することができません。
そのため、ローカル環境での開発時は、以下のように--allow-all
(-A
)オプションを指定することが多いのではないでしょうか?
$ deno run -A cli.ts
もちろん、ローカル環境での開発時はこれでもよいと思います。
しかし、この方法では、Denoのセキュリティ機構を十分に活かすことができません。
そのため、CIや本番環境などでコードを実行する際は、必要な権限のみを指定することを推奨します。
$ deno run --allow-read --allow-write --allow-env cli.ts
さらに、--allow-read
や--allow-env
、及び--allow-net
などのオプションは許可リストを指定することができます。
例えば、--allow-write=dist
と指定すると、./dist
以外のファイル・ディレクトリへは一切書き込めなくなります。
この機能を活用して、さらにアクセス範囲を制限できるとベストです。
$ deno run --allow-read=. --allow-write=dist --allow-env=URL,TRACKING_ID cli.ts
こうすることにより、万が一依存モジュールに脆弱性などがあったとしても、セキュリティ上のリスクを大きく軽減することができます。
ただし、毎回コマンドラインからこのように指定するのは少し面倒ですよね。
そこで、次の章ではこの問題への解決策を紹介します。
ポイント
-
allow-read
や--allow-env
などのオプションは、許可リストを指定できます。 - 本番環境やCIなどでは、必要最小限の権限のみを与えるようにしましょう。