# op read और op run — डेवलपर्स के लिए 1Password और Secrets Hygiene

Source: https://www.geekswithgeeks.com/hi/secrets-hygiene/op-read-run

> `op read` से एक मान लाएँ और secrets को environment variables के रूप में डालकर command चलाएँ।

## आख़िरी क्षण में resolve

`op read` एक field print करता है। ऐप के लिए `op run` बेहतर है: यह environment variables में `op://` references खोजता है, सिर्फ़ उस process के लिए उन्हें असली मान से बदलता है, और output में उन्हें छिपा देता है। Disk पर कुछ नहीं लिखा जाता।

## .env जिसमें सिर्फ़ references हैं

यह `.env.1p` फ़ाइल commit करने के लिए सुरक्षित है क्योंकि इसमें कोई असली secret नहीं। ऐप शुरू करते समय `op run` मान भर देता है।

```bash
# .env.1p
DATABASE_URL=op://Dev/Postgres/url
STRIPE_KEY=op://Dev/Stripe/secret-key

# run the app with real values only in its environment
op run --env-file=.env.1p -- npm start

# read a single field
op read "op://Dev/Postgres/password"
```

## Secrets echo न करें

`echo $(op read ...)` और environment variables की logging से बचें। `op run` अपने जाने हुए मान छिपाता है, पर आपका अपना कोड उन्हें print कर सकता है, इसलिए पूरा environment कभी log न करें।

**Quiz:** `op run --env-file=.env.1p -- npm start` क्या करता है?

- [ ] .env.1p को GitHub पर upload करता है
- [x] op:// references resolve करके ऐप को असली मानों के साथ चलाता है
- [ ] Vault हटाता है
- [ ] सारे secrets terminal में print करता है

*Answer:* op:// references resolve करके ऐप को असली मानों के साथ चलाता है. मान सिर्फ़ child process के environment में, उसके चलने तक, रहते हैं।
