Contents Never store sensitive information (e.g., API keys) in plain text within the project. Fetch them at runtime from environment variables or external services such as SSM Parameter Store. Encrypted storage is acceptable, but do not bundle the decryption key in the project.
(機密情報(APIキーなど)をプロジェクト内にプレーンテキストで保存しない。実行時に環境変数やSSM Parameter Storeなどの外部サービスから取得する。暗号化ストレージは許容されるが、復号化キーをプロジェクトに含めてはいけない)
解説 APIキーやパスワードなどの機密情報をソースコードに直接記述することは、重大なセキュリティリスクです。コードリポジトリが漏洩した場合、即座に悪用される可能性があります。環境変数や外部の秘密管理サービスを使用することで、機密情報とコードを分離し、アクセス制御が可能になります。暗号化する場合も、復号化キーを同じリポジトリに含めては意味がありません。
具体例 // 悪い例
const APIKey = "sk_live_1234567890abcdef" // ハードコード
func callExternalAPI () {
client := NewAPIClient (APIKey )
client .Request ()
}
// 良い例
func callExternalAPI () {
apiKey := os .Getenv ("API_KEY" ) // 環境変数から取得
if apiKey == "" {
log .Fatal ("API_KEY not set" )
}
client := NewAPIClient (apiKey )
client .Request ()
}
// さらに良い例(AWS SSM使用)
func getAPIKey () (string , error ) {
sess := session .Must (session .NewSession ())
svc := ssm .New (sess )
param , err := svc .GetParameter (& ssm .GetParameterInput {
Name : aws .String ("/myapp/api_key" ),
WithDecryption : aws .Bool (true ),
})
if err != nil {
return "" , err
}
return * param .Parameter .Value , nil
}
参考リンク
ルール Never open repositories containing sensitive information in LLM-integrated editors
(機密情報を含むリポジトリをLLM統合エディタで開かない)
解説 LLMを統合したエディタは、開いたファイル内容がクラウドサービスへ送信される可能性があります。うっかり機密情報を外部に流してしまわないよう、機密情報を含むリポジトリはLLM統合エディタでは開かないようにします。
暗号化していれば別ですが、その場合は復号するための鍵がLLM統合エディタの手の届かないようにします。もちろん復号した後の平文のテキストがLLM統合エディタから開ける状態もNGです。
サンプルコード
MARPは、Markdownでプレゼンテーションスライドを作成できる便利なツールです。シンプルなテキストファイルから、美しいスライドを生成できます。
PowerPoint出力 以下のコマンドでMarkdownファイルをPowerPoint形式に変換できます。
docker run -v $(pwd):/home/marp/app/ marpteam/marp-cli marp.md --pptx
このコマンドは、現在のディレクトリにあるmarp.mdファイルを読み込み、同じディレクトリにPowerPointファイル(.pptx)を生成します。Dockerを使用することで、環境構築の手間なく簡単に変換できます。
マークダウンのサンプル
---
marp: true
theme: gaia # default
paginate: true
---
# タイトルスライド
## 副題などを書くこともできます
---
## アジェンダ
- トピック1
- トピック2
- トピック3
---
## トピック1
ここに詳細な説明を書きます。
- ポイント1
- ポイント2
---
## トピック2
画像の例:

---
## まとめ
- 要点の復習
- 今後のステップ
---
## ご清聴ありがとうございました 🙏
質問があればどうぞ!
画像と音声を動画に変換 GCPのText to Speech等を使って作成した音声と、スライド画像を合成して動画にすることもできます
自分は普段Windowsを使っていて、開発もWSL上のUbuntuを使っています。簡単にLinuxを使えてとても便利です。
が、初期状態ではWindowsのCドライブ全体が/mnt/cにマウントされています。手軽に使えはするものの、WSL上で外部から取得したツールやAIエージェントを利用する場合、この設定は考え物です。何かの拍子に機密重要を含むファイルにアクセスされたり破壊されたりするわけにいきません。
そこでWSLからは必要なディレクトリしか見られないよう制限をかけました。
※ディレクトリ名は仮の名前を使用しています。
リスクのあるツールには必要なディレクトリだけ見せる
設定 1. Linux(WSL)で設定 Linux側 で、/etc/wsl.confにautomountとinteropの項目を追加します。
~$ cat /etc/wsl.conf
[ automount]
enabled = false
[ interop]
appendWindowsPath = false
automountの項目だけでは下記のようなエラーが出たため、interopの項目を追加しています。
<3>WSL ( 346 - Relay) ERROR: UtilTranslatePathList:2878: Failed to translate C:\w indows\s ystem32
また、起動時に自動でマウントされるよう/etc/fstabに設定を追加します。
~$ cat /etc/fstab
# UNCONFIGURED FSTAB FOR BASE SYSTEM
C:/example/mydir /mnt/c/example/mydir drvfs metadata,notime,gid= 1000,uid= 1000,defaults 0 0
~$
2. WindowsからLinux(WSL)を再起動 Windows側 に戻ってWSLを再起動。
3. Linux(WSL)上で確認 下記のように、必要なディレクトリだけが見えているようになっていれば成功です。
権限は絞っておくと安心 以上、Linux(WSL)からアクセスできるWindowsのファイルを制限する方法をご紹介しました。
セキュリティは使い勝手とのトレードオフになりがちです。しかし、アクセス制限が適切に設定されていることで信頼性に若干の不安があるツールも利用しやすくなる、という側面もあります。あらかじめ保険をかけていれば、「このツール、絶対便利だけどちょっとセキュリティに不安が……」と感じる場面でも積極的にリスクを取っていけるわけです。
「攻めための守備」として、アクセス権限の制限は一つの解法になりえます。
参考 ChatGPTと下記ページを参考にしました。