Yes, for multiple reasons. First, contracts aren't based on where he specifically rank among fellow CBs. A general range, yes, but not a specific rank. People get so tied up on that. "He's not the #1 CB in the league, so he shouldn't get #1 money." That's just not how it works. Next year, another CB will probably get paid more, and another after that. And I'm not convinced he'll earn #1 money. Probably top 5 salaries range, which is completely reasonable.
Second, you're not paying just to keep a good player. You're also paying to prevent yet another gaping hole in a team otherwise devoid of talent. Further, you're not paying some unknown FA to do it. You're paying a known commodity, unlike all the mid-round draft picks everybody overrates. And let's say you think he should be in the #10 range. Cool, a $2-$3 million dollar difference. Big whoop (relatively speaking).
And what about the message it sends to other players we draft? It's basically telling them they can **** off if they aren't the absolute best at their position or mediocre enough to come cheap.
Pay him.