
Redis Security
- 1.1k installs
- 94 repo stars
- Updated July 9, 2026
- redis/agent-skills
The redis-security skill covers production Redis hardening across authentication, ACL-based access control, and network exposure together because any single control leaves gaps.
About
The redis-security skill covers production Redis hardening across authentication, ACL-based access control, and network exposure together because any single control leaves gaps. It documents requirepass plus TLS port configuration, Python ssl client examples, per-application ACL users with command and key-pattern restrictions, bind and protected-mode guidance, firewall rules, and disabling dangerous commands. Use when deploying Redis to production, defining app credentials, configuring TLS, locking instances behind firewalls, or remediating internet-exposure scanner findings. References expand auth patterns and ACL recipes for read-only, writer, and admin roles.
- Covers auth, TLS, ACLs, bind, and firewall together.
- ACL users with least-privilege commands and key patterns.
- requirepass legacy path versus dedicated ACL users.
- Network exposure guidance for production deployments.
- Dangerous command restrictions for hardened instances.
Redis Security by the numbers
- 1,060 all-time installs (skills.sh)
- +120 installs in the week ending Aug 5, 2026 (Skillselion tracking)
- Ranked #379 of 2,203 Security skills by installs in the Skillselion catalog
- Data as of Aug 5, 2026 (Skillselion catalog sync)
redis-security capabilities & compatibility
- Capabilities
- covers auth, tls, acls, bind, and firewall toget · acl users with least privilege commands and key · requirepass legacy path versus dedicated acl use · network exposure guidance for production deploym
- Use cases
- security audit
npx skills add https://github.com/redis/agent-skills --skill redis-securityAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 1.1k |
|---|---|
| repo stars | ★ 94 |
| Last updated | July 9, 2026 |
| Repository | redis/agent-skills ↗ |
How do I apply redis-security using the workflow in its SKILL.md?
Harden production Redis with authentication, TLS, ACL least privilege, bind rules, and dangerous-command restrictions.
Who is it for?
Developers following the redis-security skill for the tasks it documents.
Skip if: Tasks outside the redis-security scope described in SKILL.md.
When should I use this skill?
User mentions redis-security or related triggers from the skill description.
What you get
Working redis-security setup aligned with the documented patterns and constraints.
- ACL user configuration
- TLS and auth settings
- Network bind and firewall rules
By the numbers
- Package version 1.0.0 in redis/agent-skills manifest
- MIT license from official Redis agent-skills repository
Files
Redis Security
Production hardening for Redis: authentication, ACL-based access control, and network exposure. Cover all three together — any one of them on its own leaves an exploitable gap.
When to apply
- Deploying or reviewing a Redis instance destined for production.
- Setting up application credentials beyond a shared password.
- Auditing a Redis deployment against a security checklist.
- Receiving "Redis exposed to the internet" findings from a scanner.
1. Always authenticate (and use TLS)
Never run a production Redis without a password. Pair authentication with TLS so credentials and data aren't sent in clear text.
# redis.conf
requirepass your-strong-password
tls-port 6380
tls-cert-file /path/to/redis.crt
tls-key-file /path/to/redis.keyr = redis.Redis(
host="localhost",
port=6380,
password="your-strong-password",
ssl=True,
ssl_cert_reqs="required",
)If you can use ACL users (next section) instead of the single requirepass, do — requirepass is effectively the legacy "default user" shortcut.
See references/auth.md.
2. ACLs for least-privilege access
The default user with a shared password is fine for development. For production, give each application a dedicated ACL user with only the commands and key patterns it actually needs.
# Cache-only reader
ACL SETUSER app_readonly on >password ~cache:* +get +mget +scan
# Writer that can't run dangerous ops
ACL SETUSER app_writer on >password ~* +@all -@dangerous
# Admin (use sparingly, never for application traffic)
ACL SETUSER admin on >strong-password ~* +@allUseful command categories:
| Category | What it covers |
|---|---|
@read | Read commands (GET, MGET, HGET, ...) |
@write | Write commands (SET, DEL, XADD, ...) |
@dangerous | FLUSHALL, DEBUG, KEYS, etc. |
@admin | Administrative commands |
If app credentials leak, a tight ACL bounds the blast radius — the attacker can't FLUSHALL your DB just because they grabbed a cache reader's password.
See references/acls.md.
3. Restrict network access
The most common Redis breach is a public-internet Redis with no auth. Avoid that with three layers:
# redis.conf — bind to specific interfaces, keep protected-mode on
bind 127.0.0.1 192.168.1.100
protected-mode yes# Firewall — allow only application subnets
iptables -A INPUT -p tcp --dport 6379 -s 192.168.1.0/24 -j ACCEPT
iptables -A INPUT -p tcp --dport 6379 -j DROPAnti-pattern: bind 0.0.0.0 + protected-mode no — exposes Redis to the whole network without protection.
Optional but recommended: rename or disable destructive commands so a compromised client can't trash the DB:
rename-command FLUSHALL ""
rename-command DEBUG ""
rename-command CONFIG ""See references/network.md.
References
{
"name": "redis-security",
"version": "1.0.0",
"description": "Redis security hardening — authentication and TLS, ACL-based least privilege, network bind, firewall, command renaming.",
"author": {
"name": "Redis",
"email": "support@redis.com"
},
"homepage": "https://redis.io",
"repository": "https://github.com/redis/agent-skills",
"license": "MIT",
"keywords": ["redis", "security", "acl", "auth", "tls", "hardening"]
}
Use ACLs for Fine-Grained Access Control
Create users with only the permissions they need (principle of least privilege).
Correct: Create specific users with limited permissions.
# Read-only user for cache access
ACL SETUSER app_readonly on >password ~cache:* +get +mget +scan
# Writer that can't run dangerous commands
ACL SETUSER app_writer on >password ~* +@all -@dangerous
# Admin user (use sparingly)
ACL SETUSER admin on >strong-password ~* +@allIncorrect: Using the default user for everything.
# Bad: Single password for all access
requirepass shared-passwordACL categories:
@read- Read commands@write- Write commands@dangerous- Commands like FLUSHALL, DEBUG@admin- Administrative commands
Reference: Redis ACL
Always Use Authentication in Production
Never run Redis without authentication in production environments.
Correct: Use password and TLS.
Python (redis-py):
r = redis.Redis(
host='localhost',
port=6379,
password='your-strong-password',
ssl=True,
ssl_cert_reqs='required'
)Java (Jedis):
import redis.clients.jedis.*;
import javax.net.ssl.*;
import java.security.KeyStore;
// Create SSL context with trust store and key store
KeyStore trustStore = KeyStore.getInstance("jks");
trustStore.load(new FileInputStream("./truststore.jks"), "password".toCharArray());
TrustManagerFactory tmf = TrustManagerFactory.getInstance("X509");
tmf.init(trustStore);
SSLContext sslContext = SSLContext.getInstance("TLS");
sslContext.init(null, tmf.getTrustManagers(), null);
JedisClientConfig config = DefaultJedisClientConfig.builder()
.ssl(true)
.sslSocketFactory(sslContext.getSocketFactory())
.user("redisUser")
.password("redisPassword")
.build();
JedisPooled jedis = new JedisPooled(new HostAndPort("redis-host", 6379), config);Incorrect: Connecting without authentication.
Python (redis-py):
# Bad: No authentication
r = redis.Redis(host='localhost', port=6379)Java (Jedis):
// Bad: No authentication or TLS
UnifiedJedis jedis = new UnifiedJedis("redis://localhost:6379");Configuration:
# redis.conf
requirepass your-strong-password
tls-port 6380
tls-cert-file /path/to/redis.crt
tls-key-file /path/to/redis.keyReference: Redis Security
Secure Network Access
Restrict network access to Redis to only trusted sources.
Correct: Bind to specific interfaces.
# redis.conf
bind 127.0.0.1 192.168.1.100
protected-mode yesCorrect: Use firewall rules.
# Allow only application servers
iptables -A INPUT -p tcp --dport 6379 -s 192.168.1.0/24 -j ACCEPT
iptables -A INPUT -p tcp --dport 6379 -j DROPIncorrect: Exposing Redis to the internet.
# Bad: Binds to all interfaces
bind 0.0.0.0
protected-mode noSecurity checklist:
- Use TLS for connections
- Bind to specific interfaces, not
0.0.0.0 - Use firewall rules to restrict access
- Disable dangerous commands in production
# Disable dangerous commands
rename-command FLUSHALL ""
rename-command DEBUG ""
rename-command CONFIG ""Reference: Redis Security
Related skills
How it compares
Use redis-security for official Redis ACL and TLS hardening steps; generic secrets-management skills apply when Redis is not the target system.
FAQ
What does redis-security do?
Harden production Redis with authentication, TLS, ACL least privilege, bind rules, and dangerous-command restrictions.
When should I use redis-security?
Invoke when Harden production Redis with authentication, TLS, ACL least privilege, bind rules, and dangerous-command restrictions.
Is redis-security safe to install?
Review the Security Audits panel on this page before installing in production.