__CAPGO_KEEP_0__ キーを安全に保つ API キー ユーザーデータの保護とアプリストアの規則の遵守が、安全性は非常に重要です。 鍵を公開すると、データ漏洩、サービス乱用、またはアカウントの侵害につながる可能性があります。
主なポイント:
- codeに鍵を保存しないようにする: 環境変数または安全なファイルを使用します。
- プラットフォームツールを使用する: iOS KeychainとAndroidの EncryptedSharedPreferences.
- 鍵をAPIで暗号化する: AES-256暗号化を使用して追加のセキュリティ層を追加します。
- 安全なトランスポート: HTTPSを常に使用し、SSL証明書ピンニングを検討する
- __CAPGO_KEEP_0__の鍵を監視して回転する: 定期的に鍵を回転し、異常を検出するために使用状況を追跡する。
これらの実践を実施することで、AppleおよびGoogleのガイドラインに準拠し、ユーザーの保護を実現し、アプリを保護することができます。
APIの鍵の安全な保存方法
APIの鍵をソースコードのCodeから削除する
ソースコードのcodeにAPIの鍵を直接含めることは、デコンパイルまたはリポジトリの漏洩によって暴露される可能性があるため、避けるべきです。このため、以下のアプローチを検討してください。
- 環境変数を使用して ローカル開発用に 鍵を安全な構成ファイルに保存し
- バージョン管理から除外する バージョン管理から除外された安全な構成ファイルに鍵を保存することで、鍵の漏洩を防ぐことができます。 バージョン管理から除外された安全な構成ファイルに鍵を保存することで、鍵の漏洩を防ぐことができます。
- Rely on remote configuration services を使用してキーを管理します。
iOSの場合、 XCConfigファイル を使用して、コードベースから設定を分離してください。Androidの場合、キーを管理するには gradle.properties:
# Store in ~/.gradle/gradle.properties
API_KEY=your_key_here
# Reference in build.gradle
buildConfigField "String", "API_KEY", "\"${project.API_KEY}\""
Platform Security Tools
Take advantage of platform-specific tools to enhance security when storing API keys.
プラットフォーム固有のツールを使用して、__CAPGO_KEEP_0__ キーを保存する際のセキュリティを強化します。 iOSの場合、 Keychain Services
let query: [String: Any] = [
kSecClass as String: kSecClassGenericPassword,
kSecAttrAccount as String: "APIKey",
kSecValueData as String: apiKey.data(using: .utf8)!
]
let status = SecItemAdd(query as CFDictionary, nil)
を使用して安全に保存します: EncryptedSharedPreferences __CAPGO_KEEP_0__の安全なキー格納用:
val masterKey = MasterKey.Builder(context)
.setKeyScheme(MasterKey.KeyScheme.AES256_GCM)
.build()
val sharedPreferences = EncryptedSharedPreferences.create(
context,
"secret_shared_prefs",
masterKey,
EncryptedSharedPreferences.PrefKeyEncryptionScheme.AES256_SIV,
EncryptedSharedPreferences.PrefValueEncryptionScheme.AES256_GCM
)
環境を分離する
APIの開発、ステージング、および生産環境用に異なるキーを使用します。各環境には、
- 一意のキーローテーションスケジュール
- 使用状況の監視
- 厳格なアクセス制御
__CAPGO_KEEP_0__を環境固有のキーを 安全なCI/CD変数 設定ファイルではなく、自動ビルドプロセスをサポートするためにキーやキーを保護する
Advanced Mobile iOS Security – Runtime Attacks & API Key …
API Key Transport Security
API の鍵を安全に輸送することは、ユーザー データを保護し、アプリ ストアの要件を満たすために不可欠です。強力な輸送セキュリティ対策は、攻撃の阻止に役立ちます。たとえば、中間者攻撃や不正アクセスを防ぐことができます。
HTTPS の実装
API の通信をセキュアにするには、常に HTTP トラフィックを HTTPS にリダイレクトしてください。TLS 1.3 またはそれ以降を使用し、信頼できる証明機関から SSL 証明書を取得してください。
Node.js の Express アプリケーションにおける HTTPS の基本的な例: セキュリティの追加層として、証明書ピンニングを実装することを検討してください。 SSL 証明書ピンニング
const express = require('express');
const app = express();
// Redirect HTTP to HTTPS
app.use((req, res, next) => {
if (!req.secure) {
return res.redirect('https://' + req.headers.host + req.url);
}
next();
});
証明書ピンニングは、サーバーの SSL 証明書が信頼されたコピーと一致することを確認し、偽の証明書の使用を防止します。
iOS で、証明書ピンニングを実装するには
ここに例があります:
証明書ピンニングの例 URLSession証明書ピンニングの例
class APIManager: NSObject, URLSessionDelegate {
func urlSession(_ session: URLSession, didReceive challenge: URLAuthenticationChallenge, completionHandler: @escaping (URLSession.AuthChallengeDisposition, URLCredential?) -> Void) {
guard let serverTrust = challenge.protectionSpace.serverTrust,
let certificate = SecTrustGetCertificateAtIndex(serverTrust, 0) else {
completionHandler(.cancelAuthenticationChallenge, nil)
return
}
// Compare certificate with pinned certificate
if validateCertificate(certificate) {
completionHandler(.useCredential, URLCredential(trust: serverTrust))
} else {
completionHandler(.cancelAuthenticationChallenge, nil)
}
}
}
transportを保護するだけでなく、APIキーをアプリケーションレベルで暗号化することです。
APIキー暗号化
APIキーを暗号化すること は、さらにセキュリティの層を追加します。Capgo、例えば、は、更新プログラムのために端末間暗号化を使用しています。
「真の端末間暗号化を持つ唯一の解決策、他のものは更新プログラムに署名するだけ」 - Capgo [1]
APIキーを暗号化するには、信頼できる暗号化アルゴリズムを使用してください。以下に、Node.jsでAES-256-GCMを使用してAPIキーを暗号化する例を示します。
const crypto = require('crypto');
function encryptAPIKey(apiKey, encryptionKey) {
const iv = crypto.randomBytes(16);
const cipher = crypto.createCipheriv('aes-256-gcm', encryptionKey, iv);
let encrypted = cipher.update(apiKey, 'utf8', 'hex');
encrypted += cipher.final('hex');
return {
encrypted: encrypted,
iv: iv.toString('hex'),
tag: cipher.getAuthTag().toString('hex')
};
}
HTTPS、証明書固定、暗号化を組み合わせると、APIキーを保護するための強力な防御を確立します。
APIキー管理
APIキーを効果的に管理することは、使用状況を常に監視し、定期的に回転し、厳格なアクセス制御を実施することです。これらのステップは、敏感なデータを保護し、アプリストアの要件に準拠することを保証します。
使用状況の監視
APIキー使用状況を追跡することは、異常な活動を発見するために不可欠です。リアルタイムの分析を使用して、以下の内容を監視してください。
- リクエストのパターンとボリューム
- アクセス地理的位置
- __CAPGO_KEEP_0__
- __CAPGO_KEEP_0__
Node.jsの例
const apiMetrics = {
trackRequest: (apiKey, endpoint) => {
// Log request details
const requestData = {
timestamp: new Date().toISOString(),
endpoint,
apiKey: hashKey(apiKey),
geoLocation: getRequestLocation(),
responseTime: calculateResponseTime()
};
// Alert on suspicious patterns
if (isAnomalous(requestData)) {
notifySecurityTeam(requestData);
}
}
};
キー回転スケジュール
使用量を把握したら、キーを定期的に回転することを確認してください。自動回転プロセスは、App Storeの要件に準拠することができます。ここでは、回転戦略を紹介します。
- 緊急回転 侵入の疑いがある場合、キーを即時無効化します。
- 定期回転 定期的にプロダクションキーを更新します。
- 開発回転 テスト環境のキーを毎月更新します。
__CAPGO_KEEP_0__
const keyRotation = {
oldKey: process.env.OLD_API_KEY,
newKey: process.env.NEW_API_KEY,
transitionPeriod: 7 * 24 * 60 * 60 * 1000, // 7 days
startDate: new Date()
};
アクセス制御設定
監視とローテーションは、しかも全てではありません。厳格なアクセス制御を実施する必要があります。必要性に応じて権限を割り当て、最小限の特権原則に従ってください:
const accessControl = {
validateAccess: (apiKey, requestedOperation) => {
const keyPermissions = getKeyPermissions(apiKey);
const environmentType = getCurrentEnvironment();
return isOperationAllowed(keyPermissions, requestedOperation, environmentType);
}
};
アプリのアクセス権を定期的に確認し、必要に応じて権限を調整し、異常な活動に対して自動的な警告を設定してください。これらの措置は、強固なセキュリティを維持しながら、アプリストアの規則に準拠することができます。
Capgo セキュリティ機能

Capgoは、プラットフォームに組み込まれた高度な機能と、安全なストレージとトランスポート方法を組み合わせて、アプリのセキュリティを強化します。
Capgo セキュリティ アーキテクチャ
Capgoのシステムは、750のプロダクションアプリに23.5百万回以上の 安全な更新 を提供しています [1]. It uses end-to-end encryptionのセキュリティ設定についてはこちら
const capgoSecurity = {
encryptionType: 'end-to-end',
keyStorage: {
separate: true,
encrypted: true,
environment: process.env.NODE_ENV
},
updateVerification: async (update) => {
const isValid = await verifySignature(update);
const isAuthorized = await checkUserPermissions(update.userId);
return isValid && isAuthorized;
}
};
この設計は、API キーを保護するだけでなく、アプリストアの要件に準拠したコンプライアンスを簡素化します。
アプリストアガイドラインのコンプライアンス
Capgo は、82% のグローバル成功率を達成し、95% のアクティブユーザーが 24 時間以内に更新を受け取ることを保証します。 [1]潜在的な脆弱性を対処するための機能
- アプリストアポリシーに準拠した自動キーローテーション
- 特定の環境に合わせたデプロイメント制御
- 更新の管理にfine-grainedパーミッション
CI/CDセキュリティ統合
Capgo はCI/CDプラットフォームと組み合わせてAPI キー保護を強化します。ここではその統合の例を示します。
capgo_deployment:
environment:
- CAPGO_API_KEY: ${SECURED_API_KEY}
- APP_ENV: production
security:
- signature_verification: true
- key_rotation: enabled
- access_control: role_based
| セキュリティ機能 | 実装 |
|---|---|
| 鍵暗号化 | ビルドおよびデプロイ時におけるエンドツーヘンド暗号化 |
| アクセス制御 | デプロイトリガーのロールベースのパーミッション |
| 監査ログ | すべてのデプロイアクティビティの包括的なログ |
| バージョン管理 | デプロイされた更新の安全な追跡 |
「エンドツーヘンド暗号化。ユーザーのみがアップデートを復号化できます。誰もいません。」 [1] - Capgo
Summary
APIキーを安全に保管することは、アプリストアの要件を満たすこととユーザーデータを保護することの重要な側面です。ここでは、重要な実践と次のステップについて簡単に説明します。
Security Checklist
APIキーを保護するために重要なステップを、AppleとGoogleの標準に沿ったままにしながら表しています。
| Security Measure | 実装要件 | 規制への影響 |
|---|---|---|
| Storage Security | __CAPGO_KEEP_0__キーを安全に保管するために、エンドツーエンド暗号化と分離された環境を使用する必要があります。 | Apple/Googleのデータ保護規則に沿ったもの |
| Transport Layer | HTTPSを強制し、SSL証明書ピニングを使用する必要があります | データの送信中のセキュリティを確保します。 |
| アクセス制御 | __CAPGO_KEEP_0__ ロールベースのパーミッションを適用し、ログを追跡します。 アクセス ログ | 未承認のアクセスをブロックします。 |
| キー管理 | __CAPGO_KEEP_0__ キーを自動的にローテートし、環境固有のキーを使用します。 | 強力な、継続的なセキュリティを維持します。 |
API キーのセキュリティを確保するためのチェックリストの参考としてください。
次のステップ
-
現在の実装を検査する
既存のキー ストレージとトランスポート メソッドを脆弱性に焦点を当てて、特に暗号化とソース code の露出を検査します。
-
セキュリティ対策を実施する
リスクを軽減し、アプリストアの要件を満たすために、端末間の暗号化を適用する。
-
監視システムを確立する
自動警告を設定し、定期的な監査を実施して、継続的なセキュリティを確保する。
“App Store compliant” - Capgo [1]
Keep going from API Key Security for App Store Compliance
If you are using API Key Security for App Store Compliance to plan security and compliance, connect it with Encryption for the implementation detail in Encryption, Compliance Complianceの実装詳細について Capgo セキュリティ スキャナー Capgo セキュリティ スキャナーの製品ワークフローについて Capgo セキュリティ Capgo セキュリティの製品ワークフローについて Capgo トラスト センター Capgo トラスト センターの製品ワークフローについて