Korniza Strapi (me sa kuptoj unë) kërkon që fjalëkalimi i bazës së të dhënave të jepet në fillim. Zakonisht, fjalëkalimi specifikohet në skedarin database.js
, si kjo:
module.exports = ({ env }) => ({
defaultConnection: 'default',
connections: {
default: {
connector: 'bookshelf',
settings: {
client: 'postgres',
host: '/cloudsql/myDatabaseInstanceName',
database: 'databaseName',
username: 'databaseUsername',
password: 'databasePassword',
},
},
},
});
Kjo sigurisht nuk është shumë e sigurt, pasi skedari database.js
zakonisht angazhohet në repo.
Prandaj, disa njerëz injektojnë fjalëkalimin në skedarin database.js
, në vend të kësaj e ruajnë atë si një variabël mjedisi:
module.exports = ({ env }) => ({
defaultConnection: 'default',
connections: {
default: {
connector: 'bookshelf',
settings: {
client: 'postgres',
host: `/cloudsql/${env('INSTANCE_CONNECTION_NAME')}`,
database: env('DATABASE_NAME'),
username: env('DATABASE_USERNAME'),
password: env('DATABASE_PASSWORD'),
},
},
},
});
Megjithatë, kjo nuk është gjithashtu shumë e sigurt. Në shumë mjedise të kohës së ekzekutimit (përfshirë Google App Engine, të cilin po përdor) fjalëkalimet e mjedisit mund të shihen, në tekst të thjeshtë, nga çdo përdorues i projektit.
Në mënyrë ideale, do të doja të ruaja fjalëkalimin e bazës së të dhënave në një kasafortë sekrete (Unë jam duke përdorur Google Secret Manager) dhe në një farë mënyre të jap fjalëkalimin nga kasaforta në skedarin database.js
në fillim. Por nuk e kuptoj si ta zbatoj atë? A është madje e mundur të hyni në një kasafortë sekrete nga database.js
? Ose, si tjetër mund të injektoj fjalëkalimin tim të bazës së të dhënave në Strapi?
Faleminderit!