在 GAE 应用程序中更改 Cloud SQL block_encryption_mode

Changing Cloud SQL block_encryption_mode in a GAE app

我是 运行 标准环境中的 GAE 应用程序(因此,几乎无法控制)。它的后端 (MySQL) 使用 Cloud SQL。如何将数据库上的默认 block_encryption_mode 永久更改为 aes256?默认设置为 aes-128-ecb,这不能满足我们的需求。

我已经查看了 Cloud SQL 下的可用/可配置标志。 block_encryption_mode 不在列表中。我很惊讶,因为众所周知 128-ecb 很弱。有没有其他方法可以在 Django 应用程序中更改它?

由于 Cloud SQL 不支持 block_encryption_mode,因此需要为每个会话设置此设置(不幸的是,这将是对服务器的额外查询性能受到影响,但别无他法)。为此,请将其设置为 Django settings.py:

中数据库连接的 init_command 选项
DATABASES = {
    'default': {
        "ENGINE": 'django.db.backends.mysql',
        "NAME": DB_NAME,
        "USER": DB_USER,
        "PASSWORD": ...,
        "PORT": ...,
        "OPTIONS": {
            "init_command": "SET block_encryption_mode = 'aes-256-cbc'",
        },
    }
}

这与问题没有直接关系,但是将块加密模式更改为 AES256 需要使用初始化向量 (IV),每个加密内容都是唯一的(否则类似的加密文本可以作为提示一个黑客)。