dobesv
02-13-2009, 09:51 PM
I have a web application running in an off-site secure data center. It is online accounting software. I am primarily considering PCI compliance in order to process payments from customers, but at a later date our software may allow them to send transactions to their merchant account as well (so I may have to store credit card #'s for our clients).
This is a hosted solution running on a virtualized high-availability "grid" with each server running in its own VM where inbound communication is controlled by a hardware router/firewall and a software firewall with all the ports appropriately locked down. The databases are running on their own VM accessible only from the web servers or via SSH. We process a pretty small volume of transactions right now. The application could be restarted at any time if there is a hardware failure.
I do the software development and apply upgrades directly from my home office, and our IT managers access and monitor the grid from their home offices.
When I read through the PCI DSS or try to fill out the compliance wizard on hackerguardian.com I seem to get stuck on these issues (just to start):
1. There's a lot of talk about DMZs, but is the DMZ requirement relevant with an off-site hosting facility? Isn't the whole grid in a "DMZ" because it is off-site?
2. I recognize that the card #'s must be encrypted, but I get the feeling that if I reboot the server I'm expected to have myself and someone else pull a hex string out of a safe and enter it into the system before I'll be able to decrypt any cards, since I can't store the key anywhere accessible to the webserver. Is there a more convenient, high-availability, and cost-effective method that is acceptable for PCI DSS?
3. For audit logging, do I need to log when users log in, become root, etc.. or log every single command they run?
4. If I were able to store the decryption key somewhere accessible to the webserver, would I now have to disallow everyone (including IT) from accessing that machine as "root" because they may have the ability to decrypt passwords, or are the IT and software developers allowed to have decryption powers, just not "regular" employees accessing the application over the web?
It would be nice to see some examples somewhere of how people managed to comply with the spec - a story about how they managed keys, encryption, backup, and audit logging and an example information security policy for a SaaS website like mine would go a long way to helping me (and others like me) figure out how to get this implemented without become PCI DSS "lawyers" first.
This is a hosted solution running on a virtualized high-availability "grid" with each server running in its own VM where inbound communication is controlled by a hardware router/firewall and a software firewall with all the ports appropriately locked down. The databases are running on their own VM accessible only from the web servers or via SSH. We process a pretty small volume of transactions right now. The application could be restarted at any time if there is a hardware failure.
I do the software development and apply upgrades directly from my home office, and our IT managers access and monitor the grid from their home offices.
When I read through the PCI DSS or try to fill out the compliance wizard on hackerguardian.com I seem to get stuck on these issues (just to start):
1. There's a lot of talk about DMZs, but is the DMZ requirement relevant with an off-site hosting facility? Isn't the whole grid in a "DMZ" because it is off-site?
2. I recognize that the card #'s must be encrypted, but I get the feeling that if I reboot the server I'm expected to have myself and someone else pull a hex string out of a safe and enter it into the system before I'll be able to decrypt any cards, since I can't store the key anywhere accessible to the webserver. Is there a more convenient, high-availability, and cost-effective method that is acceptable for PCI DSS?
3. For audit logging, do I need to log when users log in, become root, etc.. or log every single command they run?
4. If I were able to store the decryption key somewhere accessible to the webserver, would I now have to disallow everyone (including IT) from accessing that machine as "root" because they may have the ability to decrypt passwords, or are the IT and software developers allowed to have decryption powers, just not "regular" employees accessing the application over the web?
It would be nice to see some examples somewhere of how people managed to comply with the spec - a story about how they managed keys, encryption, backup, and audit logging and an example information security policy for a SaaS website like mine would go a long way to helping me (and others like me) figure out how to get this implemented without become PCI DSS "lawyers" first.